制約の使用

このガイドでは、特定の制約を使用して組織のポリシーを作成する方法について説明します。このページの例で使用されている制約は、実際の制約ではなく、教育目的のために一般化されたサンプルです。

制約の詳細と、制約によって解決される問題については、すべての組織ポリシー サービスの制約のリストをご覧ください。

始める前に

必要なロール

組織のポリシーを管理するために必要な権限を取得するには、組織の組織ポリシー管理者roles/orgpolicy.policyAdmin)の IAM ロールを付与するよう管理者に依頼してください。 ロールの付与の詳細については、アクセスの管理をご覧ください。

この事前定義ロールには、組織のポリシーを管理するために必要な権限が含まれています。必要な権限を正確に確認するには、[必要な権限] セクションを開いてください。

必要な権限

組織のポリシーを管理するには、次の権限が必要です。

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

組織のポリシーとともにリスト制約を使用する

組織リソースに対する適用を設定する

リスト型制約を使用する組織ポリシーを組織リソースに対して設定することにより、特定のサービスへのアクセスを拒否することができます。次のプロセスでは、Google Cloud CLI を使用して組織のポリシーを設定する方法について説明します。Google Cloud コンソールを使用して組織のポリシーを表示および設定する方法については、ポリシーの作成と管理をご覧ください。

リスト型制約を使用する組織ポリシーでは、許可または拒否する値を 500 個以下、32 KB 以下にする必要があります。組織ポリシーの作成や更新で 500 個を超える値や 32 KB を超えるサイズがある場合は、組織のポリシーが正常に保存されず、リクエストからエラーが返されます。

v2 API

  1. describe コマンドを使用して、組織リソースに関する現在のポリシーを取得します。このコマンドを実行すると、このリソースに直接適用されたポリシーが返されます。

    gcloud org-policies describe \
      LIST_CONSTRAINT --organization=ORGANIZATION_ID
    

    ここで

    • ORGANIZATION_ID は、組織リソースの一意の識別子です。組織 IDは 10 進数で表示され、先頭にゼロを付けることはできません。

    • LIST_CONSTRAINT は、サービスに対して適用するリスト型制約です。

    さらに、--folder フラグまたは --project フラグ、フォルダ IDプロジェクト ID をそれぞれ使用して、フォルダやプロジェクトに対して組織のポリシーを適用することもできます。

    現在の組織ポリシーがある場合は、レスポンスで返されます。次に例を示します。

    name: projects/841166443394/policies/gcp.resourceLocations
    spec:
      etag: BwW5P5cEOGs=
      inheritFromParent: true
      rules:
      - condition:
          expression: resource.matchTagId("tagKeys/1111", "tagValues/2222")
        values:
          allowedValues:
          - in:us-east1-locations
      - condition:
          expression: resource.matchTag("123/env", "prod")
        values:
          allowedValues:
          - in:us-west1-locations
      - values:
          deniedValues:
          - in:asia-south1-locations
      updateTime: '2021-01-19T12:00:51.095Z'
    

    ポリシーが設定されていない場合は、次のような NOT_FOUND エラーが返されます。

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. set-policy コマンドを使用して、組織に対するポリシーを設定します。これにより、リソースに現在接続されているポリシーがすべて上書きされます。

    1. ポリシーを保存する一時ファイル /tmp/policy.yaml を作成します。

      name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT
      spec:
        rules:
        - values:
          deniedValues:
          - VALUE_A
      
    2. set-policy コマンドを実行します。

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. describe --effective を使用して現在有効なポリシーを表示します。これにより、リソース階層において現段階で継承が可能と評価された組織のポリシーが返されます。

    gcloud org-policies describe \
      LIST_CONSTRAINT --effective \
      --organization=ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT
    spec:
      rules:
        - values:
            deniedValues:
            - VALUE_A
    

    この組織ポリシーは組織レベルで設定されているため、継承が許可されているすべての子リソースで継承されます。

