Resource Manager は、ドメインに基づいてリソース共有を制限するために、組織ポリシーで使用できるドメイン制限の制約を提供します。この制約により、Identity and Access Management ポリシーで使用できる 一連の ID を制限できます。
組織のポリシーではこの制約を使用して、リソース共有を 1 つ以上の Google Workspace ドメインの指定されたセットに制限します。例外はフォルダ単位またはプロジェクト単位で許可されます。例外の追加について詳しくは、プロジェクトの組織のポリシーをオーバーライドするをご覧ください。
ドメイン制限の制約は遡って適用されることはありません。ドメイン制限が設定されると、この制限はその時点より後の 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 Workspace ドメインで設定されている場合、そのドメインにあるすべての ID に影響します。これには、Google Workspace コンソールで管理され、Google Cloud Console からは管理されないユーザー アカウントが含まれます。
組織ポリシーの設定
ドメイン制限の制約は、リスト型制約の一種です。Google Workspace のお客様 ID を、ドメイン制限の制約の allowed_values
リストに追加または削除できます。ドメイン制限の制約は、値の拒否をサポートしていません。また、denied_values
リストに ID を指定して組織のポリシーを保存することはできません。
allowed_values
にリストされている Google Workspace アカウントに関連付けられているすべてのドメインが、組織のポリシーによって許可されます。他のすべてのドメインは、組織のポリシーによって拒否されます。
この制約を設定するには、組織のポリシーを変更する権限が必要です。たとえば、orgpolicy.policyAdmin
ロールには組織のポリシーの制約を設定する権限があります。resourcemanager.organizationAdmin
ロールには、組織のポリシーの管理者としてユーザーを追加する権限があります。組織レベルでポリシーを管理する方法の詳細については、制約の使用ページをご覧ください。
Console
ドメイン制限の制約を含む組織ポリシーを設定するには、次のようにします。
- Google Cloud コンソールの [組織のポリシー] ページに移動します。
[組織のポリシー] ページに移動 - ページの上部にあるプロジェクト選択ツールを選択します。
- プロジェクト選択ツールで、ポリシーを設定する組織を選択します。
- [組織のポリシー] で、制約のリストから [ドメインで制限された共有] を選択します。
- [編集] をクリックします。
- [対象] で、[カスタマイズ] を選択します。
- [ルールの追加] をクリックします。
- [ポリシーの値] で、この組織ポリシーですべての値を許可するか、カスタムの値のセットを指定するかを選択します。ドメイン制限の制約は [すべて拒否] をサポートしていません。
- [ポリシーの種類] で [許可] を選択します。ドメイン制限の制約では、拒否値はサポートされません。
- [カスタム値] で、テキスト ボックスに Google Workspace お客様 ID を入力します。複数の ID を追加する場合は、[新しいポリシーの値] をクリックしてテキスト ボックスを追加します。
- [完了] をクリックします。
- [保存] をクリックします。ポリシーが更新されたことを確認する通知が表示されます。
gcloud
ポリシーは Google Cloud CLI を使用して設定できます。ドメイン制限の制約を含むポリシーを作成するには、次のコマンドを実行します。
gcloud resource-manager org-policies allow \ --organization 'ORGANIZATION_ID' \ iam.allowedPolicyMemberDomains 'DOMAIN_ID_1' \ 'DOMAIN_ID_2'
ここで
- ORGANIZATION_ID は、このポリシーを設定する組織ノードの ID です。
- DOMAINID# は、アクセスを許可する 1 つ以上の Google Workspace お客様 ID です。
組織ポリシーで制約を使用する方法については、制約の使用をご覧ください。
組織ポリシーの例
次のコード スニペットは、ドメイン制限の制約を含む組織ポリシーを示しています。
resource: "organizations/842463781240"
policy {
constraint: "constraints/iam.allowedPolicyMemberDomains"
etag: "\a\005L\252\122\321\946\334"
list_policy {
allowed_values: "is:C03xgje4y"
allowed_values: "is:C03g5e3bc"
allowed_values: "is: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
リストに含まれていないプリンシパルを追加しようとしてドメイン制限の組織のポリシー制約に違反すると、操作は失敗し、エラー メッセージが表示されます。
gcloud
ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION: One or more users named in the policy do not belong to a permitted customer.
Console
Google Workspace お客様 ID の取得
ドメイン制限の制約によって使用される Google Workspace お客様 ID は、次の 2 つの方法で取得できます。
gcloud
gcloud organizations list コマンドを使用すると、このユーザーが resourcemanager.organizations.get
権限を持つすべての組織を表示できます。
gcloud organizations list
このコマンドは、DISPLAY_NAME
、ID
(組織 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 クライアントを使用することもできます。
https://www.googleapis.com/auth/admin.directory.customer.readonly
スコープの OAuth アクセス トークンを取得します。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 プロダクトでは、一般公開データの共有がサポートされています。ドメインで制限された共有制約を組織のポリシーで適用すると、一般公開データの共有を防止できます。
データを公開して共有するには、共有するデータが存在するプロジェクト リソースで、ドメインで制限された共有制約を一時的に無効にしてください。リソースを公開して共有した後、ドメインで制限された共有制約を再度有効にできます。
請求先アカウントの BigQuery ログシンク
BigQuery ログシンクで使用される請求先アカウント用のサービス アカウント(形式: b*@*.iam.gserviceaccount.com
)は外部として扱われ、組織のポリシーでドメインで制限された共有制約によってブロックされます。ドメイン制限の制約が適用されているプロジェクトの BigQuery データセットに対するロールをこのサービス アカウントに付与するには:
ドメイン制限の制約を含む組織ポリシーを削除します。
この組織とプロジェクトの両方に対する組織のポリシーで制約が適用されている場合は、すべての値を許可するようにプロジェクトのドメイン制限の制約を含む組織のポリシーを設定します。
この制約が親組織の組織のポリシーで適用され、プロジェクトに継承された場合は、ドメイン制限の制約を含む組織のポリシーをプロジェクトに追加し、すべての値を許可します。
対応するサービス アカウント(形式:
b*@*.iam.gserviceaccount.com
)に、シンクの作成プロセス中に指定された BigQuery のロールを付与します。プロジェクトに対するドメイン制限の制約を含む組織ポリシーに加えた変更を元に戻します。
Cloud Billing のエクスポート サービス アカウント
この制約を有効にしてバケットへの請求のエクスポートを有効にすると、おそらく失敗します。請求のエクスポートに使用するバケットに対して、この制約を使用しないでください。
Cloud Billing エクスポート サービス アカウントのメールアドレスは 509219875288-kscf0cheafmf4f6tp1auij5me8qakbin@developer.gserviceaccount.com
です。
ストレージ アクセス ロギングを有効にする
ドメイン制限の制約が有効になっている場合、組織のポリシーで明示的に許可されていないドメインはすべてブロックされます。Google サービス アカウントへのアクセスも許可されません。ドメイン制限の制約が適用されている Cloud Storage バケットにストレージ アクセス ロギングを設定する手順は、次のとおりです。
ドメイン制限の制約を含む組織ポリシーを削除します。
そのバケットへの
cloud-storage-analytics@google.com
WRITE
アクセス権を付与します。ドメイン制限の制約を含む組織ポリシーを再度実装します。
Firebase API を有効にする
ドメイン制限の制約が有効になっている場合、組織のポリシーで許可されていないサービス アカウントはブロックされます。このため、API を有効にするときに外部サービス アカウントを必要とする Firebase API を有効にできません。API が有効になると、Firebase API の機能に支障をきたすことなく、ドメイン制限の制約を安全に適用できます。Firebase API を有効にするには:
ドメイン制限の制約を含む組織ポリシーを削除します。
Firebase Management API を有効にします。
ドメイン制限の制約を含む組織ポリシーを再度実装します。
Google グループ
ドメイン制限の制約が適用されている場合、許可されたドメイン内に作成された Google グループに IAM ポリシーでいつでも役割を付与できます。グループにそのドメイン外のメンバーが含まれている場合でも可能です。
プロジェクト管理者がドメイン制限の制約を回避できないようにするために、Google Workspace 管理者は、グループ オーナーが Google Workspace 管理者パネルでドメイン外のメンバーを許可できないようにする必要があります。
アカウントへのアクセスの強制
ドメイン制限に違反してプロジェクトに対してアカウントへのアクセスを強制する必要がある場合:
ドメイン制限の制約を含む組織ポリシーを削除します。
プロジェクトに対してアカウントへのアクセスを許可します。
ドメイン制限の制約を含む組織ポリシーを再度実装します。
または、関連するサービス アカウントを含む Google グループにアクセスを許可することもできます。
許可されたドメイン内に Google グループを作成します。
そのグループに対するドメイン制限をオフにするには、Google Workspace 管理者パネルを使用します。
グループにサービス アカウントを追加します。
IAM ポリシーで Google グループにアクセスを許可します。