このページでは、Cloud Load Balancing に適用される組織のポリシーの制約に関する補足情報を提供します。組織のポリシーの制約を使用して、ロードバランサの設定をプロジェクト、フォルダ、組織全体に適用できます。
組織のポリシーを使用して、組織内で作成できる Cloud Load Balancing のタイプを制限します。次の組織のポリシーの制約を設定します。
constraints/compute.restrictLoadBalancerCreationForTypes
compute.restrictLoadBalancerCreationForTypes
制約を設定するときに、許可されていない Cloud Load Balancing タイプを指定します。使用可能なタイプについては、ロードバランサの作成を制限するをご覧ください。
組織のポリシーの設定
Console
Console から Cloud Load Balancing の組織のポリシーを設定するには、次の操作を行います。
- Google Cloud Console で、[組織のポリシー] ページに移動します。
- [フィルタ] フィールドに「
load
」と入力し、[constraints/compute.restrictLoadBalancerCreationForTypes] を選択します。 - [ロードバランサの種類に基づいてロードバランサの作成を制限する] をクリックします。
- [編集] をクリックして、既存の Cloud Load Balancing ポリシーの制約を編集します。
- カスタム ポリシーを作成するには、[カスタマイズ] を選択します。
- 変更を加えたら、[保存] をクリックして制約の設定を適用します。
gcloud
OS Login の組織のポリシーを設定するには、gcloud resource-manager org-policies
enable-enforce
コマンドを使用します。
自分の組織 ID を確認します。
gcloud organizations list
次の例に示すように、ポリシー ファイルを作成します。
拒否する値を一覧表示する
{ "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes", "listPolicy": { "deniedValues": [ "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": [ "EXTERNAL" ] } }
すべてのロードバランサを拒否する
{ "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes", "listPolicy": { "allValues": "DENY" } }
組織で制約を設定します。ここで、
ORGANIZATION_ID
は実際の組織 ID に置き換えます。gcloud resource-manager org-policies set-policy POLICY_FILE \ --organization=ORGANIZATION_ID
さらに、
--folder
フラグまたは--project
フラグ、フォルダ ID またはプロジェクト ID をそれぞれ使用すると、フォルダやプロジェクトに対して OS Login 組織のポリシーを適用できます。フォルダの場合は、次のコマンドを実行します。
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 転送ルールを追加するときにポリシーが適用されます。
この制約は、既存の Cloud Load Balancing 構成には適用されません。
制約に違反するタイプの 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: ロードバランサの名前
次のステップ
- 組織のポリシーに適用されるリソース階層について学習する。
- 組織のポリシーの作成と管理で、Google Cloud Console での制約と組織のポリシーの操作方法を学習する。
- 制約の使用で、
gcloud
での制約と組織のポリシーの操作方法を学習する。 - Resource Manager API のリファレンス ドキュメントで、関連する API メソッド(
projects.setOrgPolicy
など)を確認する。