v1 API

  1. describe コマンドを使用して、組織リソースに関する現在のポリシーを取得します。

    gcloud resource-manager org-policies describe \
      LIST_CONSTRAINT --organization ORGANIZATION_ID
    

    ここで

    • ORGANIZATION_ID は、組織リソースの一意の識別子です。組織 IDは 10 進数で表示され、先頭にゼロを付けることはできません。

    • LIST_CONSTRAINT は、サービスに対して適用するリスト型制約です。

    さらに、--folder フラグまたは --project フラグ、フォルダ IDプロジェクト ID をそれぞれ使用して、フォルダやプロジェクトに対して組織のポリシーを適用することもできます。

    ポリシーが設定されていないため、次の例のように、不完全なポリシーが返されます。

    constraint: "constraints/LIST_CONSTRAINT"
    etag: BwVJi0OOESU=
    
  2. アクセスを制限するサービスに対して拒否された値を追加するには、deny コマンドを使用します。

    gcloud resource-manager org-policies deny \
      LIST_CONSTRAINT VALUE_A \
      --organization ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    constraint: constraints/LIST_CONSTRAINT
    etag: BwVJi0OOESU=
    listPolicy:
      deniedValues:
        - VALUE_A
    updateTime: CURRENT_TIME
    
  3. describe --effective を使用して現在有効なポリシーを表示します。

    gcloud resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --organization ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      deniedValues:
        - VALUE_A
    

    この組織ポリシーは組織レベルで設定されているため、継承が許可されているすべての子リソースで継承されます。

組織のポリシーの変更を完全に適用するには、最大 15 分ほどかかる場合があります。

階層サブツリーに対して適用を設定する

リスト制約では、明示的に定義された値を使用して、どのリソースを許可または拒否するかを決定します。一部の制約も、接頭辞 under: を使用する値を受け入れることができます。この接頭辞は、そのリソースをルートとするサブツリーを指定します。許可または拒否される値に under: 接頭辞を使用すると、そのリソースとそのすべての子に組織のポリシーが適用されます。接頭辞 under: の使用を許可する制約については、組織のポリシーの制約ページをご覧ください。

under: 接頭辞を使用する値は、階層サブツリー文字列と呼ばれます。階層サブツリー文字列は、適用先のリソースのタイプを指定します。たとえば、constraints/compute.storageResourceUseRestrictions 制約を設定するときに projects/PROJECT_ID のサブツリー文字列を使用すると、PROJECT_ID とそのすべての子に対する Compute Engine ストレージの使用が許可または拒否されます。

v2 API

  1. describe コマンドを使用して、組織リソースに関する現在のポリシーを取得します。

    gcloud org-policies describe \
      LIST_CONSTRAINT --organization=ORGANIZATION_ID
    

    ここで

    • ORGANIZATION_ID は、組織リソースの一意の識別子です。

    • LIST_CONSTRAINT は、サービスに対して適用するリスト型制約です。

    さらに、--folder フラグまたは --project フラグ、フォルダ IDプロジェクト ID をそれぞれ使用して、フォルダやプロジェクトに対して組織のポリシーを適用することもできます。

    ポリシーが設定されていない場合は、次のような NOT_FOUND エラーが返されます。

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. set-policy コマンドを使用して、プロジェクトにポリシーを設定します。under: 接頭辞は、指定されたリソースとそのすべての子リソースを拒否する制約を設定します。

    1. ポリシーを保存する一時ファイル /tmp/policy.yaml を作成します。

      name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT
      spec:
        rules:
        - values:
          deniedValues:
          - under:folders/VALUE_A
      
    2. set-policy コマンドを実行します。

      gcloud org-policies set-policy /tmp/policy.yaml
      

    ここで

    • under: は、後続するものがサブツリー文字列であることを表す接頭辞です。

    • folders/VALUE_A は、拒否するルートリソースのフォルダ ID です。リソース階層内のこのリソースおよびそのすべての子リソースが拒否されます。

    また、次の例のように、組織とプロジェクトに under: 接頭辞を適用することもできます。

    • under:organizations/VALUE_X

    • under:projects/VALUE_Y

  3. describe --effective を使用して現在有効なポリシーを表示します。

    gcloud org-policies describe \
      LIST_CONSTRAINT --effective \
      --organization=ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT
    spec:
      rules:
        - values:
            deniedValues:
            - under:folders/VALUE_A
    

    これでポリシーは、フォルダ VALUE_A とそのすべての子リソースを拒否するように評価します。

