このページでは、Cloud Load Balancing に適用される組織のポリシーの制約に関する補足情報を提供します。組織のポリシーの制約を使用して、設定をプロジェクト、フォルダ、組織全体に適用できます。
組織のポリシーは新しいリソースにのみ適用されます。制約が過去にさかのぼって適用されることはありません。既存のロード バランシング リソースが新しい組織のポリシーに違反している場合は、このような違反に手動で対処する必要があります。
使用可能な制約の一覧については、組織のポリシーの制約をご覧ください。
ロードバランサ タイプを制限する
組織のポリシーを使用して、組織内で作成できる Cloud Load Balancing のタイプを制限します。次の組織のポリシーの制約を設定します。
- 名前: ロードバランサの種類に基づいてロードバランサの作成を制限します。
- ID:
constraints/compute.restrictLoadBalancerCreationForTypes
compute.restrictLoadBalancerCreationForTypes
制約を設定するときに、Cloud Load Balancing タイプの許可リストまたは拒否リストを指定します。許可または拒否される値のリストには、次のリストにある値のみを含めることができます。
INTERNAL_TCP_UDP
: 内部 TCP / UDP ロードバランサ用INTERNAL_HTTP_HTTPS
: 内部 HTTP(S) ロードバランサ用EXTERNAL_NETWORK_TCP_UDP
: ネットワーク ロードバランサ用EXTERNAL_TCP_PROXY
: 外部 TCP プロキシ ロードバランサ用EXTERNAL_SSL_PROXY
: 外部 SSL プロキシ ロードバランサ用EXTERNAL_HTTP_HTTPS
: グローバル外部 HTTP(S) ロードバランサ(従来)用EXTERNAL_MANAGED_HTTP_HTTPS
: リージョン外部 HTTP(S) ロードバランサ用REGIONAL_INTERNAL_MANAGED_TCP_PROXY
: 内部リージョン TCP プロキシ ロードバランサ用GLOBAL_EXTERNAL_MANAGED_HTTP_HTTPS
: グローバル外部 HTTP(S) ロードバランサ用
すべての内部または外部のロードバランサを含めるには、in:
接頭辞の後に INTERNAL
または EXTERNAL
を使用します。たとえば、in:INTERNAL
を許可すると、上のリストにあるすべての内部ロードバランサが許可されます。
この制約の使用方法の例については、組織のポリシーを使用したリスト型制約を設定するをご覧ください。
ポリシーを設定すると、それぞれの Google Cloud 転送ルールを追加するときにポリシーが適用されます。この制約は、既存の Cloud Load Balancing 構成には適用されません。
制約に違反するタイプのロードバランサを作成しようとすると、処理に失敗し、エラー メッセージが生成されます。エラー メッセージの形式は次のとおりです。
Constraint constraints/compute.restrictLoadBalancerCreationForTypes violated for projects/PROJECT_NAME. Forwarding Rule projects/PROJECT_NAME/region/REGION/forwardingRules/FORWARDING_RULE_NAME of type SCHEME is not allowed.
異なるリソースレベルで複数の restrictLoadBalancerCreationForTypes
制約を設定すると、これらの制約は階層的に適用されます。このため、上位層のポリシーも考慮されるように、inheritFromParent
フィールドを true
に設定することをおすすめします。
GKE のエラー メッセージ
Google Kubernetes Engine(GKE)Service と Ingress オブジェクトを使用している場合、この組織のポリシーを使用してロードバランサの作成結果を制限すると、次のようなエラー メッセージが表示されます。
Warning Sync 28s loadbalancer-controller Error during sync: error running load balancer syncing routine: loadbalancer FORWARDING_RULE_NAME does not exist: googleapi: Error 412: Constraint constraints/compute.restrictLoadBalancerCreationForTypes violated for projects/PROJECT_ID. Forwarding Rule projects/PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME of type LOAD_BALANCER_TYPE is not allowed, conditionNotMet
GKE のエラー メッセージを確認するには、次のコマンドを実行します。
kubectl get events -w
kubectl describe RESOURCE_KIND NAME
次のように置き換えます。
- RESOURCE_KIND: ロードバランサの種類(
ingress
またはservice
) - NAME: ロードバランサの名前
グローバル ロード バランシングを無効にする
このブール型制約は、グローバル ロード バランシング サービスの作成を無効にします。これを適用すると、グローバルな依存関係のないリージョン ロード バランシング サービスのみを作成できます。
- * 名前: グローバル ロード バランシングを無効にします。
- * ID:
constraints/compute.disableGlobalLoadBalancing
デフォルトでは、ユーザーはグローバル ロード バランシング サービスを作成できます。
この制約の使用方法の例については、組織のポリシーを使用したブール型制約を設定するをご覧ください。
プロトコル転送タイプを制限する
組織のポリシーを使用して、組織で作成できるプロトコル転送タイプを制限します。次の組織のポリシーの制約を設定します。
- 名前: IP アドレスの種類に基づいてプロトコル転送を制限します。
- ID:
constraints/compute.restrictProtocolForwardingCreationForTypes
compute.restrictProtocolForwardingCreationForTypes
制約を設定する場合は、プロトコル転送タイプの許可リストまたは拒否リストを指定します。許可または拒否される値のリストには、次のリストにある値のみを含めることができます。
INTERNAL
EXTERNAL
この制約の使用方法の例については、組織のポリシーを使用したリスト型制約を設定するをご覧ください。
ポリシーを設定すると、それぞれの Google Cloud 転送ルールを追加するときにポリシーが適用されます。この制約は、既存のプロトコル転送構成には適用されません。
制約に違反するタイプのプロトコル転送デプロイを作成しようとすると失敗し、エラー メッセージが生成されます。エラー メッセージの形式は次のとおりです。
Constraint constraints/compute.restrictProtocolForwardingCreationForTypes violated for projects/PROJECT_NAME. Forwarding Rule projects/PROJECT_NAME/region/REGION/forwardingRules/FORWARDING_RULE_NAME of type SCHEME is not allowed.
異なるリソースレベルで複数の restrictProtocolForwardingCreationForTypes
制約を設定し、inheritFromParent
フィールドを true
に設定すると、制約は階層的に適用されます。
共有 VPC 制限を適用する
次の組織のポリシーを使用して、ユーザーに共有 VPC デプロイの設定を制限します。
共有 VPC ホスト プロジェクトを制限する
このリスト型制約を使用すると、リソースで接続できる共有 VPC ホスト プロジェクトを制限できます。
- 名前: 共有 VPC ホスト プロジェクトを制限します。
- ID:
constraints/compute.restrictSharedVpcHostProjects
デフォルトでは、プロジェクトは同じ組織内の任意のホスト プロジェクトに接続して、サービス プロジェクトにすることができます。compute.restrictSharedVpcHostProjects
制約を設定する際は、次の方法でホスト プロジェクトの許可リストまたは拒否リストを指定します。
- 次の形式でプロジェクトを指定します。
- projects/PROJECT_ID
- プロジェクト、フォルダ、または組織を指定します。この制約は、リソース階層の指定されたリソースに含まれるすべてのプロジェクトに適用されます。次の形式を使用します。
- under:organizations/ORGANIZATION_ID
- under:folders/FOLDER_ID
この制約の使用方法の例については、組織のポリシーを使用したリスト型制約を設定するをご覧ください。
共有 VPC サブネットワークを制限する
このリスト型制約は、適格リソースで使用できる一連の共有 VPC サブネットを定義します。この制約は、同じプロジェクト内のリソースには適用されません。
- 名前: 共有 VPC サブネットワークを制限します。
- ID:
constraints/compute.restrictSharedVpcSubnetworks
デフォルトでは、適格リソースはすべての共有 VPC サブネットを使用できます。compute.restrictSharedVpcSubnetworks
制約を設定する際は、次の方法でサブネットの制限リストを指定します。
- 次の形式でサブネットを指定します。
- projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
- プロジェクト、フォルダ、または組織を指定します。この制約は、リソース階層の指定されたリソースに含まれるすべてのサブネットに適用されます。次の形式を使用します。
- under:organizations/ORGANIZATION_ID
- under:folders/FOLDER_ID
- under:projects/PROJECT_ID
この制約の使用方法の例については、組織のポリシーを使用したリスト型制約を設定するをご覧ください。
プロジェクト間のバックエンド サービスを制限する
この制約を使用して、URL マップが参照できるバックエンド サービスを制限できます。この制約は、URL マップと同じプロジェクト内のバックエンド サービスには適用されません。
- 名前: プロジェクト間のバックエンド サービスを制限します。
- ID:
constraints/compute.restrictSharedVpcBackendServices
デフォルトでは、すべてのホストまたはサービス プロジェクトの URL マップは、アクションを実行するユーザーが compute.backendServices.use
権限を持っている場合に、他のサービス プロジェクトや同じ共有 VPC デプロイ内のホスト プロジェクトから互換性があるバックエンド サービスを参照できます。restrictSharedVpcBackendServices
制約を設定する際は、次の方法でバックエンド サービスの許可リストまたは拒否リストを指定します。
- バックエンド サービスを次の形式で指定します。
- projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
- プロジェクト、フォルダ、または組織を指定します。この制約は、リソース階層内の指定リソースの下にあるすべてのバックエンド サービスに適用されます。次の形式を使用します。
- under:organizations/ORGANIZATION_ID
- under:folders/FOLDER_ID
- under:projects/PROJECT_ID
この制約を使用して組織のポリシーを設定すると、次回 gcloud compute url-maps
コマンドを使用してバックエンド サービスを URL マップに接続する際に、制約が有効になります。この制約は、プロジェクト間のバックエンド サービスへの既存の参照に溯って適用されることはありません。
この制約の使用方法の例については、組織のポリシーを使用したリスト型制約を設定するをご覧ください。
共有 VPC プロジェクト リーエンの削除を制限する
このブール型制約がすでに True
に設定されていると、組織レベルの権限なしで共有 VPC ホスト プロジェクト リーエンを削除できるユーザーが制限されます。
- 名前: 共有 VPC プロジェクト リーエンの削除を制限します。
- ID:
constraints/compute.restrictXpnProjectLienRemoval
デフォルトでは、リーエンの更新権限を持つすべてのユーザーに共有 VPC ホスト プロジェクト リーエンの削除が許可されます。この制約を適用するには、組織レベルで権限を付与する必要があります。
この制約の使用方法の例については、組織のポリシーを使用したブール型制約を設定するをご覧ください。
組織のポリシーでブール型制約を設定する
コンソール
コンソールから組織のポリシーを設定するには、次の操作を行います。
- Google Cloud コンソールで [組織のポリシー] ページに移動します。
- [フィルタ] フィールドで、名前または ID を指定して制約を検索します。
- 制約の名前をクリックします。
- [編集] をクリックして、制約を編集します。
- [編集] ページで、[カスタマイズ] を選択します。
- [適用] で、次のように適用オプションを選択します。
- この制約の適用を有効にするには、[オン] を選択します。
- この制約の適用を無効にするには、[オフ] を選択します。
- 変更を加えたら、[保存] をクリックして制約の設定を適用します。
Google Cloud コンソールを使用して組織のポリシーをカスタマイズする詳細な手順については、ブール型制約用のポリシーのカスタマイズをご覧ください。
gcloud
組織のポリシーにブール型制約の適用を有効にするには、次のように gcloud resource-manager org-policies
enable-enforce
コマンドを使用します。
共有 VPC プロジェクト リーエンの削除の制限を有効にするには:
gcloud resource-manager org-policies enable-enforce \ --organization ORGANIZATION_ID \ constraints/compute.restrictXpnProjectLienRemoval
グローバル ロード バランシングを無効にするには:
gcloud resource-manager org-policies enable-enforce \ --organization ORGANIZATION_ID \ constraints/compute.disableGlobalLoadBalancing
gcloud
でブール型制約を使用する方法について詳しくは、制約の使用をご覧ください。
組織のポリシーでリスト型制約を設定する
コンソール
コンソールから組織のポリシーを設定するには、次の操作を行います。
- Google Cloud コンソールで [組織のポリシー] ページに移動します。
- [フィルタ] フィールドで、名前または ID を指定して制約を検索します。 たとえば、共有 VPC ホスト プロジェクトを制限するには、ID
constraints/compute.restrictSharedVpcHostProjects
を検索します。 - 制約の名前をクリックします。
- [編集] をクリックして、制約を編集します。
- カスタム ポリシーを作成するには、[カスタマイズ] を選択して、リソースの許可リストまたは拒否リストを指定します。Google Cloud コンソールを使用して組織のポリシーをカスタマイズする詳しい手順については、リスト型制約用のポリシーのカスタマイズをご覧ください。
- 変更を加えたら、[保存] をクリックして制約の設定を適用します。
gcloud
このセクションでは、リスト型制約を設定した組織のポリシー ファイルを作成して設定する方法を示す構成例を示します。gcloud
でリスト制約と組織のポリシーを操作する詳しい方法については、制約の使用をご覧ください。
ポリシー ファイルを作成します。次の JSON 構成サンプルを使用して、要件に基づいて独自のポリシー ファイルを作成します。
ロードバランサ タイプを制限する
一部のロードバランサのみを許可する
{ "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes", "listPolicy": { "allowedValues": [ "INTERNAL_TCP_UDP", "INTERNAL_HTTP_HTTPS", "EXTERNAL_NETWORK_TCP_UDP", "EXTERNAL_TCP_PROXY", "EXTERNAL_SSL_PROXY", "EXTERNAL_HTTP_HTTPS" ] } }
すべての外部ロードバランサを拒否する
{ "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes", "listPolicy": { "deniedValues": [ "in:EXTERNAL" ] } }
すべてのロードバランサを拒否する
{ "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes", "listPolicy": { "allValues": "DENY" } }
プロトコル転送タイプを制限する
すべてのプロトコル転送を拒否する
{ "constraint": "constraints/compute.restrictProtocolForwardingCreationForTypes", "listPolicy": { "allValues": "DENY" } }
内部プロトコル転送のみを許可する
{ "constraint": "constraints/compute.restrictProtocolForwardingCreationForTypes", "listPolicy": { "deniedValues": [ "EXTERNAL" ] } }
共有 VPC 構成を制限する
共有 VPC ホスト プロジェクトを制限する
{ "constraint": "constraints/compute.restrictSharedVpcHostProjects", "listPolicy": { "allowedValues": [ "under:folders/FOLDER_ID", "under:projects/PROJECT_ID" ] } }
共有 VPC サブネットワークを制限する
{ "constraint": "constraints/compute.restrictSharedVpcSubnetworks", "listPolicy": { "deniedValues": [ "under:organizations/ORGANIZATION_ID", "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME" ] } }
共有 VPC バックエンド サービスを制限する
{ "constraint": "constraints/compute.restrictSharedVpcBackendServices", "listPolicy": { "allowedValues": [ "under:folders/FOLDER_ID", "under:projects/PROJECT_ID", "projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME" ] } }
リソース、組織、フォルダ、プロジェクトのいずれかに制約を適用します。
組織の場合は、次のコマンドを実行します。
gcloud resource-manager org-policies set-policy POLICY_FILE \ --organization=ORGANIZATION_ID
フォルダの場合は、次のコマンドを実行します。
gcloud resource-manager org-policies set-policy POLICY_FILE \ --folder=FOLDER_ID
プロジェクトの場合は、次のコマンドを実行します。
gcloud resource-manager org-policies set-policy POLICY_FILE \ --project=PROJECT_ID
次のように置き換えます。
次のステップ
- 組織のポリシーに適用されるリソース階層については、リソース階層をご覧ください。
- 組織のポリシーと制約の概要については、組織のポリシー サービスの概要をご覧ください。
- Google Cloud コンソールで制約と組織のポリシーを操作する方法については、組織のポリシーの作成と管理をご覧ください。
gcloud
で制約と組織のポリシーを操作する方法については、制約の使用をご覧ください。- 使用可能な制約の一覧については、組織のポリシーの制約をご覧ください。
- 組織のポリシーに関連する API メソッドについては、Resource Manager API のリファレンス ドキュメントをご覧ください。