組織外のユーザーにプロジェクトレベルでオーナーを付与する際の注意点

記事タイトルとURLをコピーする

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 WorkspaceCloud 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