Cloud Load Balancing の組織のポリシーに関する制約

このページでは、Cloud Load Balancing に適用される組織のポリシーの制約に関する補足情報を提供します。組織のポリシーの制約を使用して、ロードバランサの設定をプロジェクト、フォルダ、組織全体に適用できます。

組織のポリシーを使用して、組織内で作成できる Cloud Load Balancing のタイプを制限します。次の組織のポリシーの制約を設定します。

constraints/compute.restrictLoadBalancerCreationForTypes

compute.restrictLoadBalancerCreationForTypes 制約を設定するときに、許可されていない Cloud Load Balancing タイプを指定します。使用可能なタイプについては、ロードバランサの作成を制限するをご覧ください。

組織のポリシーの設定

Console

Console から Cloud Load Balancing の組織のポリシーを設定するには、次の操作を行います。

  1. Google Cloud Console で、[組織のポリシー] ページに移動します。

    [組織のポリシー] ページに移動

  2. [フィルタ] フィールドに「load」と入力し、[constraints/compute.restrictLoadBalancerCreationForTypes] を選択します。
  3. [ロードバランサの種類に基づいてロードバランサの作成を制限する] をクリックします。
  4. [編集] をクリックして、既存の Cloud Load Balancing ポリシーの制約を編集します。
  5. カスタム ポリシーを作成するには、[カスタマイズ] を選択します。
  6. 変更を加えたら、[保存] をクリックして制約の設定を適用します。

gcloud

OS Login の組織のポリシーを設定するには、gcloud resource-manager org-policies enable-enforce コマンドを使用します。

  1. 自分の組織 ID を確認します。

    gcloud organizations list
  2. 次の例に示すように、ポリシー ファイルを作成します。

    拒否する値を一覧表示する

    {
     "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": {
        "allValues": "DENY"
      }
    }
    
  3. 組織で制約を設定します。ここで、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)ServiceIngress オブジェクトを使用している場合、この組織のポリシーを使用してロードバランサの作成結果を制限すると、次のようなエラー メッセージが表示されます。

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: ロードバランサの名前

次のステップ