v1 API

  1. describe コマンドを使用して、組織リソースに関する現在のポリシーを取得します。

    gcloud resource-manager org-policies describe \
      LIST_CONSTRAINT --organization ORGANIZATION_ID
    

    ここで

    • ORGANIZATION_ID は、組織リソースの一意の識別子です。

    • LIST_CONSTRAINT は、サービスに対して適用するリスト型制約です。

    さらに、--folder フラグまたは --project フラグ、フォルダ IDプロジェクト ID をそれぞれ使用して、フォルダやプロジェクトに対して組織のポリシーを適用することもできます。

    ポリシーが設定されていないため、次の例のように、不完全なポリシーが返されます。

    constraint: "constraints/LIST_CONSTRAINT"
    etag: BwVJi0OOESU=
    
  2. アクセスを制限するサービスに対して拒否された値を追加するには、deny コマンドを使用します。under: 接頭辞は、指定されたリソースとそのすべての子リソースを拒否する制約を設定します。

    gcloud resource-manager org-policies deny \
      LIST_CONSTRAINT under:folders/VALUE_A \
      --organization ORGANIZATION_ID
    

    ここで

    • under: は、後続するものがサブツリー文字列であることを表す接頭辞です。

    • folders/VALUE_A は、拒否するルートリソースのフォルダ ID です。リソース階層内のこのリソースおよびそのすべての子リソースが拒否されます。

    • VALUE_BVALUE_C は階層内に存在するプロジェクトで、VALUE_A がその親です。

    deny コマンドの出力は次のようになります。

    constraint: constraints/LIST_CONSTRAINT
    etag: BwVJi0OOESU=
    listPolicy:
      deniedValues:
        - under:folders/VALUE_A
    updateTime: CURRENT_TIME
    

    また、次の例のように、組織とプロジェクトに under: 接頭辞を適用することもできます。

    • under:organizations/VALUE_X

    • under:projects/VALUE_Y

  3. describe --effective を使用して現在有効なポリシーを表示します。

    gcloud resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --organization ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      deniedValues:
        - under:folders/VALUE_A
    

    このポリシーでは、フォルダ VALUE_A とそのすべての子リソース(この場合は VALUE_BVALUE_C)を拒否するように評価します。

組織のポリシーの変更を完全に適用するには、最大 15 分ほどかかる場合があります。

プロジェクトの組織ポリシーを結合する

リソースには組織のポリシーを設定できます。このポリシーは、親リソースから継承したポリシーと結合されます。この結合されたポリシーは、継承のルールに基づいて、新しい有効なポリシーを作成するものと評価されます。

