コンシューマー ポリシーを管理する
階層型サービスのアクティベーションを使用すると、 Google Cloud リソース階層を介して継承されるサービスの有効化を管理できます。詳細については、概要をご覧ください。
ConsumerPolicy は、Google Cloud リソース階層の各レベルにある Service Usage API リソースです。このリソースは常に default という名前で、有効にするサービスを定義する enableRules が含まれています。特定のサービスを有効または無効にするのではなく、ConsumerPolicy リソースを変更できます。サービス名がリストにある場合、その階層レベルでサービスが有効になります。
このドキュメントでは、Google Cloud CLI を使用してプロジェクト、フォルダ、組織のコンシューマー ポリシーを管理する方法について説明します。
始める前に
- 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.
-
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
-
このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable serviceusage.googleapis.com
-
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init -
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
-
このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable serviceusage.googleapis.com
- 管理する Google Cloud リソースを指定しない場合、このドキュメントのコマンドはデフォルトで現在のプロジェクトになります。たとえば、
gcloud beta services policies get --policy-name=defaultは現在のプロジェクトのコンシューマー ポリシーを返します。現在のプロジェクト ID を取得できます。
gcloud config list --format='text(core.project)'
-
コンシューマー ポリシーを取得する:
serviceusage.consumerpolicy.get -
コンシューマー ポリシーを更新します。
-
serviceusage.consumerpolicy.analyze -
serviceusage.consumerpolicy.update
-
-
有効なポリシーを取得します。
serviceusage.effectivepolicy.get -
サービスが有効になっているかどうかを確認します。
serviceusage.values.test PROJECT_ID: Google Cloud プロジェクト ID。または、フラグを省略して、デフォルトで現在のプロジェクトを使用します。OUTPUT_FILE: (省略可)コンシューマー ポリシーの内容を保存できる出力ファイルのパス。サポートされているファイル形式は JSON と YAML です。FOLDER_ID: 実際の Google Cloud フォルダ ID。OUTPUT_FILE: (省略可)コンシューマー ポリシーの内容を保存できる出力ファイルのパス。サポートされているファイル形式は JSON と YAML です。ORGANIZATION_ID: Google Cloud 組織リソース ID。OUTPUT_FILE: (省略可)コンシューマー ポリシーの内容を保存できる出力ファイルのパス。サポートされているファイル形式は JSON と 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)。
PROJECT_ID: Google Cloud プロジェクト ID。または、フラグを省略して、デフォルトで現在のプロジェクトを使用します。VIEW: メタデータの限定セットを取得する場合はBASIC、階層内で各サービスが有効になっている場所など、メタデータの完全なセットを取得する場合はFULL。デフォルトはBASICです。FOLDER_ID: 実際の Google Cloud フォルダ ID。VIEW: メタデータの限定セットを取得する場合はBASIC、階層内で各サービスが有効になっている場所など、メタデータの完全なセットを取得する場合はFULL。デフォルトはBASICです。ORGANIZATION_ID: Google Cloud 組織リソース ID。VIEW: メタデータの限定セットを取得する場合はBASIC、階層内で各サービスが有効になっている場所など、メタデータの完全なセットを取得する場合はFULL。デフォルトはBASICです。SERVICE: 確認するサービスの名前。PROJECT_ID: Google Cloud プロジェクト ID。または、フラグを省略して、デフォルトで現在のプロジェクトを使用します。SERVICE: 確認するサービスの名前。FOLDER_ID: 実際の Google Cloud フォルダ ID。SERVICE: 確認するサービスの名前。ORGANIZATION_ID: Google Cloud 組織リソース 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. - サービスを有効または無効にするには、サービスの有効化を管理するをご覧ください。
- サービス依存関係を検査するには、サービス依存関係を一覧表示するをご覧ください。
必要なロール
コンシューマー ポリシーを管理するために必要な権限を取得するには、ターゲット リソースに対するサービス使用管理者 (roles/serviceusage.serviceUsageAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、コンシューマー ポリシーの管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
コンシューマー ポリシーを管理するには、次の権限が必要です。
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
コンシューマー ポリシーを取得する
gcloud beta services policies get コマンドを使用すると、プロジェクト、フォルダ、組織の ConsumerPolicy を取得できます。
このコマンドは、そのリソースレベルで設定された enableRules を返します。継承されたルールは返しません。継承されたルールを含むより完全なビューを表示するには、有効なポリシーを取得します。default ポリシー名のみがサポートされています。
プロジェクト
gcloud beta services policies get --policy-name=default \
--project=PROJECT_ID \
--output-file=OUTPUT_FILE
次のように置き換えます。
フォルダ
gcloud beta services policies get --policy-name=default \
--folder=FOLDER_ID \
--output-file=OUTPUT_FILE
次のように置き換えます。
組織
gcloud beta services policies get --policy-name=default \
--organization=ORGANIZATION_ID \
--output-file=OUTPUT_FILE
次のように置き換えます。
コンシューマー ポリシーを更新する
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
サポートされているフラグ:
次の点にご注意ください。
有効なポリシーを取得する
リソースの有効なポリシーを取得するには、gcloud beta services policies get-effective コマンドを使用します。
有効なポリシーは、リソースの ConsumerPolicy とそのすべての祖先のポリシーを組み合わせたものです。これにより、リソースで直接有効になっているサービスと、その祖先から継承されたサービスを含む、有効になっているすべてのサービスを完全に把握できます。
プロジェクト
gcloud beta services policies get-effective --project=PROJECT_ID \
--view=VIEW
次のように置き換えます。
フォルダ
gcloud beta services policies get-effective --folder=FOLDER_ID \
--view=VIEW
次のように置き換えます。
組織
gcloud beta services policies get-effective --organization=ORGANIZATION_ID \
--view=VIEW
次のように置き換えます。
サービスが有効になっているかどうかを確認する
gcloud beta services policies test-enabled コマンドを使用して、リソースでサービスが有効になっているかどうかを確認できます。
このコマンドは、サービスのステータスを確認するときに、有効なポリシーと完全な Google Cloud リソース階層を考慮します。
プロジェクト
gcloud beta services policies test-enabled SERVICE \
--project=PROJECT_ID
次のように置き換えます。
フォルダ
gcloud beta services policies test-enabled SERVICE \
--folder=FOLDER_ID
次のように置き換えます。
組織
gcloud beta services policies test-enabled SERVICE \
--organization=ORGANIZATION_ID
次のように置き換えます。