VPC Service Controls のフォルダベースのメンバーシップ機能を使用すると、 Google Cloud フォルダをメンバーとしてサービス境界を定義できます。この機能を使用すると、単一の境界構成でフォルダ階層全体を保護できるため、境界管理の管理オーバーヘッドを大規模に削減できます。
このドキュメントでは、境界でのフォルダのサポートの仕組みについて説明し、次の内容について説明します。
境界でフォルダを使用する際の基本コンセプト、動作、メリット。
フォルダベースのメンバーシップ、ネストされたリソース、リソース階層ルール(継承や評価の優先順位など)間の相互作用。
プロジェクトとフォルダに構成された境界を検索する方法。
この機能を使用する際のベスト プラクティスと既知の制限事項。
境界内のフォルダ メンバーシップについて
Google Cloud フォルダには、複数のプロジェクト、他のフォルダ、またはその両方を格納できます。フォルダ内の個々のプロジェクトをサービス境界に追加できますが、親フォルダを追加することをおすすめします。境界を作成するときにフォルダを保護されたリソースとして指定すると、VPC Service Controls には、プロジェクトやネストされたフォルダなど、そのフォルダ内のすべてのリソースが含まれます。
境界で構成したフォルダにプロジェクトを追加すると、VPC Service Controls によって、それらのプロジェクトが同じ境界に自動的に追加されます。これらのプロジェクトを含めるために境界構成を更新する必要はありません。同様に、フォルダからプロジェクトを削除すると、VPC Service Controls はそれらのプロジェクトを境界から自動的に削除します。
ネストされたフォルダと継承
VPC Service Controls は、境界内で構成したフォルダ内のすべてのリソース(ネストされたフォルダとそのリソースなど)を制限します。フォルダを境界に追加すると、VPC Service Controls は、そのフォルダとそのサブフォルダ内のすべてのプロジェクトを自動的に制限します。
リソース メンバーシップの評価の優先順位
Google Cloud リソースは、自動適用モードの 1 つの標準サービス境界と、ドライラン モードの 1 つの標準サービス境界でのみ保護できます。リソースまたはその親フォルダが複数の境界に関連付けられている場合、リソース階層の最下位の関連付けによって有効な境界が決まります。
VPC Service Controls は、自動適用モードとドライラン モードの優先順位を個別に評価します。
- 自動適用モードの優先順位: 有効な自動適用境界は、自動適用境界に明示的に割り当てられている階層内の最も低いリソース(プロジェクト自体または最も近い祖先フォルダ)によって決まります。
- ドライラン モードの優先順位: 有効なドライラン境界は、ドライラン境界に明示的に割り当てられているか、明示的に割り当てられている適用リソースから暗黙的に継承されている階層内の最も低いリソースによって決まります。
プロジェクトまたはサブフォルダにドライラン境界を構成しても、祖先フォルダに構成された自動適用境界は無効になったり、オーバーライドされたりすることはありません。
優先順位の例
例 1(自動適用モードでのプロジェクトの直接オーバーライド): 自動適用境界(
sp1)で親フォルダ(folders/1)を構成し、そのフォルダ内のプロジェクト(projects/1)を別の自動適用境界(sp2)で明示的に構成すると、projects/1はsp2によって保護されます。プロジェクトの直接割り当ては、フォルダの継承よりも優先されます。folders/1内の他のすべてのプロジェクト(projects/2など)は、フォルダの継承によってsp1によって保護されたままになります。例 2(ドライラン モードでのフォルダの継承): ドライラン モードのサービス境界でフォルダ(
folders/1)を構成すると、明示的に無効にしない限り、そのフォルダ内のすべてのプロジェクト(projects/1とprojects/2)がドライラン境界構成(sp1)を継承します。ネストされたリソースが別のドライラン境界で明示的に構成されていない限り、ドライランの継承は自動適用モードの継承と同じように動作します。例 3(適用された境界とドライラン境界の独立した評価): VPC Service Controls は、適用された関連付けとドライランの関連付けを個別に評価します。自動適用境界(
sp1)で親フォルダ(folders/1)を構成し、そのフォルダ内のプロジェクト(projects/1)をドライラン境界(sp2)に明示的に割り当てると、projects/1は自動適用モードのsp1によって保護されたまま、同時にsp2によってドライラン モードで評価されます。プロジェクトをドライラン境界に割り当てても、親フォルダの自動適用境界はオーバーライドまたは無効化されません。例 4(マルチレベルのフォルダ階層とサブフォルダの優先順位): マルチレベルのフォルダ階層では、VPC Service Controls は階層の各レベルで優先順位を評価します。祖先フォルダ(
folders/2)が自動適用境界(sp1)で構成されている場合、含まれるすべてのプロジェクト(projects/1とprojects/2)はsp1の適用を継承します。ドライラン境界が異なるレベルで割り当てられている場合(たとえば、祖先folders/2をドライラン境界sp2に割り当て、プロジェクトprojects/2(サブフォルダfolders/1内)をドライラン境界sp1に割り当てる場合)、各プロジェクトは最も近い祖先からドライラン構成を継承します。その結果、projects/1はsp2ドライランで評価されますが、projects/2はsp1ドライランで評価されます。
有効な構成済み境界を検索する
リソースは祖先フォルダから境界保護を継承できるため、LookupConfiguredServicePerimeter メソッドを使用して、プロジェクトまたはフォルダを保護するサービス境界を特定できます。
API は次の値を返します。
servicePerimeter: 有効な適用済み境界の完全修飾名。servicePerimeterDryRun: 有効なドライラン境界の完全修飾名。restrictedResource: 自動適用境界が直接接続されている特定のリソース(プロジェクトまたはフォルダ)。restrictedResourceDryRun: ドライラン境界が直接アタッチされている特定のリソース。
詳細については、構成された境界を検索するをご覧ください。
境界からのプロジェクトの除外
プロジェクトをフォルダレベルの境界から除外するには、そのプロジェクトを、サービスを制限せず、すべての上り(内向き)トラフィックと下り(外向き)トラフィックを許可する別の境界に明示的に割り当てます。明示的なプロジェクト構成はフォルダレベルの境界よりも優先されるため、プロジェクトはフォルダ境界から除外されます。
境界の更新については、サービス境界を更新するをご覧ください。
スコープ指定されたポリシー
スコープ指定されたポリシー内のサービス境界は、そのポリシーのスコープ内に存在するリソースのみを制限します。フォルダをスコープ付き境界のメンバーとして含めるには、アクセス ポリシーのスコープがそのフォルダまたはそのフォルダの祖先(親フォルダや組織など)に設定されている必要があります。
ベスト プラクティス
フォルダベースの境界を管理する際は、次のベスト プラクティスを確認してください。
プロジェクトをフォルダ境界に安全に移行する
明示的なプロジェクト メンバーシップからフォルダベースのメンバーシップに移行する場合は、次の手順に沿って、意図しない境界の適用の中断を防ぎます。
- ターゲットの親フォルダをサービス境界に追加します。
- リソース階層で、その親フォルダの下にあるプロジェクトを移動します。
- 48 時間以上待機する: 明示的なプロジェクト エントリを境界構成で 48 時間以上保持します。この待機期間により、リソース階層の伝播がすべてのシステムで完了します。
- 境界から明示的なプロジェクト構成を削除します。プロジェクトはフォルダの継承を通じて保護されたままになります。
階層の移動
フォルダやプロジェクトを移動すると、有効な境界保護が変更されます。予期しないアクセス拒否を防ぐため、階層の移動はすべて Resource Manager 管理者と連携して行ってください。
境界で構成したプロジェクトを別のフォルダに移動し、そのフォルダを同じ境界に追加する場合は、境界内の既存の明示的なプロジェクト メンバーシップ構成を少なくとも 48 時間保持する必要があります。この待機期間により、リソース階層の伝播が可能になり、境界から明示的なプロジェクト構成を削除したときに予期しない境界の適用に関する問題が発生するのを防ぐことができます。
制限事項
フォルダベースのメンバーシップは、境界ブリッジではサポートされていません。境界ブリッジはプロジェクト リソースのみを受け入れます。
VPC Service Controls は、フォルダレベルの API リソースをサポートしていません。
既知の問題により、VPC ネットワーク プロジェクトをドライラン境界の保護されたリソースとして構成すると、フォルダベースの適用がオーバーライドされます。ネットワーク プロジェクトがドライラン境界に明示的に追加されると、祖先フォルダから継承された自動適用境界が失われます。
フォルダ メンバーシップは、Google Cloud 以外の API と
allowed_service_patternsで構成された境界では対象外です。これらのサービス パターンへのアクセスを許可するには、フォルダを介して継承するのではなく、元のプロジェクトまたは VPC ネットワークを境界に明示的に追加する必要があります。
次のステップ
- サービス境界でフォルダを構成する
- VPC Service Controls の詳細を確認する。
- サービス境界の詳細を確認する。
- サービス境界の設計と構築の詳細を確認する。