🤖
[GCP] 絶対に JSON キーで実装する男 [Google Cloud Platform]
まえがき
昨今Google Cloud Platform(GCP)はjsonやP12でサービスキーを新規で生成してくれません。それはセキュリティ上正しいので、今後はサーバに鍵を置かないカタチにしていきたいです。
しかし、たまたまGCPのPJTを変更したときとか、json管理が曖昧で洗い替えしたい時とか、さすがに、あちこちのコードを直す手間とか検証は無理というときがありますね?
オーナーでもダメ。組織管理者でもダメ。
GCPのコンソールでロールをさがしても見つかりません。そうなんです、余程のことをしないと、もはや許可してくれません。
gcloudで制限を解除する手順
- ログイン確認
- プロジェクト設定
- 組織IDの確認
- ポリシー一覧
- Policy Adminロール追加
- 削除実行
gcloudコマンドで、組織管理者が、アカウントを許可する
まずは、ログインを確認します。
PS C:\Users\_____> gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* dokokade@desu.yo
ironna@gmail.toka.ne
To set the active account, run:
$ gcloud config set account `ACCOUNT`
なければログインします。
PS C:\Users\_____> gcloud auth login konnkaino@meateno.aka.unto
Your browser has been opened to visit:
https://accounts.google.com/o/oauth2/auth?respo...
You are now logged in as [konnkaino@meateno.aka.unto].
Your current project is [nanikano_pjt]. You can change this setting by running:
$ gcloud config set project PROJECT_ID
今一度gcloud auth list
なんかで確認しちゃったりして
今の設定を確認します。
PS C:\Users\_____> gcloud config list
[accessibility]
screen_reader = False
[compute]
region = asia-northeast1
zone = asia-northeast1-b
[core]
account = konnkaino@meateno.aka.unto
disable_usage_reporting = True
project = nanikano_pjt
Your active configuration is: [default]
プロジェクトを変えます。
PS C:\Users\_____> gcloud config set project kottino_pjt
Updated property [core/project].
確認します。
PS C:\Users\_____> gcloud config list
[accessibility]
screen_reader = False
[compute]
region = asia-northeast1
zone = asia-northeast1-b
[core]
account = konnkaino@meateno.aka.unto
disable_usage_reporting = True
project = kottino_pjt
Your active configuration is: [default]
自分のところの組織IDを確認します。
PS C:\Users\_____> gcloud organizations list
DISPLAY_NAME ID DIRECTORY_CUSTOMER_ID
meateno.so.siki 13*********9 C0******b
目当ての組織IDで、ポリシーを確認します。
PS C:\Users\_____> gcloud resource-manager org-policies list --organization=13*********9
CONSTRAINT LIST_POLICY BOOLEAN_POLICY ETAG
constraints/compute.setNewProjectDefaultToZonalDNSOnly - SET C**************B
constraints/essentialcontacts.allowedContactDomains SET - C**************B
constraints/iam.allowedPolicyMemberDomains SET - C**************B
constraints/iam.disableServiceAccountKeyUpload - SET C**************B
constraints/iam.disableServiceAccountKeyCreation - SET C**************B
constraints/iam.automaticIamGrantsForDefaultServiceAccounts - SET C**************B
constraints/storage.uniformBucketLevelAccess - SET C**************B
constraints/compute.restrictProtocolForwardingCreationForTypes SET - C**************B
PS C:\Users\_____> gcloud org-policies delete constraints/iam.disableServiceAccountKeyCreation \
ERROR: (gcloud.org-policies.delete) unrecognized arguments: \
To search the help text of gcloud commands, run:
gcloud help -- SEARCH_TERMS
このような感じで、ポリシーの設定が分かります。
disableServiceAccountKeyCreation
が、今回のサービスキーを作ってくれないソレです。
で、ここで自分の組織アカウントに、 ポリシー管理者 を追加します。
PS C:\Users\_____> gcloud organizations add-iam-policy-binding 13*********9 --member="user:konnkaino@meateno.aka.unto" --role="roles/orgpolicy.policyAdmin"
Updated IAM policy for organization [13*********9].
bindings:
- members:
- domain:meateno.so.siki
role: roles/billing.creator
- members:
- user:konnkaino@meateno.aka.unto
role: roles/orgpolicy.policyAdmin
- members:
- user:konnkaino@meateno.aka.unto
role: roles/resourcemanager.organizationAdmin
- members:
- domain:kingdom.co.jp
role: roles/resourcemanager.projectCreator
etag: Bw******s=
version: 1
追加されたので、ポリシーを変更できます。
PS C:\Users\_____> gcloud org-policies delete constraints/iam.disableServiceAccountKeyCreation --organization=13*********9
Deleted policy [organizations/13*********9/policies/iam.disableServiceAccountKeyCreation].
{}
長旅でした。おつかれしたー
Discussion