コンシューマー ポリシーを管理する

階層型サービスのアクティベーションを使用すると、 Google Cloud リソース階層を介して継承されるサービスの有効化を管理できます。詳細については、概要をご覧ください。

ConsumerPolicy は、Google Cloud リソース階層の各レベルにある Service Usage API リソースです。このリソースは常に default という名前で、有効にするサービスを定義する enableRules が含まれています。特定のサービスを有効または無効にするのではなく、ConsumerPolicy リソースを変更できます。サービス名がリストにある場合、その階層レベルでサービスが有効になります。

このドキュメントでは、Google Cloud CLI を使用してプロジェクト、フォルダ、組織のコンシューマー ポリシーを管理する方法について説明します。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  7. Verify that billing is enabled for your Google Cloud project.

  8. Enable the Service Usage API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable serviceusage.googleapis.com
  9. Install the Google Cloud CLI.

  10. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  11. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  12. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  13. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  14. Verify that billing is enabled for your Google Cloud project.

  15. Enable the Service Usage API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable serviceusage.googleapis.com
  16. 管理する Google Cloud リソースを指定しない場合、このドキュメントのコマンドはデフォルトで現在のプロジェクトになります。たとえば、gcloud beta services policies get --policy-name=default は現在のプロジェクトのコンシューマー ポリシーを返します。

    現在のプロジェクト ID を取得できます。

    gcloud config list --format='text(core.project)'
  17. 必要なロール

    コンシューマー ポリシーを管理するために必要な権限を取得するには、ターゲット リソースに対するサービス使用管理者 roles/serviceusage.serviceUsageAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

    この事前定義ロールには、コンシューマー ポリシーの管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    コンシューマー ポリシーを管理するには、次の権限が必要です。

    • コンシューマー ポリシーを取得する: serviceusage.consumerpolicy.get
    • コンシューマー ポリシーを更新します。
      • serviceusage.consumerpolicy.analyze
      • serviceusage.consumerpolicy.update
    • 有効なポリシーを取得します。 serviceusage.effectivepolicy.get
    • サービスが有効になっているかどうかを確認します。 serviceusage.values.test

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

    コンシューマー ポリシーを取得する

    gcloud beta services policies get コマンドを使用すると、プロジェクト、フォルダ、組織の ConsumerPolicy を取得できます。

    このコマンドは、そのリソースレベルで設定された enableRules を返します。継承されたルールは返しません。継承されたルールを含むより完全なビューを表示するには、有効なポリシーを取得します。default ポリシー名のみがサポートされています。

    プロジェクト

    gcloud beta services policies get --policy-name=default \
        --project=PROJECT_ID \
        --output-file=OUTPUT_FILE
    

    次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクト ID。または、フラグを省略して、デフォルトで現在のプロジェクトを使用します。
    • OUTPUT_FILE: (省略可)コンシューマー ポリシーの内容を保存できる出力ファイルのパス。サポートされているファイル形式は JSON と YAML です。

    フォルダ

    gcloud beta services policies get --policy-name=default \
        --folder=FOLDER_ID \
        --output-file=OUTPUT_FILE
    

    次のように置き換えます。

    • FOLDER_ID: 実際の Google Cloud フォルダ ID
    • OUTPUT_FILE: (省略可)コンシューマー ポリシーの内容を保存できる出力ファイルのパス。サポートされているファイル形式は JSON と YAML です。

    組織

    gcloud beta services policies get --policy-name=default \
        --organization=ORGANIZATION_ID \
        --output-file=OUTPUT_FILE
    

    次のように置き換えます。

    • ORGANIZATION_ID: Google Cloud 組織リソース ID
    • OUTPUT_FILE: (省略可)コンシューマー ポリシーの内容を保存できる出力ファイルのパス。サポートされているファイル形式は JSON と YAML です。

    コンシューマー ポリシーを更新する

    ConsumerPolicy は、gcloud beta services policies update コマンドを使用して更新できます。これにより、現在のポリシーを置き換え、YAML ファイルを使用して有効になっている多くのサービスを一度に更新できます。

    このコマンドでは、サービス依存関係は自動的に有効になりません。入力ファイルで、すべてのサービス依存関係を明示的にリストする必要があります。--validate-only フラグを使用すると、変更を適用する前にプレビューできます。

    gcloud beta services policies update --consumer-policy-file=PATH_TO_CONSUMER_POLICY
    

    PATH_TO_CONSUMER_POLICY は、コンシューマー ポリシーを含む YAML ファイルのパスに置き換えます。次に例を示します。

    gcloud beta services policies update --consumer-policy-file=/path/to/the/file.yaml

    サポートされているフラグ:

    • --bypass-api-usage-check を使用して使用状況のチェックをバイパスします。それ以外の場合、無効にするサービスが過去 30 日間に使用されたか、過去 3 日間に有効にされた場合、システムはエラーを返します。

    • --bypass-dependency-check - 依存関係のチェックをバイパスします。サービスを追加する場合は、すべてのサービス依存関係がポリシーに存在している必要があります。サービスを削除する場合、ポリシー内の他のサービスがそのサービスに依存することはできません。それ以外の場合、更新は成功せず、エラーが返されます。

    • --validate-only: 実際にオペレーションを実行せずに更新を検証します。

    次の点にご注意ください。

    • ポリシー ファイルの YAML テンプレートを取得するには、まずコンシューマー ポリシーを取得し、--output-file フラグを使用してポリシーをファイルに保存します。次に、このファイルを変更して、更新コマンドの入力として使用します。サンプル テンプレート:

      name: projects/PROJECT_ID/consumerPolicies/default
      enableRules:
        services:
          - services/SERVICE
          - ...
          - ...
      

      次のように置き換えます。

      • PROJECT_ID: Google Cloud プロジェクト ID。他のサポートされているリソース名も同様の形式になります(例: folders/FOLDER_ID/consumerPolicies/default)。

      • SERVICE: サービスの名前(例: bigquery.googleapis.com)。

    有効なポリシーを取得する

    リソースの有効なポリシーを取得するには、gcloud beta services policies get-effective コマンドを使用します。

    有効なポリシーは、リソースの ConsumerPolicy とそのすべての祖先のポリシーを組み合わせたものです。これにより、リソースで直接有効になっているサービスと、その祖先から継承されたサービスを含む、有効になっているすべてのサービスを完全に把握できます。

    プロジェクト

    gcloud beta services policies get-effective --project=PROJECT_ID \
        --view=VIEW
    

    次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクト ID。または、フラグを省略して、デフォルトで現在のプロジェクトを使用します。
    • VIEW: メタデータの限定セットを取得する場合は BASIC、階層内で各サービスが有効になっている場所など、メタデータの完全なセットを取得する場合は FULL。デフォルトは BASIC です。

    フォルダ

    gcloud beta services policies get-effective --folder=FOLDER_ID \
        --view=VIEW
    

    次のように置き換えます。

    • FOLDER_ID: 実際の Google Cloud フォルダ ID
    • VIEW: メタデータの限定セットを取得する場合は BASIC、階層内で各サービスが有効になっている場所など、メタデータの完全なセットを取得する場合は FULL。デフォルトは BASIC です。

    組織

    gcloud beta services policies get-effective --organization=ORGANIZATION_ID \
        --view=VIEW
    

    次のように置き換えます。

    • ORGANIZATION_ID: Google Cloud 組織リソース ID
    • VIEW: メタデータの限定セットを取得する場合は BASIC、階層内で各サービスが有効になっている場所など、メタデータの完全なセットを取得する場合は FULL。デフォルトは BASIC です。

    サービスが有効になっているかどうかを確認する

    gcloud beta services policies test-enabled コマンドを使用して、リソースでサービスが有効になっているかどうかを確認できます。

    このコマンドは、サービスのステータスを確認するときに、有効なポリシーと完全な Google Cloud リソース階層を考慮します。

    プロジェクト

    gcloud beta services policies test-enabled SERVICE \
        --project=PROJECT_ID
    

    次のように置き換えます。

    • SERVICE: 確認するサービスの名前。
    • PROJECT_ID: Google Cloud プロジェクト ID。または、フラグを省略して、デフォルトで現在のプロジェクトを使用します。

    フォルダ

    gcloud beta services policies test-enabled SERVICE \
        --folder=FOLDER_ID
    

    次のように置き換えます。

    組織

    gcloud beta services policies test-enabled SERVICE \
        --organization=ORGANIZATION_ID
    

    次のように置き換えます。

    コンシューマ ポリシーの取得

    • 現在のプロジェクトのコンシューマー ポリシーを取得しています。
      gcloud beta services policies get

      出力:

      name: projects/PROJECT_ID/consumerPolicies/default
      enableRules:
       services:
        - services/apikeys.googleapis.com
        - services/compute.googleapis.com
        - services/oslogin.googleapis.com
        - services/serviceusage.googleapis.com
      updateTime: 2025-09-11T23:05:22.758394Z
      createTime: 2025-01-31T20:17:37.272343Z
      etag: W/"W9nsVJK0V1m7ee7tM7pFDg=="

    コンシューマー ポリシーの更新

    • コンシューマ ポリシーを正常に更新しました。
      gcloud beta services policies update --consumer-policy-file=/tmp/test.yaml

      出力:

      Operation [operations/ucpat.p39-581601899707-86fe7e37-c7f9-4624-90c4-d54754d57eed] complete. Result: {
          "@type":"type.googleapis.com/google.api.serviceusage.v2beta.ConsumerPolicy",
          "createTime":"1970-01-01T00:00:00Z",
          "enableRules":[
              {
                  "services":[
                      "services/apikeys.googleapis.com"
                  ]
              }
          ],
          "name":"projects/PROJECT_ID/consumerPolicies/default",
          "updateTime":"1970-01-01T00:00:00Z"
      }
    • コンシューマ ポリシーの更新に失敗しました。
      gcloud beta services policies update --consumer-policy-file=/tmp/test.json

      エラー メッセージ:

      ERROR: (gcloud.beta.services.policies.update) Invalid consumer_policy_file format. Please provide path to a yaml file.
    • サービスが最近使用または有効になっている場合に、ユーザー ポリシーを更新しようとしています。
      gcloud beta services policies update --consumer-policy-file=/tmp/test.yaml

      出力:

      The operation "operations/ucpat.p39-581601899707-4884bdb0-d899-49ac-9c83-38457950ef33" resulted in a failure "The services apikeys.googleapis.com have usage in the last 30 days or were enabled in the past 3 days. Please specify force if you want to proceed with the destructive policy change. Help Token: AVSZLmtCfGwMm4oHmOyExdDEFRQ0pFiBrl879nbZlY2JkfVzeU63u66ApXYr6MIEAoig..."
    • サービスが最近使用または有効化されたときに、使用状況チェックをバイパスしてコンシューマー ポリシーを更新します。
      gcloud beta services policies update --consumer-policy-file=/tmp/test.yaml --bypass-api-usage-check

      出力:

      Operation [operations/ucpat.p39-581601899707-8ffda670-ed04-4776-8d43-d2f8e1817e00] complete. Result: {
          "@type":"type.googleapis.com/google.api.serviceusage.v2beta.ConsumerPolicy",
          "createTime":"1970-01-01T00:00:00Z",
          "enableRules":[
              {
                  "services":[
                      "services/serviceusage.googleapis.com"
                  ]
              }
          ],
          "name":"projects/PROJECT_ID/consumerPolicies/default",
          "updateTime":"1970-01-01T00:00:00Z"
      }

    有効なポリシーの取得

    • 現在のプロジェクトの有効なポリシーの BASIC ビューを取得します。
      gcloud beta services policies get-effective

      出力:

      EnabledRules:
       Services:
        -   services/apikeys.googleapis.com
        -   services/compute.googleapis.com
        -   services/computescanning.googleapis.com
        -   services/containeranalysis.googleapis.com
        -   services/containerscanning.googleapis.com
        -   services/gkebackup.googleapis.com
        -   services/osconfig.googleapis.com
        -   services/oslogin.googleapis.com
        -   services/serviceusage.googleapis.com
    • 現在のプロジェクトの有効なポリシーの FULL ビューを取得します。
      gcloud beta services policies get-effective --view=FULL

      出力:

      EnabledRules:
       Services:
        -   services/apikeys.googleapis.com
        -   services/compute.googleapis.com
        -   services/computescanning.googleapis.com
        -   services/containeranalysis.googleapis.com
        -   services/containerscanning.googleapis.com
        -   services/gkebackup.googleapis.com
        -   services/osconfig.googleapis.com
        -   services/oslogin.googleapis.com
        -   services/serviceusage.googleapis.com
      
      Metadata of effective policy:
      EnabledService: services/apikeys.googleapis.com
      EnabledPolicies: ['projects/PROJECT_ID/consumerPolicies/default']
      
      EnabledService: services/bcidcloudenforcer-pa.googleapis.com
      EnabledPolicies: ['folders/FOLDER_ID/consumerPolicies/default']
      
      EnabledService: services/compute.googleapis.com
      EnabledPolicies: ['projects/PROJECT_ID/consumerPolicies/default']
      ...

    サービスが有効になっているかどうかを確認する

    • 現在のプロジェクトで有効になっている API キーサービスのステータスを確認しています。
      gcloud beta services policies test-enabled apikeys.googleapis.com

      出力:

      Service apikeys.googleapis.com is ENABLED for resource projects/test-project Hierarchical Service Activation.
    • 現在のプロジェクトで無効になっている App Hub サービスのステータスを確認します。
      gcloud beta services policies test-enabled apphub.googleapis.com

      出力:

      Service apphub.googleapis.com is NOT ENABLED for resource projects/test-project Hierarchical Service Activation.

    次のステップ