v2 API

  1. describe コマンドで、リソースに対する現在のポリシーを取得します。

    gcloud org-policies describe \
      LIST_CONSTRAINT --project=PROJECT_ID
    

    ここで

    • PROJECT_ID はプロジェクトの一意の識別子です。

    • LIST_CONSTRAINT は、サービスに対して適用するリスト型制約です。

    ポリシーが設定されていない場合は、次のような NOT_FOUND エラーが返されます。

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. 現在の有効なポリシーを表示するには、describe --effective コマンドを使用します。

    gcloud org-policies describe \
      LIST_CONSTRAINT --effective \
      --project=PROJECT_ID
    

    コマンドの出力には、組織リソースから継承された、拒否する値が含まれます。

    name: projects/PROJECT_ID/policies/LIST_CONSTRAINT
    spec:
      rules:
        - values:
            deniedValues:
              - VALUE_A
    
  3. set-policy コマンドを使用して、プロジェクトにポリシーを設定します。

    1. ポリシーを保存する一時ファイル /tmp/policy.yaml を作成します。

      name: projects/PROJECT_ID/policies/LIST_CONSTRAINT
      spec:
        inheritFromParent: true
        rules:
        - values:
          deniedValues:
          - VALUE_B
          - VALUE_C
      
    2. set-policy コマンドを実行します。

      gcloud org-policies set-policy /tmp/policy.yaml
      
  4. describe --effective コマンドをもう一度使用して、更新されたポリシーを表示します。

    gcloud org-policies describe \
      LIST_CONSTRAINT --effective \
      --project=PROJECT_ID
    

    コマンドの出力には、リソースのポリシーと親のポリシーを結合した実際の結果が含まれます。

    name: projects/PROJECT_ID/policies/LIST_CONSTRAINT
    spec:
      rules:
        - values:
            deniedValues:
              - VALUE_A
              - VALUE_B
              - VALUE_C
    

v1 API

  1. describe コマンドで、リソースに対する現在のポリシーを取得します。

    gcloud resource-manager org-policies describe \
      LIST_CONSTRAINT --project PROJECT_ID
    

    ここで

    • PROJECT_ID はプロジェクトの一意の識別子です。

    • LIST_CONSTRAINT は、サービスに対して適用するリスト型制約です。

    ポリシーが設定されていないため、次の例のように、不完全なポリシーが返されます。

    constraint: "constraints/LIST_CONSTRAINT"
    etag: BwVJi0OOESU=
    
  2. 現在の有効なポリシーを表示するには、describe --effective コマンドを使用します。

    gcloud resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --project PROJECT_ID
    

    コマンドの出力には、組織リソースから継承された、拒否する値が含まれます。

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      deniedValues:
        - VALUE_A
    
  3. set-policy コマンドを使用して、プロジェクトにポリシーを設定します。

    1. ポリシーを保存する一時ファイル /tmp/policy.yaml を作成します。

      constraint: constraints/LIST_CONSTRAINT
      listPolicy:
        deniedValues:
          - VALUE_B
          - VALUE_C
        inheritFromParent: true
      
    2. set-policy コマンドを実行します。

      gcloud resource-manager org-policies set-policy \
        --project PROJECT_ID /tmp/policy.yaml
      
    3. コマンドの出力は次のようになります。

      constraint: constraints/LIST_CONSTRAINT
      etag: BwVLO2timxY=
      listPolicy:
        deniedValues:
          - VALUE_B
          - VALUE_C
        inheritFromParent: true
      
  4. describe --effective コマンドをもう一度使用して、更新されたポリシーを表示します。

    gcloud resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --project PROJECT_ID
    

    コマンドの出力には、リソースのポリシーと親のポリシーを結合した実際の結果が含まれます。

    constraint: constraints/LIST_CONSTRAINT
      listPolicy:
        deniedValues:
          - VALUE_A
          - VALUE_B
          - VALUE_C
    

組織のポリシーの変更を完全に適用するには、最大 15 分ほどかかる場合があります。

デフォルトの制約動作を復元する

reset コマンドを使用して、制約のデフォルトの動作が使用されるようにポリシーをリセットできます。使用可能なすべての制約とデフォルト値のリストについては、組織のポリシーの制約をご覧ください。次の例では、デフォルトの制約の動作が、すべての値を許可することであることを前提としています。

