ドメイン別の ID の制限

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

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

ドメイン制限の制約は遡って適用されることはありません。ドメイン制限が設定されると、この制限はその時点より後の 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 Workspace ドメインで設定されている場合、そのドメインにあるすべての ID に影響します。これには、Google Workspace コンソールで管理され、Google Cloud Console からは管理されないユーザー アカウントが含まれます。

組織ポリシーの設定

ドメイン制限の制約は、リスト型制約の一種です。Google Workspace のお客様 ID を、ドメイン制限の制約の allowed_values リストに追加または削除できます。この Google Workspace アカウントに関連付けられたすべてのドメインが、組織のポリシーの影響を受けます。

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

Console

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

  1. Cloud Console の [組織のポリシー] ページに移動します。
    [組織のポリシー] ページに移動
  2. [選択] をクリックします。
  3. ポリシーを設定する組織を選択します。
  4. [ドメインで制限された共有] をクリックします。
  5. [編集] ボタンをクリックします。
  6. [対象] で、[カスタマイズ] を選択します。
  7. [ポリシーの値] で [カスタム] を選択します。
  8. [ポリシーの値] テキスト ボックスに Google Workspace お客様 ID を入力し、Enter キーを押します。このように複数の ID を入力できます。
  9. [保存] をクリックします。ポリシーが更新されたことを確認する通知が表示されます。

gcloud

ポリシーは、gcloud コマンドライン ツールで設定できます。ドメイン制限の制約を含むポリシーを作成するには、次のコマンドを実行します。

gcloud alpha resource-manager org-policies allow \
    --organization 'ORGANIZATION_ID' \
    iam.allowedPolicyMemberDomains 'DOMAIN_ID_1' \
    'DOMAIN_ID_2'

ここで

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

組織ポリシーの例

次のコード スニペットは、ドメイン制限の制約を含む組織ポリシーを示しています。

resource: "organizations/842463781240"
policy {
  constraint: "constraints/iam.allowedPolicyMemberDomains"
  etag: "\a\005L\252\122\321\946\334"
  list_policy {
  allowed_values: "C03xgje4y"
  allowed_values: "C03g5e3bc"
  allowed_values: "C03t213bc"
  }
}

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

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

エラー メッセージの例

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

Console

Console のスクリーンショット

gcloud

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

Google Workspace お客様 ID の取得

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

gcloud

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

gcloud alpha 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 Workspace お客様 ID に関連付けられたすべてのドメインへのアクセスを制限することによって機能します。それぞれの Google Workspace アカウントに、正確に 1 つのプライマリ ドメインと 0 個以上のセカンダリ ドメインが割り当てられます。Google Workspace お客様 ID に関連付けられたすべてのドメインが制約の対象になります。

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

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

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

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

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

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

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

一般公開データの共有

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

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

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

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

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

Cloud Composer

のドメインで制限された共有は、現在ベータ版です。環境の作成でこの機能を選択すると、Cloud Composer ベータ版 API が自動的に有効になります。

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

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

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

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

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

Firebase API を有効にする

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

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

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

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

Google グループ

ドメイン制限の制約が適用されている場合、許可されたドメイン内に作成された Google グループに IAM ポリシーでいつでも役割を付与できます。グループにそのドメイン外のメンバーが含まれている場合でも可能です。

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

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

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

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

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

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

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

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

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

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

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