この例では、サービス境界にすでに存在する既存のホスト プロジェクトの VPC ネットワークを別の境界に移行する方法を示します。
この例では、ホスト プロジェクトに 2 つの VPC ネットワークが構成されています。Cloud Storage リソースをホストしているサービス プロジェクトが 2 つあります。
次の図は、移行前のサンプル ホスト プロジェクトの境界構成を示しています。

このアーキテクチャ図には、次のコンポーネントが示されています。
- ホスト プロジェクト。ホスト プロジェクトには、
VPC1とVPC2の 2 つの VPC ネットワークが構成されています。 - サービス プロジェクト。サービス プロジェクト
service-project-1とservice-project-2には Cloud Storage バケットがあり、サービス境界によって保護されています。 - 境界。サービス境界
perimeter-1は、ホスト プロジェクトとサービス プロジェクト全体を保護しています。VPC ネットワークVPC1の VMVM1と VPC ネットワークVPC2の VMVM2は、service-project-1とservice-project-2の両方のリソースにアクセスできます。
次の図は、移行後のホスト プロジェクトの境界構成を示しています。

このアーキテクチャ図には、次のコンポーネントが示されています。
- 境界 1。この境界は、VPC ネットワーク
VPC1とサービス プロジェクトservice-project-1を保護しています。VMVM1はservice-project-1の Cloud Storage バケットにアクセスできますが、service-project-2の Cloud Storage バケットにはアクセスできません。 - 境界 2。この境界は、VPC ネットワーク
VPC2とサービス プロジェクトservice-project-2を保護しています。VMVM2はservice-project-2の Cloud Storage バケットにアクセスできますが、service-project-1の Cloud Storage バケットにはアクセスできません。
この移行の例では、ドライラン モードで構成を変更し、ドライラン構成を適用する前に検証しています。このプロセスにより、VPC ネットワークとリソースが保護され、移行中に VPC1 から service-project-1、VPC2 から service-project-2 への本番環境トラフィックが中断されていないことを確認します。
この移行プロセスは以下の手順で構成されます。
- VPC ネットワークと境界の詳細を取得する
- ドライランの境界構成を設定する
- ドライランの設定を検証する
- ドライラン構成を適用する
VPC ネットワークと境界の詳細を取得する
この例では、移行を開始する前に、VPC ネットワークと境界の詳細を取得する必要があります。
ホスト プロジェクト内の VPC ネットワークを一覧取得する
次のコマンドは、network-host-project の VPC ネットワークを一覧表示します。
gcloud compute networks list --project=network-host-project
この例では、次の出力が生成されます。
NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4
vpc1 AUTO REGIONAL
vpc2 AUTO REGIONAL
境界の詳細を取得する
次のコマンドは、境界の詳細を取得します。
gcloud access-context-manager perimeters describe perimeter-1
この例では、次の出力が生成されます。
name: accessPolicies/<access policy number>/servicePerimeters/perimeter-1
status:
…
resources:
- projects/<network-host-project number>
- projects/<service-project-1 number>
- projects/<service-project-2 number>
<access policy number> は、ドライラン モードのコマンド例で使用されています。次のコマンドを使用して、デフォルトのアクセス ポリシーを設定することもできます。
gcloud alpha config set access_context_manager/policy<access policy number>
ドライラン構成を設定する
この例では、dry-run コマンドを使用して境界 perimeter-1 を更新し、network-host-project と service-project-2 を削除して VPC1 を追加します。次に、dry-run コマンドを実行して新しい境界 perimeter-2 を作成し、service-project-2 と VPC2 を追加します。
別のアクセス ポリシーの境界にプロジェクトを追加する場合は、まず、既存のアクセス ポリシーの境界からプロジェクトを削除する必要があります。境界からプロジェクトを削除する方法については、サービス境界を更新するをご覧ください。
ドライランの構成を更新する
次のコマンドは、境界 perimeter-1 を更新して network-host-project と service-project-2 を削除し、VPC1 を追加します。
gcloud access-context-manager perimeters dry-run update perimeter-1
--remove-resources="projects/<network-host-project number>,projects/<service-project-2 number>"
--add-resources="//compute.googleapis.com/projects/network-host-project/global/networks/vpc1"
--policy=<access policy number>
ドライラン モードで新しい境界を作成する
次のコマンドは、境界 perimeter-2 を作成し、service-project-2 と VPC2 を追加します。
gcloud access-context-manager perimeters dry-run create perimeter-2
--title=perimeter-2 --type="regular"
--resources="projects/<service-project-2 number>,//compute.googleapis.com/projects/network-host-project/global/networks/vpc2"
--restricted-services="storage.googleapis.com"
--policy=<access policy number>
ドライランの構成を検証する
この例では、VPC1 から service-project-1、VPC2 から service-project-2 までにドライラン エラーがないことを確認するため、次のコマンドを実行します。
service-project-1 の Cloud Storage バケットを一覧表示するには、VPC1 にある VM1 にログインして、次のコマンドを実行します。
gcloud storage ls --project=service-project-1
service-project-2 の Cloud Storage バケットを一覧表示するには、次のコマンドを実行します。
gcloud storage ls --project=service-project-2
ドライラン構成が本番環境のトラフィックに影響しないため、コマンドは正常に実行されます。ただし、VM1 から service-project-2 にアクセスした場合、network-host-project の監査ログに次のドライラン エラーが表示されます。
egressViolations: [
0: {
servicePerimeter: "accessPolicies/<access policy number>/servicePerimeters/perimeter-1"
source: "//compute.googleapis.com/projects/network-host-project/global/networks/VPC1"
sourceType: "Network"
targetResource: "projects/<service-project-2 number>"
}
]
同様に、VM2 から service-project-2 への Cloud Storage リクエストにはドライラン エラーがなく、VM2 から service-project-1 へのリクエストには network-host-project の監査ログに次のドライラン エラーがあります。
egressViolations: [
0: {
servicePerimeter: "accessPolicies/<access policy number>/servicePerimeters/perimeter-2"
source: "//compute.googleapis.com/projects/network-host-project/global/networks/VPC2"
sourceType: "Network"
targetResource: "projects/<service-project-1 number>"
}
]
ドライラン構成を適用する
1 つのアトミック トランザクションで、すべてのドライラン構成を一度に適用する必要があります。
ドライラン構成を適用するには、次のコマンドを実行します。
gcloud access-context-manager perimeters dry-run enforce-all --policy=<access policy number>
ドライラン構成を適用した後、次のコマンドを実行して perimeter-1 の説明を取得します。
gcloud access-context-manager perimeters describe perimeter-1 --policy=<access policy number>
この例では、以下の出力が生成されます。ここでは、network-host-project と service-project-2 が削除され、VPC1 が perimeter-1 に追加されています。
name: accessPolicies/<access policy number>/servicePerimeters/perimeter-1
status:
…
resources:
- projects/<service-project-1 number>
- //compute.googleapis.com/projects/<network-host-project>/global/networks/VPC1
次のコマンドを実行して perimeter-2 の説明を取得します。
gcloud access-context-manager perimeters describe perimeter-2 --policy=<access policy number>
この例では、次の出力が生成されます。ここでは、service-project-2 と VPC2 が perimeter-2 に追加されています。
name: accessPolicies/<access policy number>/servicePerimeters/perimeter-2
status:
…
resources:
- projects/<service-project-2 number>
- //compute.googleapis.com/projects/<network-host-project>/global/networks/VPC2
title: perimeter-2