制約の使用

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

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

始める前に

組織ポリシー管理者を追加する

ユーザーを組織ポリシー管理者として追加するには、組織管理者の役割が必要です。

Console

組織ポリシー管理者を追加するには:

  1. G Suite または Cloud Identity の特権管理者として Google Cloud Platform Console にログインし、[リソースを管理] ページに移動します。

    [リソースの管理] ページに移動

  2. [組織] プルダウン リストで組織を選択します。

  3. 表示されるリソースのリストで、組織リソースの横にあるチェックボックスをオンにします。

  4. [情報パネル] の右側にある [権限] で、追加するメンバーのメールアドレスを入力します。

  5. [役割の選択] プルダウン リストで、[組織ポリシー] > [組織ポリシー管理者] の順に選択します。

  6. [追加] をクリックします。ダイアログが開き、メンバーの新しい役割の追加または更新が確認されます。

gcloud

gcloud コマンドで JSON ファイルまたは YAML ファイルを使用できます。この例では JSON を使用します。

組織ポリシー管理者を組織に追加するには:

  1. 変更する Cloud IAM ポリシーを取得し、次のように JSON ファイルに書き込みます。
      gcloud projects get-iam-policy PROJECT_ID --format json >
         iam.json
      
  2. JSON ファイルの内容は次のようになります。version フィールドは読み取り専用であるため、これを指定する必要はありません。

  3.    {
           "bindings": [
           {
               "members": [
                 "user:email1@gmail.com"
               ],
               "role": "roles/owner"
           },
           {
               "members": [
                 "serviceAccount:our-project-123@appspot.gserviceaccount.com",
                 "serviceAccount:123456789012-compute@developer.gserviceaccount.com"
               ],
               "role": "roles/editor"
           }
           ],
           "etag": "BwUjMhCsNvY=",
           "version": 1
       }
       
  4. テキスト エディタを使用して、グループのメンバーとメンバーの役割を定義する bindings 配列に新しいオブジェクトを追加します。たとえば、役割 roles/orgpolicy.policyAdmin をユーザー email2@gmail.com に付与するには、上記の例を次のように変更します。

  5.    {
         "bindings": [
         {
           "members": [
             "user:email1@gmail.com"
           ],
         "role": "roles/owner"
         },
         {
           "members": [
             "serviceAccount:our-project-123@appspot.gserviceaccount.com",
             "serviceAccount:123456789012-compute@developer.gserviceaccount.com"
           ],
           "role": "roles/editor"
         },
         {
           "members": [
             "user:email2@gmail.com"
           ],
           "role": "roles/orgpolicy.policyAdmin"
         }
         ],
         "etag": "BwUjMhCsNvY="
       }
       
  6. 次のコマンドを実行して、プロジェクトのポリシーを更新します。

  7.    gcloud projects set-iam-policy PROJECT_ID iam.json
       
  8. コマンドから更新したポリシーが出力されます。
       bindings:
         - members:
           - user:email1@gmail.com
             role: roles/owner
         - members:
           - serviceAccount:our-project-123@appspot.gserviceaccount.com
           - serviceAccount:123456789012-compute@developer.gserviceaccount.com
             role: roles/editor
         - members:
           - user:email2@gmail.com
             role: roles/orgpolicy.policyAdmin
         etag: BwUjMhXbSPU=
         version: 1
       

組織ポリシーでリスト型制約を使用する

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

特定のサービスへのアクセスを拒否するために、組織リソースに対して、リスト型制約を使用する組織ポリシーを設定できます。

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

    gcloud beta 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 コマンドを使用して、アクセスを制限するサービスについて、拒否する値を追加します。

    gcloud beta 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 beta resource-manager org-policies describe \
      LIST_CONSTRAINT --effective \
      --organization ORGANIZATION_ID
    

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

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      deniedValues:
        - VALUE_A
    

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

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

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

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

階層サブツリーの値の接頭辞はベータ版の機能で、下位互換性のない方法で変更される可能性があり、SLA または非推奨ポリシーの対象ではありません。

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

    gcloud beta 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 beta 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 beta 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)を拒否するように評価します。

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

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

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

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

    ここで:

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

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

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

    constraint: "constraints/LIST_CONSTRAINT"
    etag: BwVJi0OOESU=
    

  2. describe --effective コマンドを使用して、現在有効なポリシーを表示します。

    gcloud beta 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 beta resource-manager org-policies set-policy \
         --project PROJECT_ID /tmp/policy.yaml
       

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

       constraint: constraints/LIST_CONSTRAINT
       etag: BwVLO2timxY=
       listPolicy:
         deniedValues:
           - VALUE_B
           - VALUE_C
         inheritFromParent: true
       

  4. describe --effective コマンドを再度使用して、更新されたポリシーを表示します。

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

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

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

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

組織ポリシーで restoreDefault 値を使用すると、ポリシーをリセットし、フォルトの制約動作を使用させることができます。次の例では、デフォルトの制約動作ですべての値を許可するものと仮定しています。

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

    gcloud beta 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 beta resource-manager org-policies set-policy \
         --project PROJECT_ID /tmp/restore-policy.yaml
       

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

       constraint: constraints/LIST_CONSTRAINT
       etag: BwVJi9D3VLY=
       restoreDefault: {}
       

  3. 有効なポリシーを取得して、デフォルトの動作を確認します。

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

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

    Constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      allValues: ALLOW
    

組織ポリシーを削除する

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

以下の手順は、組織の組織ポリシーを削除する方法です。

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

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

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

    Deleted [<Empty>].
    

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

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

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

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      allValues: ALLOW
    

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

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

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

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

    Deleted [<Empty>].
    

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

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

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

    constraint: constraints/LIST_CONSTRAINT
    listPolicy:
      allValues: ALLOW
    

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

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

組織リソースで組織ポリシーを設定し、ブール型制約を適用できます。

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

    gcloud beta 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 beta resource-manager org-policies describe \
      BOOLEAN_CONSTRAINT --effective \
      --organization ORGANIZATION_ID
    

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

    booleanPolicy:
      enforced: true
    constraint: constraints/BOOLEAN_CONSTRAINT
    

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

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

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

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

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

    booleanPolicy: {}
    constraint: "constraints/BOOLEAN_CONSTRAINT"
    

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

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

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

    booleanPolicy:
      enforced: true
    constraint: constraints/BOOLEAN_CONSTRAINT
    

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

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

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

    booleanPolicy: {}
    constraint: constraints/BOOLEAN_CONSTRAINT
    etag: BwVJivdnXvM=
    

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

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

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

    booleanPolicy: {}
    constraint: constraints/BOOLEAN_CONSTRAINT
    

組織ポリシーを削除する

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

次の手順は、組織とプロジェクトの組織ポリシーを削除する方法です。

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

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

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

    Deleted [<Empty>].
    

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

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

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

    booleanPolicy: {}
    constraint: constraints/BOOLEAN_CONSTRAINT
    

  3. delete コマンドで、プロジェクトから組織ポリシーを削除します。

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

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

    Deleted [<Empty>].
    

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

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

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

    booleanPolicy: {}
    constraint: constraints/BOOLEAN_CONSTRAINT
    

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Resource Manager のドキュメント