ドメイン別の ID の制限

Resource Manager は、ドメインまたは組織リソースに基づいてリソース共有を制限するために、組織のポリシーで使用できるドメイン制限の制約を提供します。この制約により、Identity and Access Management ポリシーで使用できる 一連の ID を制限できます。

組織のポリシーではこの制約を使用して、リソース共有を特定の組織リソースに属する ID に制限できます。また、1 つ以上のドメインのセットを指定し、例外をフォルダ単位またはプロジェクト単位で許可することもできます。例外の追加について詳しくは、プロジェクトの組織のポリシーをオーバーライドするをご覧ください。

ドメイン制限の制約は遡って適用されることはありません。ドメイン制限が設定されると、この制限はその時点より後の IAM ポリシーの変更に適用され、過去の変更には適用されません。ドメイン制限の制約は、サービス エージェントが別のアクションに応じて行う変更など、すべての IAM ポリシーの変更に適用されます。たとえば、BigQuery データセットをインポートする自動サービスがある場合、BigQuery サービス エージェントは新しく作成されたデータセットに対して IAM ポリシーを変更します。このアクションは、ドメイン制限の制約によって制限され、ブロックされます。

たとえば、「examplepetstore.com」と「altostrat.com」の 2 つの関連組織について考えてみましょう。examplepetstore.com の ID に、altostrat.com の IAM ロールを付与しました。その後、ドメインによって ID を制限し、ドメイン制限の制約を使用して組織のポリシーを実装することにしました。この場合、既存の examplepetstore.com ID は、altostrat.com でアクセスできなくなることはありません。それ以降は、altostrat.com ドメインの ID にのみ IAM ロールを付与できます。

ドメイン制限の制約は、iam.allowedPolicyMemberDomains リスト型制約に基づきます。

この制約が Google Cloud 組織リソースに設定されている場合、その組織リソースを親とするすべての ID に影響します。この制約が Google Workspace ドメインで設定されている場合、そのドメインにあるすべての ID に影響します。これには、Google Workspace コンソールで管理され、Google Cloud コンソールからは管理されないユーザー アカウントが含まれます。

組織ポリシーの設定

ドメイン制限の制約は、リスト型制約の一種です。Google Workspace のお客様 ID と Google Cloud 組織リソース ID を、ドメイン制限の制約の allowed_values リストに追加または削除できます。ドメイン制限の制約は値の拒否をサポートしていません。また、denied_values リスト内の ID を使用して組織のポリシーを保存することはできません。

allowed_values に一覧表示されている Google Workspace アカウントまたは組織リソースに関連付けられているすべてのドメインは、組織のポリシーで許可されます。他のすべてのドメインは、組織のポリシーによって拒否されます。

サポートされているリソースのリストに含まれるリソースに条件付きでドメイン制限の制約を適用する組織のポリシーを作成できます。たとえば、Cloud Storage バケット、BigQuery データセット、Compute Engine VM などです。

この制約を設定するには、組織のポリシーを変更する権限が必要です。たとえば、orgpolicy.policyAdmin ロールには組織のポリシーの制約を設定する権限があります。resourcemanager.organizationAdmin ロールには、組織のポリシーの管理者としてユーザーを追加する権限があります。組織レベルでポリシーを管理する方法の詳細については、制約の使用ページをご覧ください。

コンソール

ドメイン制限の制約を含む組織のポリシーを設定する手順は、次の通りです。

  1. Google Cloud コンソールで、[組織のポリシー] ページに移動します。

    [組織のポリシー] に移動

  2. プロジェクト選択ツールから、組織のポリシーを設定するリソースを選択します。

  3. [組織のポリシー] ページで、制約のリストから [ドメイン制限付き共有] を選択します。

  4. [ポリシーの詳細] ページで、[ポリシーを管理する] をクリックします。

  5. [適用対象] で、[親のポリシーをオーバーライドする] を選択します。

  6. [ルールの追加] をクリックします。

  7. [ポリシーの値] で [カスタム] を選択します。注: ドメイン制限の制約は [拒否] 値をサポートしていません。

  8. [ポリシーの種類] で [許可] を選択します。注: ドメイン制限の制約は [拒否] 値をサポートしていません。

  9. [カスタム値] に、組織リソース ID または Google Workspace お客様 ID を入力します。

  10. 複数の ID を追加する場合は、[新しいポリシーの値] をクリックして、追加のフィールドを作成します。

  11. [完了] をクリックします。

  12. 必要に応じて、ドメイン制限の制約をタグに条件付きで適用するには、[条件を追加] をクリックします。

    1. [タイトル] フィールドに、条件の名前を入力します。

    2. [説明] フィールドに、条件の説明を入力します。この説明では、必須タグとそれらがリソースに及ぼす影響について説明します。

    3. 条件作成ツールを使用して、制約を有効にするために特定のタグを必要とする条件を作成できます。

      1. [条件ビルダー] タブの [条件タイプ] プルダウン メニューで、[タグ] を選択します。

      2. 条件の演算子を選択します。タグ全体と一致するには、matches 演算子を使用します。タグキーとタグ値を照合するには、matches ID 演算子を使用します。

      3. matches 演算子を選択した場合は、タグの名前空間名の値を入力します。matches ID 演算子を選択した場合は、キーと値の ID を入力します。

      4. [追加] をクリックすると、複数の条件を作成できます。別の条件を追加する場合は、[And] を切り替えることで、すべての条件を満たすように条件ロジックを設定できます。[Or] を切り替えることで、条件のいずれか 1 つだけが正になるように条件ロジックを設定できます。

      5. 式を削除するには、条件フィールドの右側にある大きな [X] をクリックします。

      6. 条件の編集が完了したら、[保存] をクリックします。

  13. ポリシーを適用するには、[ポリシーを設定] をクリックします。

