このページでは、企業管理者が 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
を拒否します。この制約によって、Google Cloud コンソールの可用性も決定されます。
[リソース サービスの使用を制限する] 制約は、次の 2 つの排他的な方法で使用できます。
拒否リスト - 拒否されていないサービスのリソースは許可されます。
許可リスト - 許可されていないサービスのリソースは拒否されます。
[リソース サービスの使用を制限する] 制約は、すべての対象リソースへのランタイム アクセスを制御します。この制約を含む組織のポリシーが更新されると、ポリシーのスコープ内のすべてのリソースへのすべてのアクセスに結果整合性が保たれた状態で適用されます。
管理者は、この制約を含む組織のポリシーの更新を慎重に管理することをおすすめします。タグを使用して条件付きで制約を適用することで、このポリシーの変更を安全にロールアウトできます。詳細については、タグ付きの組織のポリシーの設定をご覧ください。
このポリシーでサービスが制限される場合、制限付きサービスとの直接的な依存関係がある一部の Google Cloud サービスも制限されます。これは、同じ顧客リソースを管理するサービスにのみ適用されます。たとえば、Google Kubernetes Engine(GKE)には Compute Engine との依存関係があります。Compute Engine が制限されていると、GKE も制限されます。
Google Cloud コンソールの可用性
Google Cloud コンソールの制限付きサービスは、次のように動作します。
- メニューを使用してプロダクトに移動することはできません。
- 制限付きサービスは、Google Cloud コンソールの検索結果に表示されません。
- 制限付きサービスの Google Cloud コンソール ページに移動すると(リンクやブックマークからなど)、エラー メッセージが表示されます。
リソース サービスの使用を制限する制約の使用
組織のポリシーの制約は、組織レベル、フォルダレベル、プロジェクト レベルで設定できます。各ポリシーは、対応するリソース階層内のすべてのリソースに適用されますが、リソース階層の下位レベルでオーバーライドできます。
ポリシー評価の詳細については、階層評価を理解するをご覧ください。
組織ポリシーの設定
組織ポリシーの設定、変更、削除を行うには、組織ポリシー管理者のロールが必要です。
Console
リソース サービスの使用を制限する 制約を含む組織のポリシーを設定するには、次のようにします。
Google Cloud コンソールで、[組織のポリシー] ページに移動します。
プロジェクト選択ツールから、組織のポリシーを設定するリソースを選択します。
組織のポリシーのテーブルで、[リソース サービスの使用を制限する] を選択します。
[ポリシーを管理] をクリックします。
[適用対象] で、[親のポリシーをオーバーライドする] を選択します。
[ポリシーの適用] で、このポリシーに継承を適用する方法を選択します。
親リソースの組織のポリシーを継承してこれと結合する場合は、[親と結合する] を選択します。
既存の組織のポリシーをオーバーライドする場合は、[置換] を選択します。
[ルールの追加] をクリックします。
[ポリシーの値] で [カスタム] を選択します。
[ポリシーの種類] で、拒否リストの場合は [拒否]、許可リストの場合は [許可] を選択します。
[カスタム値] で、ブロックするサービスまたは許可するサービスを追加します。
たとえば Cloud Storage をブロックするには、「
storage.googleapis.com
」と入力します。他のサービスを追加するには、[値を追加] をクリックします。
ポリシーを適用するには、[ポリシーを設定] をクリックします。
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 org-policies set-policy /tmp/policy.yaml
組織のポリシーで制約を使用する方法については、制約の使用をご覧ください。
タグ付けされていないリソースの制限
タグと条件付き組織のポリシーを使用すると、特定のタグを使用していないリソースを制限できます。サービスに制限を設ける組織のポリシーをリソースに設定し、タグの有無を条件にした場合、そのリソースから派生する子リソースは、タグ付けされていない限り使用できません。このように、ガバナンス計画に従って使用前にリソースを設定する必要があります。
タグ付けされていない組織、フォルダ、またはプロジェクトのリソースを制限するには、組織のポリシーを作成するときに条件付きクエリで !
論理演算子を使用します。
たとえば、sqladmin=enabled
タグを持つプロジェクトでのみ sqladmin.googleapis.com
の使用を許可するには、sqladmin=enabled
タグがないプロジェクトで sqladmin.googleapis.com
を拒否する組織ポリシーを作成します。
リソースに適切なガバナンスが適用されているかどうかを識別するタグを作成します。たとえば、キー
sqlAdmin
と値enabled
を含むタグを作成し、このリソースで Cloud SQL Admin API の使用を許可するように指定できます。次に例を示します。新しく作成したタグの名前をクリックします。次のステップでは、[タグキーのパス] に一覧表示されているタグキーの名前空間名が必要です。
組織リソースのレベルでリソース サービスの使用を制限する組織ポリシーを作成して、Cloud SQL Admin API へのアクセスを拒否します。次に例を示します。
上記の組織のポリシーに条件を追加し、ガバナンス タグが存在しない場合にポリシーが適用されるように指定します。論理 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.