組織のポリシー サービスを使用すると、組織のリソースをプログラマティックに一元管理できます。組織のポリシー管理者は組織のポリシーを定義できます。組織のポリシーは、Google Cloud のリソース階層内の Google Cloud リソースやそれらのリソースの子孫に適用される、制約と呼ばれる一連の制限です。
このページでは、Cloud Load Balancing に適用される組織のポリシーの制約に関する補足情報を提供します。組織のポリシーの制約を使用して、設定をプロジェクト、フォルダ、組織全体に適用できます。
組織のポリシーは新しいリソースにのみ適用されます。制約が過去にさかのぼって適用されることはありません。既存のロード バランシング リソースが新しい組織のポリシーに違反している場合は、このような違反を手動で対処する必要があります。
使用可能な制約の一覧については、組織のポリシーの制約をご覧ください。
ロードバランサ タイプを制限する
組織のポリシーを使用して、組織内で作成できる Cloud Load Balancing のタイプを制限します。次の組織のポリシーの制約を設定します。
- 名前: ロードバランサの種類に基づいてロードバランサの作成を制限する
- ID:
constraints/compute.restrictLoadBalancerCreationForTypes
compute.restrictLoadBalancerCreationForTypes
制約を設定するときに、Cloud Load Balancing タイプの許可リストまたは拒否リストを指定します。許可または拒否される値のリストには、次のリストにある値のみを含めることができます。
アプリケーション ロードバランサ
GLOBAL_EXTERNAL_MANAGED_HTTP_HTTPS
: グローバル外部アプリケーション ロードバランサの場合EXTERNAL_HTTP_HTTPS
: 従来のアプリケーション ロードバランサの場合GLOBAL_INTERNAL_MANAGED_HTTP_HTTPS
: クロスリージョン内部アプリケーション ロードバランサの場合
EXTERNAL_MANAGED_HTTP_HTTPS
: リージョン外部アプリケーション ロードバランサの場合INTERNAL_HTTP_HTTPS
: リージョン内部アプリケーション ロードバランサの場合
プロキシ ネットワーク ロードバランサ
GLOBAL_EXTERNAL_MANAGED_TCP_PROXY
: TCP プロキシを使用するグローバル外部プロキシ ネットワーク ロードバランサの場合GLOBAL_EXTERNAL_MANAGED_SSL_PROXY
: SSL プロキシを使用するグローバル外部プロキシ ネットワーク ロードバランサの場合EXTERNAL_TCP_PROXY
: TCP プロキシを使用する従来のプロキシ ネットワーク ロードバランサの場合EXTERNAL_SSL_PROXY
: SSL プロキシを使用する従来のプロキシ ネットワーク ロードバランサの場合GLOBAL_INTERNAL_MANAGED_TCP_PROXY
: TCP プロキシを使用するクロスリージョン内部プロキシ ネットワーク ロードバランサの場合
REGIONAL_EXTERNAL_MANAGED_TCP_PROXY
: TCP プロキシを使用するリージョン外部プロキシ ネットワーク ロードバランサの場合REGIONAL_INTERNAL_MANAGED_TCP_PROXY
: TCP プロキシを使用するリージョン内部プロキシ ネットワーク ロードバランサの場合
パススルー ネットワーク ロードバランサ
EXTERNAL_NETWORK_TCP_UDP
: 外部パススルー ネットワーク ロードバランサの場合INTERNAL_TCP_UDP
: 内部パススルー ネットワーク ロードバランサの場合
すべての内部または外部のロードバランサを含めるには、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
デフォルトでは、新しく作成された組織では、INTERNAL
プロトコル転送のみを許可するようにこのポリシーが構成されています。つまり、ターゲット インスタンスに関連付けられた転送ルールは、内部 IP アドレスのみを使用できます。外部 IP アドレスでプロトコル転送を使用する場合、またはユーザーが内部 IP アドレスでプロトコル転送を使用することを禁止する場合は、この組織のポリシーを更新する必要があります。
ポリシーを更新すると、ターゲット インスタンスに関連付けられた新しい転送ルールを作成するときに、変更が適用されます。この制約は、既存のプロトコル転送構成に遡って適用されることはありません。
この制約の使用方法の例については、組織のポリシーを使用したリスト型制約を設定するをご覧ください。
制約に違反するタイプのプロトコル転送デプロイを作成しようとすると失敗し、エラー メッセージが生成されます。エラー メッセージの形式は次のとおりです。
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.restrictCrossProjectServices
デフォルトでは、すべてのホストまたはサービス プロジェクトの URL マップは、アクションを実行するユーザーが compute.backendServices.use
権限を持っている場合に、他のサービス プロジェクトや同じ共有 VPC デプロイ内のホスト プロジェクトから互換性があるバックエンド サービスを参照できます。restrictCrossProjectServices
制約を設定する際は、次の方法でバックエンド サービスの許可リストまたは拒否リストを指定します。
- バックエンド サービスを次の形式で指定します。
- 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 ホスト プロジェクト リーエンの削除が許可されます。この制約を適用するには、組織レベルで権限を付与する必要があります。
この制約の使用方法の例については、組織のポリシーを使用したブール型制約を設定するをご覧ください。
カスタム制約を使用して TLS 機能を制限する
コンプライアンス要件を満たし、特定の Transport Layer Security(TLS)機能を制限するには、次の組織のポリシー制約を作成して、SSL ポリシー リソースのカスタム制約と一緒に使用します。
- 名前: SSL ポリシーを必須にする
- ID:
constraints/compute.requireSslPolicy
constraints/compute.requireSslPolicy
制約と独自の SSL ポリシー フィールドのカスタム制約を使用すると、デプロイメントに合わせて制限を作成できます。たとえば、次のことを行えます。
- 以前の TLS バージョン(1.0 や 1.1 など)と暗号スイートの使用を制限して、セキュリティを強化し、コンプライアンス要件を満たします。
- 必要な handshake の数を減らし、ロードバランサとクライアントの互換性を向上させることで、パフォーマンスを改善します。
- 特定のリソースノードとその子に制限を適用します。たとえば、組織で TLS バージョン 1.0 を拒否すると、その組織の子孫であるすべてのフォルダとプロジェクト(子)でも拒否されます。
アプリケーション ロードバランサまたはプロキシ ネットワーク ロードバランサに SSL ポリシーを適用するには、ロードバランサのターゲット HTTPS プロキシまたはターゲット SSL プロキシに SSL ポリシーを適用する必要があります。
既存の SSL ポリシーを更新するには、ターゲット プロキシに適用されている既存の SSL ポリシーを更新するをご覧ください。
組織のポリシーでブール型制約を設定する
Console
コンソールから組織のポリシーを設定するには、次の手順を実行します。
- 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
でブール型制約を使用する方法について詳しくは、制約の使用をご覧ください。
組織のポリシーでリスト型制約を設定する
Console
コンソールから組織のポリシーを設定するには、次の手順を実行します。
- Google Cloud コンソールで、[組織のポリシー] ページに移動します。
- [フィルタ] フィールドで、名前または ID を指定して制約を検索します。 たとえば、共有 VPC ホスト プロジェクトを制限するには、ID
constraints/compute.restrictSharedVpcHostProjects
を検索します。 - 制約の名前をクリックします。
- [編集] をクリックして、制約を編集します。
- カスタム ポリシーを作成するには、[カスタマイズ] を選択して、リソースの許可リストまたは拒否リストを指定します。Google Cloud コンソールを使用して組織のポリシーをカスタマイズする詳細な手順については、リスト型制約用のポリシーのカスタマイズをご覧ください。
- 変更を加えたら、[保存] をクリックして制約の設定を適用します。
gcloud
このセクションでは、リスト型制約を設定した組織のポリシー ファイルを作成して設定する方法を示す構成例を示します。gcloud
でリスト制約と組織のポリシーを操作する詳しい方法については、制約の使用をご覧ください。
ポリシー ファイルを作成します。次の JSON 構成サンプルを使用して、要件に基づいて独自のポリシー ファイルを作成します。
ロードバランサ タイプを制限する
一部のロードバランサのみを許可する
{ "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes", "listPolicy": { "allowedValues": [ "INTERNAL_TCP_UDP", "EXTERNAL_NETWORK_TCP_UDP" ] } }
すべての外部ロードバランサを拒否する
{ "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.restrictCrossProjectServices", "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
以下を置き換えます。
ターゲット HTTPS プロキシとターゲット SSL プロキシに SSL ポリシーを適用する組織のポリシーを設定する
Console
コンソールから組織のポリシーを設定するには、次の操作を行います。
Google Cloud コンソールで、[組織のポリシー] ページに移動します。
[フィルタ] フィールドで、名前または ID を指定して制約を検索します。
制約の名前をクリックします。
[編集] をクリックして、制約を編集します。
カスタム ポリシーを作成するには、[カスタマイズ] を選択して、リソースの許可リストまたは拒否リストを指定します。
変更を加えたら、[保存] をクリックして制約の設定を適用します。
gcloud
このセクションでは、いくつかの構成例を示して、constraints/compute.requireSslPolicy
制約を含む組織のポリシー ファイルを作成して設定する方法について説明します。
SSL ポリシーの使用を禁止するポリシー ファイルを作成します。
{ "constraint": "constraints/compute.requireSslPolicy", "listPolicy": { "allValues": "DENY" } }
リソース階層で指定されたリソースのすべてのターゲット HTTPS と SSL プロキシに SSL ポリシーを適用するポリシー ファイルを作成します。
{ "constraint": "constraints/compute.requireSslPolicy", "listPolicy": { "allowedValues": [ "under:folders/FOLDER_ID", "under:projects/PROJECT_ID" ] } }
ターゲットの HTTPS プロキシと SSL プロキシ(組織、フォルダ、プロジェクト)に制約を適用します。
組織の場合は、次のコマンドを実行します。
gcloud resource-manager org-policies set-policy PATH_TO_POLICY_FILE \ --organization=ORGANIZATION_ID
フォルダの場合は、次のコマンドを実行します。
gcloud resource-manager org-policies set-policy PATH_TO_POLICY_FILE \ --folder=FOLDER_ID
プロジェクトの場合は、次のコマンドを実行します。
gcloud resource-manager org-policies set-policy PATH_TO_POLICY_FILE \ --project=PROJECT_ID
次のように置き換えます。
有効なポリシーを取得して、リソース(組織、フォルダ、プロジェクト)のデフォルトの動作を確認するには、次のコマンドを実行します。
組織の場合:
gcloud resource-manager org-policies describe compute.requireSslPolicy \ --effective \ --organization=ORGANIZATION_ID
フォルダの場合:
gcloud resource-manager org-policies describe compute.requireSslPolicy \ --effective \ --folder=FOLDER_ID
プロジェクトの場合:
gcloud resource-manager org-policies describe compute.requireSslPolicy \ --effective \ --project=PROJECT_ID
リソース(組織、フォルダ、プロジェクト)からポリシーを削除するには、次のコマンドを実行します。
組織の場合:
gcloud resource-manager org-policies delete compute.requireSslPolicy \ --organization=ORGANIZATION_ID
フォルダの場合:
gcloud resource-manager org-policies delete compute.requireSslPolicy \ --folder=FOLDER_ID
プロジェクトの場合:
gcloud resource-manager org-policies delete compute.requireSslPolicy \ --project=PROJECT_ID
カスタム制約を設定するには、カスタム制約を使用するをご覧ください。
次のステップ
- 組織のポリシーに適用されるリソース階層については、リソース階層をご覧ください。
- 組織のポリシーと制約の概要については、組織のポリシー サービスの概要をご覧ください。
- Google Cloud コンソールでの制約と組織のポリシーの操作方法について詳しくは、組織のポリシーの作成と管理をご覧ください。
gcloud
で制約と組織のポリシーを操作する方法については、制約の使用をご覧ください。- 使用可能な制約の一覧については、組織のポリシーの制約をご覧ください。
- 組織のポリシーに関連する API メソッドについては、Resource Manager API のリファレンス ドキュメントをご覧ください。