gcloud

ポリシーは Google Cloud CLI を使用して設定できます。ドメイン制限の制約を含むポリシーを作成するには、次のコマンドを実行します。

ドメイン制限の制約を含む組織のポリシーを設定するには、次のコマンドを実行します。

gcloud org-policies set-policy POLICY_PATH

ここで、POLICY_PATH は、組織のポリシー JSON ファイルへのフルパスです。出力は次のようになります。

name: organizations/ORGANIZATION_ID/policies/iam.allowedPolicyMemberDomains
spec:
  rules:
  - condition: # This condition applies to the values block.
      expression: "resource.matchTag('ORGANIZATION_ID/environment', 'dev')"
    values:
      allowedValues:
      - PRINCIPAL_SET
  - values:
      allowedValues:
      - PRINCIPAL_SET

以下を置き換えます。

  • ORGANIZATION_ID は、このポリシーを設定する組織リソースの ID に置き換えます。
  • PRINCIPAL_SET は、組織リソース ID など、許可する Cloud Identity プリンシパル ID に置き換えます。例: is:principalSet://iam.googleapis.com/organizations/01234567890123

    許可する他のすべての ID には、Google Workspace お客様 ID を使用する必要があります。例: is:C03g5e3bc

この組織のポリシーが適用されると、allowed_values のリストから組織リソース ID または Google Workspace ドメインに属している ID のみが IAM ポリシーで許可されます。Google Workspace の人間のユーザーとグループは、その組織リソースまたはその Google Workspace ドメインに属している必要があり、IAM サービス アカウントは、指定された Google Workspace ドメインに関連付けられた組織リソースの子でなければなりません。

たとえば、企業の Google Workspace のお客様 ID のみを使用して組織のポリシーを作成した場合、その時点からそのドメインのプリンシパルだけを IAM ポリシーに追加できます。

組織のポリシーで制約を使用する方法については、制約の使用をご覧ください。

エラー メッセージの例

allowed_values リストに含まれていないプリンシパルを追加しようとしてドメイン制限の組織のポリシー制約に違反すると、操作は失敗し、エラー メッセージが表示されます。

コンソール

Console のスクリーンショット

gcloud

ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION:
One or more users named in the policy do not belong to a permitted customer.

組織リソース ID の取得

組織リソース ID は、Google Cloud コンソール、gcloud CLI、Cloud Resource Manager API のいずれかを使用して取得できます。

Console

Google Cloud コンソールを使用して組織リソース ID を取得するには、次の手順に従います。

  1. Google Cloud コンソールに移動します。

    Google Cloud コンソールに移動

  2. ページの上部にあるプロジェクト選択ツールから、組織リソースを選択します。
  3. 右側にある [詳細] をクリックし、[設定] をクリックします。

[設定] ページに、組織リソース ID が表示されます。

gcloud

組織リソース ID を調べるには、次のコマンドを実行します。

gcloud organizations list

このコマンドによって、所属するすべての組織リソースと、対応する組織リソース ID を一覧表示します。

API

Cloud Resource Manager API を使用して組織リソース ID を確認するには、organizations.search() メソッド(ドメインのクエリを含む)を使用します。例:

GET https://cloudresourcemanager.googleapis.com/v3/organizations:search{query=domain:altostrat.com}

レスポンスには、組織リソース ID を含む、altostrat.com に属する組織リソースのメタデータが含まれます。

組織リソース ID を取得したら、それに属するプリンシパルのセットに正しい ID を使用する必要があります。例:

principalSet://iam.googleapis.com/organizations/01234567890123

IAM プリンシパル ID の詳細については、プリンシパル ID をご覧ください。

Google Workspace お客様 ID の取得

