G-gen の藤岡です。当記事では、Google Cloud(旧称 GCP)で組織外のユーザーにプロジェクトレベルでオーナー(roles/owner)を付与する際の注意点について紹介します。
はじめに・前提知識
IAM と ID 管理
Google Cloud ではリソースへのアクセス制御に Identity and Access Management(略称 IAM もしくは Cloud IAM)を使います。 IAM によって、誰が、どのリソースに対して、どういう条件で、何をできるか、という「認可」を管理します。
IAM について詳しく知りたい方は、以下の記事をご参照ください。 blog.g-gen.co.jp
ここで、IAM の「誰が」にあたる部分が ID(アカウント)です。 Google Cloud の ID には、無償の Gmail アカウントや Google Workspace、 Cloud Identity が使えます。
組織外のユーザー
当記事で説明する「組織外のユーザー」とは、Google Workspace や Cloud Identity ドメインに関連付けられていないユーザーを指します。
例えば、Google Cloud を企業ドメイン(例:@g-gen.co.jp)で利用している場合は、fujioka@g-gen.co.jp ユーザーは「組織内のユーザー」と見なされ、個人の Gmail アカウント(例:user@gmail.com)や異なるドメインのアカウント(例:user@example.com)は「組織外のユーザー」と見なされます。
組織外のユーザーにプロジェクトレベルでオーナーを付与する際の注意点
プロジェクトレベルのみ
これ以降に記載する注意点が該当するのは プロジェクトレベルで組織外のユーザーにオーナーを付与する場合 のみです。
つまり、組織やフォルダレベルでオーナーを付与する場合は後述する制約はありません。
メール認証が必要
組織外のユーザーにプロジェクトレベルでオーナーを付与する場合、メール認証が必要です。
以下の招待メールが届きます。(件名:Join my project on Google Cloud
)
この招待メールの送信アドレスは noreply-cloud@google.com ですが、差出人はオーナーを付与したユーザー名です。
このように、メール認証が必要なため、組織で Gmail の利用が許可されていない場合、オーナーを付与されたユーザー側で承諾ができません。
コンソールからのみ付与可能
組織外のユーザーにプロジェクトレベルでオーナーを付与できるのは、コンソールからのみ です。gcloud CLI や Terraform から付与はできません。
以下のようなエラーとなります。
# プロジェクトレベルで付与 fujioka@cloudshell:~ (xxxx)$ gcloud projects add-iam-policy-binding <プロジェクト ID> --member='user:<組織外のユーザー>' --role='roles/owner' ERROR: Policy modification failed. For a binding with condition, run "gcloud alpha iam policies lint-condition" to identify issues in condition. ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: Request contains an invalid argument. - '@type': type.googleapis.com/google.cloudresourcemanager.v1.ProjectIamPolicyError member: user:<組織外のユーザー> role: roles/owner type: ORG_MUST_INVITE_EXTERNAL_OWNERS fujioka@cloudshell:~ (xxxx)$
前述の通り、組織やフォルダレベルでは付与が可能です。
# フォルダレベルで付与 fujioka@cloudshell:~ (xxxx)$ gcloud resource-manager folders add-iam-policy-binding <フォルダ ID> --member='user:<組織外のユーザー>' --role='roles/owner' ... bindings: - members: - user:<組織外のユーザー> role: roles/owner ... fujioka@cloudshell:~ (xxxx)$ # 組織レベルで付与 fujioka@cloudshell:~ (xxxx)$ gcloud organizations add-iam-policy-binding <組織 ID> --member='user:<組織外のユーザー>' --role='roles/owner' ... bindings: - members: - user:<組織外のユーザー> role: roles/owner ... fujioka@cloudshell:~ (xxxx)$
- 参考
藤岡 里美 (記事一覧)
クラウドソリューション部
数年前までチキン売ったりドレスショップで働いてました!2022年9月 G-gen にジョイン。ハイキューの映画を4回は見に行きたい。
Google Cloud All Certifications Engineer / Google Cloud Partner Top Engineer 2024
Follow @fujioka57621469