v2 API

  1. プロジェクトに実際に適用されているポリシーを取得して、現在結合されているポリシーを表示します。

    gcloud org-policies describe \
      LIST_CONSTRAINT --effective \
      --project=PROJECT_ID
    

    PROJECT_ID はプロジェクトの一意の識別子です。コマンドの出力は次のようになります。

    name: projects/PROJECT_ID/policies/LIST_CONSTRAINT
    spec:
      rules:
        - values:
          deniedValues:
            - VALUE_A
            - VALUE_B
            - VALUE_C
    
  2. reset コマンドを使用して組織ポリシーをリセットします。

    gcloud org-policies reset LIST_CONSTRAINT \
        --project=PROJECT_ID
    
  3. 有効なポリシーを取得して、デフォルトの動作を確認します。

    gcloud org-policies describe \
      LIST_CONSTRAINT --effective \
      --project=PROJECT_ID
    

    コマンドの出力では、すべての値が許可されています。

    name: projects/PROJECT_ID/policies/LIST_CONSTRAINT
    spec:
      rules:
        - allowAll: true
    

v1 API

  1. プロジェクトに実際に適用されているポリシーを取得して、現在結合されているポリシーを表示します。

    gcloud resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --project PROJECT_ID
    

    PROJECT_ID はプロジェクトの一意の識別子です。コマンドの出力は次のようになります。

    constraint: constraints/LIST_CONSTRAINT
      listPolicy:
        deniedValues:
          - VALUE_A
          - VALUE_B
          - VALUE_C
    
  2. set-policy コマンドを使用して、プロジェクトにポリシーを設定します。

    1. ポリシーを保存する一時ファイル /tmp/restore-policy.yaml を作成します。

      restoreDefault: {}
      constraint: constraints/LIST_CONSTRAINT
      
    2. set-policy コマンドを実行します。

      gcloud resource-manager org-policies set-policy \
        --project PROJECT_ID /tmp/restore-policy.yaml
      
    3. コマンドの出力は次のようになります。

      constraint: constraints/LIST_CONSTRAINT
      etag: BwVJi9D3VLY=
      restoreDefault: {}
      
  3. 有効なポリシーを取得して、デフォルトの動作を確認します。

    gcloud resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --project PROJECT_ID
    

    コマンドの出力では、すべての値が許可されています。

    Constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      allValues: ALLOW
    

組織のポリシーの変更を完全に適用するには、最大 15 分ほどかかる場合があります。

組織ポリシーを削除する

リソースから、組織ポリシーを削除することができます。組織ポリシーが設定されていないリソースは、親リソースのポリシーを継承します。組織リソース上の組織ポリシーを削除すると、制約のデフォルト動作が有効なポリシーとなります。

組織の組織のポリシーを削除する手順は以下のとおりです。

v2 API

  1. delete コマンドを使用して、組織リソース対するポリシーを削除します。

    gcloud org-policies delete \
      LIST_CONSTRAINT --organization=ORGANIZATION_ID
    

    ORGANIZATION_ID は、組織リソースの一意の識別子です。コマンドの出力は次のようになります。

    Deleted policy
    [organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT].
    {}
    
  2. 組織で有効なポリシーを取得し、ポリシーが適用されていないことを確認します。

    gcloud org-policies describe \
      LIST_CONSTRAINT --effective \
      --organization=ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT
    spec:
      rules:
        - allowAll: true
    

プロジェクトの組織のポリシーを削除する手順は以下のとおりです。

  1. delete コマンドを使用して、プロジェクトからポリシーを削除します。

    gcloud org-policies delete \
      LIST_CONSTRAINT --project=PROJECT_ID
    

    PROJECT_ID はプロジェクトの一意の識別子です。コマンドの出力は次のようになります。

    Deleted policy
    [projects/PROJECT_ID/policies/LIST_CONSTRAINT].
    {}
    
  2. プロジェクトで有効なポリシーを取得し、ポリシーが適用されていないことを確認します。

    gcloud org-policies describe \
      --effective \
      LIST_CONSTRAINT --project=PROJECT_ID
    

    コマンドの出力は次のようになります。

    name: projects/PROJECT_ID/policies/LIST_CONSTRAINT
    spec:
      rules:
        - allowAll: true
    

