リソース使用量の制限

このページでは、企業管理者が Google Cloud のリソース階層内で使用できる Google Cloud サービスを制御するための、リソース サービスの使用を制限する組織のポリシーの制約の概要を説明します。制約は、組織、フォルダ、またはプロジェクトのリソースの直接の子孫となるリソースがあるサービスにのみ適用されます。Compute Engine や Cloud Storage などが該当します。

リソース サービスの使用を制限する制約は、Identity and Access Management(IAM)、Cloud Logging、Cloud Monitoring などの Google Cloud プロダクトに不可欠な依存関係である特定のサービスを除外し、これらは機能しません。この制約でサポートされるクラウド リソース サービスの一覧については、リソース使用量の制限をサポートしているサービスをご覧ください。

管理者は、この制約を使用して、リソース コンテナ(組織、フォルダ、プロジェクトなど)内の許された Google Cloud リソース サービスに階層的な制限を定義できます。たとえば、プロジェクト X 内では storage.googleapis.com を許可し、フォルダ Y 内では compute.googleapis.com を拒否します。

[リソース サービスの使用を制限する] 制約は、次の 2 つの排他的な方法で使用できます。

  • 拒否リスト - 拒否されていないサービスのリソースは許可されます。

  • 許可リスト - 許可されていないサービスのリソースは拒否されます。

[リソース サービスの使用を制限する] 制約は、すべての対象リソースへのランタイム アクセスを制御します。この制約を含む組織ポリシーが更新されると、ポリシーのスコープ内のすべてのリソースへのすべてのアクセスに結果整合性が適用されます。

管理者は、この制約を含む組織のポリシーの更新を慎重に管理することをおすすめします。タグを使用して条件付きで制約を適用することで、このポリシーの変更をより安全にロールアウトできます。詳細については、タグ付きの組織のポリシーの設定をご覧ください。

このポリシーでサービスが制限される場合、制限付きサービスとの直接的な依存関係がある一部の Google Cloud サービスも制限されます。これは、同じお客様のリソースを管理するサービスにのみ適用されます。たとえば、Google Kubernetes Engine(GKE)には Compute Engine との依存関係があります。Compute Engine が制限されると、GKE も制限されます。

リソース サービスの使用を制限する制約の使用

組織のポリシーの制約は、組織レベル、フォルダレベル、プロジェクト レベルで設定できます。各ポリシーは、対応するリソース階層内のすべてのリソースに適用されますが、リソース階層の下位レベルでオーバーライドできます。

ポリシー評価の詳細については、階層評価を理解するをご覧ください。

組織ポリシーの設定

組織ポリシーの設定、変更、削除を行うには、組織ポリシー管理者のロールが必要です。

Console

リソース サービスの使用を制限する 制約を含む組織のポリシーを設定するには、次のようにします。

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

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

  2. プロジェクト選択ツールから、組織のポリシーを設定するリソースを選択します。

  3. 組織のポリシーのテーブルで、[リソース サービスの使用を制限する] を選択します。

  4. [ポリシーを管理] をクリックします。

  5. [対象] で、[親のポリシーをオーバーライドする] を選択します。

  6. [ポリシーの適用] で、このポリシーに継承を適用する方法を選択します。

    1. 親リソースの組織のポリシーを継承してこれと結合する場合は、[親と結合する] を選択します。

    2. 既存の組織のポリシーをオーバーライドする場合は、[置換] を選択します。

  7. [ルールの追加] をクリックします。

  8. [ポリシーの値] で [カスタム] を選択します。

  9. [ポリシーの種類] で、拒否リストには [拒否]、許可リストには [許可] を選択します。

  10. [カスタム値] で、ブロックするサービスまたは許可するサービスを追加します。

    1. たとえば Cloud Storage をブロックするには、「storage.googleapis.com」と入力します。

    2. 他のサービスを追加するには、[値を追加] をクリックします。

  11. ポリシーを適用するには、[ポリシーを設定] をクリックします。

gcloud

