ドメイン別の ID の制限

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

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

ドメイン制限の制約は遡って適用されることはありません。ドメイン制限が設定されると、この制限はその時点より後の IAM ポリシーの変更に適用され、過去の変更には適用されません。

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

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

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

組織のポリシーの設定

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

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

Console

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

  1. Cloud Console の [組織のポリシー] ページに移動します。
    [組織のポリシー] ページに移動
  2. [選択] をクリックします。
  3. ポリシーを設定する組織を選択します。
  4. [ドメインで制限された共有] をクリックします。
  5. [編集] ボタンをクリックします。
  6. [対象] で、[カスタマイズ] を選択します。
  7. [ポリシーの値] で [カスタム] を選択します。
  8. [ポリシーの値] テキスト ボックスに G Suite お客様 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 は G Suite お客様 ID です(C03xgje4y など)。この組織のポリシーが適用されると、allowed_values のリストから G Suite ドメインに属している ID のみが IAM ポリシーで許可されます。G Suite の人間のユーザーとグループは、その G Suite ドメインに属している必要があり、IAM サービス アカウントは、指定された G Suite ドメインに関連付けられた組織リソースの子でなければなりません。

たとえば、企業の G Suite のお客様 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.

G Suite お客様 ID の取得

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

gcloud

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

gcloud alpha organizations list

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

API

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

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

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

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

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

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

サブドメインの制限

ドメイン制限の制約は、特定の G Suite お客様 ID に関連付けられたすべてのドメインへのアクセスを制限することによって機能します。それぞれの G Suite アカウントに、正確に 1 つのプライマリ ドメインと 0 個以上のセカンダリ ドメインが割り当てられます。G Suite お客様 ID に関連付けられたすべてのドメインが制約の対象になります。

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

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

プライマリ ドメイン サブドメイン ドメイン制限の制約 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 つのドメイン間のドメイン制限制約アクセスを区別するには、各ドメインを別々の G Suite アカウントに関連付ける必要があります。各 G Suite アカウントは組織ノードに関連付けられ、独自の組織のポリシーをそれに適用できます。こうして domain.com を 1 つの G Suite アカウントに関連付け、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. ドメイン制限の制約を含む組織ポリシーを再度実装します。

Google グループ

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

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

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

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

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

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

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

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

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

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

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

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