v1 API

  1. delete コマンドを使用して、組織リソース対するポリシーを削除します。

    gcloud resource-manager org-policies delete \
      LIST_CONSTRAINT --organization ORGANIZATION_ID
    

    ORGANIZATION_ID は、組織リソースの一意の識別子です。コマンドの出力は次のようになります。

    Deleted [<Empty>].
    
  2. 組織で有効なポリシーを取得し、ポリシーが適用されていないことを確認します。

    gcloud resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --organization ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      allValues: ALLOW
    

プロジェクトの組織のポリシーを削除する手順は以下のとおりです。

  1. delete コマンドを使用して、プロジェクトからポリシーを削除します。

    gcloud resource-manager org-policies delete \
      LIST_CONSTRAINT --project PROJECT_ID
    

    PROJECT_ID はプロジェクトの一意の識別子です。コマンドの出力は次のようになります。

    Deleted [<Empty>].
    
  2. プロジェクトで有効なポリシーを取得し、ポリシーが適用されていないことを確認します。

    gcloud resource-manager org-policies describe \
      --effective \
      LIST_CONSTRAINT --project PROJECT_ID
    

    コマンドの出力は次のようになります。

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      allValues: ALLOW
    

組織のポリシーの変更を完全に適用するには、最大 15 分ほどかかる場合があります。

組織ポリシーにブール型制約を使用する

組織リソースに対する適用を設定する

組織リソースに対してブール型の制約を適用する組織ポリシーを設定することができます。次のプロセスでは、Google Cloud CLI を使用して組織のポリシーを設定する方法について説明します。Google Cloud コンソールを使用して組織のポリシーを表示および設定する方法については、ポリシーの作成と管理をご覧ください。

v2 API

  1. describe コマンドを使用して、組織リソースに関する現在のポリシーを取得します。

    gcloud org-policies describe \
      BOOLEAN_CONSTRAINT --organization=ORGANIZATION_ID
    

    ORGANIZATION_ID は、組織リソースの一意の識別子です。さらに、--folder フラグまたは --project フラグ、フォルダ IDプロジェクト ID をそれぞれ使用して、フォルダやプロジェクトに対して組織のポリシーを適用することもできます。

    ポリシーが設定されていない場合は、次のような NOT_FOUND エラーが返されます。

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. set-policy コマンドを使用して、プロジェクトにポリシーを設定します。

    1. ポリシーを保存する一時ファイル /tmp/policy.yaml を作成します。

      name: organizations/ORGANIZATION_ID/policies/BOOLEAN_CONSTRAINT
      spec:
        rules:
          - enforce: true
      
    2. set-policy コマンドを実行します。

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. describe --effective を使用して現在の有効なポリシーを表示します。

    gcloud org-policies describe \
      BOOLEAN_CONSTRAINT --effective \
      --organization=ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    name: organizations/ORGANIZATION_ID/policies/BOOLEAN_POLICY
    spec:
      rules:
        - enforce: true
    

v1 API

  1. describe コマンドを使用して、組織リソースに関する現在のポリシーを取得します。

    gcloud resource-manager org-policies describe \
      BOOLEAN_CONSTRAINT --organization ORGANIZATION_ID
    

    ORGANIZATION_ID は、組織リソースの一意の識別子です。さらに、--folder フラグまたは --project フラグ、フォルダ IDプロジェクト ID をそれぞれ使用して、フォルダやプロジェクトに対して組織のポリシーを適用することもできます。

    ポリシーが設定されていないため、次の例のように、不完全なポリシーが返されます。

    booleanPolicy: {}
    constraint: "constraints/BOOLEAN_CONSTRAINT"
    
  2. enable-enforce コマンドを使用して、組織に適用するポリシーを設定します。

    gcloud resource-manager org-policies enable-enforce \
      BOOLEAN_CONSTRAINT --organization ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    booleanPolicy:
      enforced: true
    constraint: constraints/BOOLEAN_CONSTRAINT
    etag: BwVJitxdiwY=
    
  3. describe --effective を使用して現在の有効なポリシーを表示します。

    gcloud resource-manager org-policies describe \
      BOOLEAN_CONSTRAINT --effective \
      --organization ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    booleanPolicy:
      enforced: true
    constraint: constraints/BOOLEAN_CONSTRAINT
    