組織のポリシーは Google Cloud CLI を使用して設定できます。リソース サービスの使用を制限する 制約を含む組織のポリシーを適用するには、まず更新するポリシーを含む YAML ファイルを作成します。

name: organizations/ORGANIZATION_ID/policies/gcp.restrictServiceUsage
spec:
   rules:
   - values:
       deniedValues:
       - file.googleapis.com
       - bigquery.googleapis.com
       - storage.googleapis.com

ORGANIZATION_ID は組織リソースの ID に置き換えます。 このポリシーをリソースに設定するには、次のコマンドを実行します。

gcloud beta resource-manager org-policies set-policy \
  --project='PROJECT_ID' /tmp/policy.yaml

PROJECT_ID は、この組織のポリシーを適用するリソースのプロジェクト ID に置き換えます。

組織のポリシーで制約を使用する方法については、制約の使用をご覧ください。

タグ付けされていないリソースの制限

タグと条件付き組織のポリシーを使用すると、特定のタグを使用していないリソースを制限できます。サービスを制限するリソースに組織のポリシーを設定し、タグの存在を条件付きにすると、そのリソースから派生した子リソースは、タグ付けされていない限り使用できません。このように、ガバナンス計画に従って使用前にリソースを設定する必要があります。

タグ付けされていない組織、フォルダ、プロジェクト リソースを制限するには、組織のポリシーを作成するときに条件付きクエリで ! 論理演算子を使用します。

たとえば、sqladmin=enabled タグを持つプロジェクトでのみ sqladmin.googleapis.com の使用を許可するには、sqladmin=enabled タグがないプロジェクトで sqladmin.googleapis.com を拒否する組織ポリシーを作成します。

  1. リソースに適切なガバナンスが適用されているかどうかを識別するタグを作成します。たとえば、キー sqlAdmin と値 enabled のタグを作成して、このリソースで Cloud SQL Admin API の使用を許可するように指定できます。次に例を示します。

    タグのキーと値の作成

  2. 新しく作成したタグの名前をクリックします。次のステップでは、[タグキーのパス] に一覧表示されているタグキーの名前空間名が必要です。

  3. 組織リソースのレベルで Restrict Resource Service Usage(リソース サービスの使用を制限する)組織ポリシーを作成し、Cloud SQL Admin API へのアクセスを拒否します。次に例を示します。

    リソースを制限する組織のポリシーを作成する

  4. 上記の組織のポリシーに条件を追加し、ガバナンス タグが存在しない場合に、ポリシーが適用されることを指定します。論理 NOT 演算子は条件ビルダーでサポートされていないため、この条件は条件エディタで構築する必要があります。次に例を示します。

    条件付き組織ポリシーの作成

    !resource.matchTag("012345678901/sqlAdmin", "enabled")

これで、デベロッパーがそのプロジェクトで Cloud SQL Admin API を使用するには、sqlAdmin=enabled タグをプロジェクトに接続するか、プロジェクトに継承する必要があります。

条件付き組織のポリシーの作成の詳細については、タグを使用した組織のポリシーの設定をご覧ください。

ドライラン モードで組織のポリシーを作成する

ドライラン モードの組織のポリシーは、ポリシー違反が監査ログに記録されながら違反アクションは拒否されないタイプの組織のポリシーです。リソース サービスの使用を制限する制約を使用して、ドライラン モードで組織のポリシーを作成して、それが組織にどう影響するかを、ライブのポリシーを適用する前にモニタリングできます。詳細については、ドライラン モードで組織のポリシーを作成するをご覧ください。

エラー メッセージ

リソース階層 B 内でサービス A を拒否するように組織のポリシーを設定した場合、クライアントがリソース階層 B 内でサービス A を使用しようとすると、オペレーションは失敗します。失敗の理由を説明するエラーが返されます。また、AuditLog エントリが、詳細なモニタリング、アラート、デバッグ用に生成されます。

エラー メッセージの例

Request is disallowed by organization's constraints/gcp.restrictServiceUsage
constraint for projects/PROJECT_ID attempting to use service
storage.googleapis.com.

Cloud Audit Logs の例

Audit Log エントリの例のスクリーンショット