ドメイン制限の制約によって使用される Google Workspace お客様 ID は、次の 2 つの方法で取得できます。

gcloud

gcloud organizations list コマンドを使用すると、このユーザーが resourcemanager.organizations.get 権限を持つすべての組織を表示できます。

gcloud organizations list

このコマンドは、DISPLAY_NAMEID(組織 ID)、DIRECTORY_CUSTOMER_ID を返します。Google Workspace お客様 ID は DIRECTORY_CUSTOMER_ID です。

API

Google Workspace お客様 ID は、Google Workspace ディレクトリ API を使用して取得できます。

Google Workspace 管理者としてログインした状態で、Customers: get API メソッドのドキュメントにアクセスでき、そこで [EXECUTE] をクリックします。承認後、お客様 ID を含むレスポンスが返されます。

あるいは、次のように API クライアントを使用することもできます。

  1. https://www.googleapis.com/auth/admin.directory.customer.readonly スコープの OAuth アクセス トークンを取得します。
  2. Google Workspace ディレクトリ API のクエリを実行するには、次のコマンドを実行します。

    curl -# -X GET "https://www.googleapis.com/admin/directory/v1/customers/customerKey" \
    -H "Authorization: Bearer $access_token" -H "Content-Type: application/json"
    

このコマンドは、お客様情報を含む JSON レスポンスを返します。Google Workspace お客様 ID は id です。

サブドメインの制限

ドメイン制限の制約で Google Cloud 組織リソースを許可すると、その組織リソースに関連付けられているすべてのリソースへのアクセスが許可され、他のすべてのリソースへのアクセスがブロックされます。

ドメイン制限の制約で Google Workspace お客様 ID を許可すると、その Google Workspace お客様 ID に関連付けられているすべてのドメインへのアクセスが制限され、他のすべてのドメインへのアクセスがブロックされます。それぞれの Google Workspace アカウントに、正確に 1 つのプライマリ ドメインと 0 個以上のセカンダリ ドメインが割り当てられます。Google Workspace お客様 ID に関連付けられたすべてのドメインが制約の対象になります。

リソースにドメイン制限の制約を適用すると、そのリソースおよびリソース階層内のその子孫にアクセスできる、プライマリ ドメインとすべてのセカンダリ ドメインが制御されます。

一般的な Google Workspace ドメインとサブドメインの組み合わせの例については、下のテーブルをご覧ください。

プライマリ ドメイン サブドメイン ドメイン制限の制約 user@sub.altostrat.com が許可されるかどうか
altostrat.com なし 許可: altostrat.com いいえ
altostrat.com sub.altostrat.com 許可: altostrat.com はい
altostrat.com sub.altostrat.com 許可: sub.altostrat.com はい
sub.altostrat.com altostrat.com 許可: sub.altostrat.com はい
sub.altostrat.com なし 許可: sub.altostrat.com はい

2 つのドメイン間のドメイン制限制約アクセスを区別するには、各ドメインを別々の Google Workspace アカウントに関連付ける必要があります。各 Google Workspace アカウントは組織ノードに関連付けられ、独自の組織のポリシーをそれに適用できます。こうして altostrat.com を 1 つの Google Workspace アカウントに関連付け、sub.altostrat.com を別の G Suite アカウントに関連付けることで、よりきめ細かなアクセス制御を行うことができます。詳細については、複数の組織の管理をご覧ください。

既知の問題のトラブルシューティング

組織のポリシーは遡って適用されることはありません。適用される制約に違反するようにリソース階層を強制的に変更する必要がある場合は、組織のポリシーを無効にして変更を加えたのち、再度有効にします。

次のセクションでは、この制約が適用されたときに発生する可能性のある、サービスの既知の問題について説明します。

Google アナリティクス 360 と BigQuery のリンク

ドメイン制限が適用されている BigQuery に Google アナリティクス 360 をリンクしようとすると、analytics-processing-dev@system.gserviceaccount.com サービス アカウントが Editor プロジェクト レベルとして直接または Google グループを使用してすでに追加されている場合でも、アクションは失敗し、One or more users named in the policy do not belong to a permitted customer エラー メッセージが表示されます。

Google アナリティクス 360 と BigQuery をリンクする手順は次のとおりです。

  1. ドメイン制限の制約を含む組織のポリシーを無効にします。

  2. Google アナリティクス 360 でリンクプロセスを行います。

  3. ドメイン制限の制約を再度適用します。

一般公開データの共有

BigQuery、Cloud Functions、Cloud Run 機能、Cloud Storage、Pub/Sub などの一部の Google Cloud プロダクトでは、一般公開データの共有がサポートされています。ドメインで制限された共有制約を組織のポリシーで適用すると、一般公開データの共有を防止できます。