組織のポリシーの変更を完全に適用するには、最大 15 分ほどかかる場合があります。

プロジェクトの組織ポリシーをオーバーライドする

プロジェクトの組織ポリシーをオーバーライドするには、プロジェクトの下の階層にあるすべてのリソースに対してブール型制約の適用を無効にするポリシーを設定します。

v2 API

  1. リソースの現在のポリシーを取得し、このポリシーが空であることを確認します。

    gcloud org-policies describe \
      BOOLEAN_CONSTRAINT --project=PROJECT_ID
    

    PROJECT_ID はプロジェクトの一意の識別子です。コマンドの出力は次のようになります。

    ポリシーが設定されていない場合は、次のような NOT_FOUND エラーが返されます。

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. プロジェクトで有効なポリシーを取得します。制約がこのプロジェクトに適用されていることがわかります。

    gcloud org-policies describe \
      BOOLEAN_CONSTRAINT --effective \
      --project=PROJECT_ID
    

    コマンドの出力は次のようになります。

    name: projects/PROJECT_ID/policies/BOOLEAN_POLICY
    spec:
      rules:
        - enforce: true
    
  3. set-policy コマンドを使用して、プロジェクトにポリシーを設定します。

    1. ポリシーを保存する一時ファイル /tmp/policy.yaml を作成します。

      name: projects/PROJECT_ID/policies/BOOLEAN_CONSTRAINT
      spec:
        rules:
          - enforce: false
      
    2. set-policy コマンドを実行します。

      gcloud org-policies set-policy /tmp/policy.yaml
      
  4. 有効なポリシーを取得して、ポリシーがプロジェクトに適用されていないことを確認します。

    gcloud org-policies describe \
      --effective \
      BOOLEAN_CONSTRAINT --project=PROJECT_ID
    

    コマンドの出力は次のようになります。

    name: organizations/ORGANIZATION_ID/policies/BOOLEAN_POLICY
    spec:
      rules:
        - enforce: false
    

v1 API

  1. リソースの現在のポリシーを取得し、このポリシーが空であることを確認します。

    gcloud resource-manager org-policies describe \
      BOOLEAN_CONSTRAINT --project PROJECT_ID
    

    PROJECT_ID はプロジェクトの一意の識別子です。コマンドの出力は次のようになります。

    booleanPolicy: {}
    constraint: "constraints/BOOLEAN_CONSTRAINT"
    
  2. プロジェクトで有効なポリシーを取得します。制約がこのプロジェクトに適用されていることがわかります。

    gcloud resource-manager org-policies describe \
      BOOLEAN_CONSTRAINT --effective \
      --project PROJECT_ID
    

    コマンドの出力は次のようになります。

    booleanPolicy:
      enforced: true
    constraint: constraints/BOOLEAN_CONSTRAINT
    
  3. disable-enforce コマンドを使用して、プロジェクトに制約を適用しないようにポリシーを設定します。

    gcloud resource-manager org-policies disable-enforce \
      BOOLEAN_CONSTRAINT --project PROJECT_ID
    

    コマンドの出力は次のようになります。

    booleanPolicy: {}
    constraint: constraints/BOOLEAN_CONSTRAINT
    etag: BwVJivdnXvM=
    
  4. 有効なポリシーを取得して、ポリシーがプロジェクトに適用されていないことを確認します。

    gcloud resource-manager org-policies describe \
      --effective \
      BOOLEAN_CONSTRAINT --project PROJECT_ID
    

    コマンドの出力は次のようになります。

    booleanPolicy: {}
    constraint: constraints/BOOLEAN_CONSTRAINT
    

組織のポリシーの変更を完全に適用するには、最大 15 分ほどかかる場合があります。

組織ポリシーを削除する

リソースから、組織ポリシーを削除することができます。組織ポリシーが設定されていないリソースは、親リソースのポリシーを継承します。組織リソース上の組織ポリシーを削除すると、制約のデフォルト動作が有効なポリシーとなります。

組織とプロジェクトの組織のポリシーを削除する手順は以下のとおりです。

v2 API

  1. delete コマンドを使用して、組織リソースからポリシーを削除します。

    gcloud org-policies delete \
      BOOLEAN_CONSTRAINT --organization=ORGANIZATION_ID
    

    ORGANIZATION_ID は、組織リソースの一意の識別子です。コマンドの出力は次のようになります。

    Deleted policy
    [organizations/ORGANIZATION_ID/policies/BOOLEAN_CONSTRAINT].
    {}
    
  2. 組織で有効なポリシーを取得し、ポリシーが適用されていないことを確認します。

    gcloud org-policies describe \
      --effective \
      BOOLEAN_CONSTRAINT --organization=ORGANIZATION_ID
    

    ポリシーが設定されていない場合は、次のような NOT_FOUND エラーが返されます。

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  3. delete コマンドを使用して、プロジェクトから組織のポリシーを削除します。

    gcloud org-policies delete \
      BOOLEAN_CONSTRAINT --project=PROJECT_ID
    

    コマンドの出力は次のようになります。

    Deleted policy
    [organizations/ORGANIZATION_ID/policies/BOOLEAN_CONSTRAINT].
    {}
    
  4. プロジェクトで有効なポリシーを取得し、ポリシーが適用されていないことを確認します。

    gcloud org-policies describe \
      BOOLEAN_CONSTRAINT --effective \
      --project=PROJECT_ID
    

    PROJECT_ID は、プロジェクトの一意の識別子です。コマンドの出力は次のようになります。

    ポリシーが設定されていない場合は、次のような NOT_FOUND エラーが返されます。

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    

v1 API

  1. delete コマンドを使用して、組織リソースからポリシーを削除します。

    gcloud resource-manager org-policies delete \
      BOOLEAN_CONSTRAINT --organization ORGANIZATION_ID
    

    ORGANIZATION_ID は、組織リソースの一意の識別子です。コマンドの出力は次のようになります。

    Deleted [<Empty>].
    
  2. 組織で有効なポリシーを取得し、ポリシーが適用されていないことを確認します。

    gcloud resource-manager org-policies describe \
      --effective \
      BOOLEAN_CONSTRAINT --organization ORGANIZATION_ID
    

    コマンドの出力は次のようになります。

    booleanPolicy: {}
    constraint: constraints/BOOLEAN_CONSTRAINT
    
  3. delete コマンドを使用して、プロジェクトから組織のポリシーを削除します。

    gcloud resource-manager org-policies delete \
      BOOLEAN_CONSTRAINT --project PROJECT_ID
    

    コマンドの出力は次のようになります。

    Deleted [<Empty>].
    
  4. プロジェクトで有効なポリシーを取得し、ポリシーが適用されていないことを確認します。

    gcloud resource-manager org-policies describe \
      BOOLEAN_CONSTRAINT --effective \
      --project PROJECT_ID
    

    PROJECT_ID は、プロジェクトの一意の識別子です。コマンドの出力は次のようになります。

    booleanPolicy: {}
    constraint: constraints/BOOLEAN_CONSTRAINT
    

組織のポリシーの変更を完全に適用するには、最大 15 分ほどかかる場合があります。