データを公開して共有するには、共有するデータが存在するプロジェクト リソースで、ドメインで制限された共有制約を一時的に無効にしてください。リソースを公開して共有した後、ドメインで制限された共有制約を再度有効にできます。

請求先アカウントの BigQuery ログシンク

請求先アカウントに対して BigQuery ログシンクで使用されるサービスアカウント(形式: b*@*.iam.gserviceaccount.com)は外部として扱われ、組織のポリシーでドメインで制限された共有制約によってブロックされます。 ドメイン制限の制約が適用されているプロジェクトの BigQuery データセットに対するロールをこのサービス アカウントに付与するには:

  1. ドメイン制限の制約を含む組織のポリシーを無効にします。

  2. シンク作成プロセスで指定された BigQuery ロールを、対応するサービス アカウント(形式: b*@*.iam.gserviceaccount.com)に付与します。

  3. ドメイン制限の制約を再度適用します。

Cloud Billing のエクスポート サービス アカウント

この制約を有効にしてバケットへの請求のエクスポートを有効にすると、おそらく失敗します。請求のエクスポートに使用するバケットに対して、この制約を使用しないでください。

Cloud Billing エクスポート サービス アカウントのメールアドレスは 509219875288-kscf0cheafmf4f6tp1auij5me8qakbin@developer.gserviceaccount.com です。

ストレージ アクセス ロギングを有効にする

ドメイン制限の制約が有効になっている場合、組織のポリシーで明示的に許可されていないドメインはすべてブロックされます。Google サービス アカウントへのアクセスも許可されません。ドメイン制限の制約が適用されている Cloud Storage バケットにストレージ アクセス ロギングを設定する手順は、次のとおりです。

  1. ドメイン制限の制約を含む組織のポリシーを無効にします。

  2. そのバケットへの cloud-storage-analytics@google.com WRITE アクセス権を付与します。

  3. ドメイン制限の制約を再度適用します。

サービス エージェントのロールを付与する

サービス エージェントのロールは、サービス アカウントにのみ付与されます。このタイプのロールを付与する必要がある場合は、次のようにします。

  1. ドメイン制限の制約を含む組織のポリシーを無効にします。

  2. サービス エージェントにロールを付与します。

  3. ドメイン制限の制約を再度適用します。

Firebase API を有効にする

ドメイン制限の制約が有効になっている場合、組織のポリシーで許可されていないサービス アカウントはブロックされます。このため、API を有効にするときに外部サービス アカウントを必要とする Firebase API を有効にできません。API が有効になると、Firebase API の機能に支障をきたすことなく、ドメイン制限の制約を安全に適用できます。Firebase API を有効にするには:

  1. ドメイン制限の制約を含む組織のポリシーを無効にします。

  2. Firebase Management API を有効にします。

  3. ドメイン制限の制約を再度適用します。

Google グループ

組織でドメイン制限の制約が適用されている場合、グループが許可されたドメインに属していても、新しく作成された Google グループにロールを付与できないことがあります。これは、グループが Google Cloud に完全に反映されるまでに最大で 24 時間かかる可能性があるためです。新しく作成した Google グループにロールを付与できない場合は、24 時間待ってからもう一度お試しください。

また、グループが許可されたドメインに属しているかどうかを評価する際、IAM はグループのドメインのみを評価します。グループのメンバーのドメインは評価されません。そのため、プロジェクト管理者は、外部メンバーを Google グループに追加し、その Google グループにロールを付与することで、ドメイン制限の制約を回避できます。

プロジェクト管理者がドメイン制限の制約を回避できないようにするために、Google Workspace 管理者は、グループ オーナーが Google Workspace 管理者パネルでドメイン外のメンバーを許可できないようにする必要があります。

アカウントへのアクセスの強制

ドメイン制限に違反してプロジェクトに対してアカウントへのアクセスを強制する必要がある場合:

  1. ドメイン制限の制約を含む組織のポリシーを削除します。

  2. プロジェクトに対してアカウントへのアクセスを許可します。

  3. ドメイン制限の制約を含む組織のポリシーを再度実装します。

または、関連するサービス アカウントを含む Google グループにアクセスを許可することもできます。

  1. 許可されたドメイン内に Google グループを作成します。

  2. そのグループに対するドメイン制限をオフにするには、Google Workspace 管理者パネルを使用します。

  3. グループにサービス アカウントを追加します。

  4. IAM ポリシーで Google グループにアクセスを許可します。

Google Chat アプリのエンドポイントとして Pub/Sub を使用する

Google Chat API サービス アカウントにトピックの公開権限を付与しようとする場合、制限付きドメイン共有の制約が有効になっているとブロックされることがあります。手順に沿ってアカウントへのアクセスを強制します。