In diesem Beispiel wird gezeigt, wie Sie VPC-Netzwerke eines vorhandenen Hostprojekts, das sich bereits in einem Dienstperimeter befindet, in separate Perimeter migrieren können.
In diesem Beispiel besteht das Hostprojekt aus zwei VPC-Netzwerken. In zwei Dienstprojekten werden die Cloud Storage-Ressourcen gehostet.
Das folgende Diagramm zeigt die Perimeterkonfiguration eines Beispiel-Hostprojekts vor der Migration:

Das Architekturdiagramm zeigt die folgenden Komponenten:
- Hostprojekt. Das Hostprojekt enthält zwei VPC-Netzwerke:
VPC1undVPC2. - Dienstprojekte. Die Dienstprojekte
service-project-1undservice-project-2enthalten Cloud Storage-Buckets und werden durch den Dienstperimeter geschützt. - Perimeter. Der Dienstperimeter
perimeter-1schützt das gesamte Hostprojekt und die Dienstprojekte. Die VMVM1im VPC-NetzwerkVPC1und die VMVM2im VPC-NetzwerkVPC2können auf Ressourcen inservice-project-1undservice-project-2zugreifen.
Das folgende Diagramm zeigt die Perimeterkonfiguration des Hostprojekts nach der Migration.

Das Architekturdiagramm zeigt die folgenden Komponenten:
- Perimeter-1. Dieser Perimeter schützt das VPC-Netzwerk
VPC1und das Dienstprojektservice-project-1. Die VMVM1kann auf den Cloud Storage-Bucket inservice-project-1zugreifen, aber nicht auf den Cloud Storage-Bucket inservice-project-2. - Perimeter-2. Dieser Perimeter schützt das VPC-Netzwerk
VPC2und das Dienstprojektservice-project-2. Die VMVM2kann auf den Cloud Storage-Bucket inservice-project-2zugreifen, aber nicht auf den Cloud Storage-Bucket inservice-project-1.
In diesem Migrationsbeispiel werden die Konfigurationsänderungen im Probelaufmodus vorgenommen und dann überprüft, bevor die Probelaufkonfiguration erzwungen wird. So wird sichergestellt, dass die VPC-Netzwerke und ‑Ressourcen geschützt sind und der Produktions-Traffic von VPC1 nach service-project-1 und von VPC2 nach service-project-2 während der Migration nicht unterbrochen wird.
Der Migrationsprozess besteht aus den folgenden Schritten:
- VPC-Netzwerke und Perimeterdetails abrufen
- Perimeterkonfiguration für den Probelauf einrichten
- Probelaufkonfiguration überprüfen
- Probelaufkonfiguration erzwingen
VPC-Netzwerke und Perimeterdetails abrufen
In diesem Beispiel müssen Sie vor Beginn der Migration die Liste der VPC-Netzwerke und die Perimeterdetails abrufen.
VPC-Netzwerke im Hostprojekt auflisten
Mit dem folgenden Befehl werden die VPC-Netzwerke im Netzwerk-Hostprojekt aufgelistet:
gcloud compute networks list --project=network-host-project
Dieses Beispiel liefert folgende Ausgabe:
NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4
vpc1 AUTO REGIONAL
vpc2 AUTO REGIONAL
Perimeterdetails abrufen
Mit dem folgenden Befehl werden die Details des Perimeters abgerufen:
gcloud access-context-manager perimeters describe perimeter-1
Dieses Beispiel liefert folgende Ausgabe:
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>
Die <Nummer der Zugriffsrichtlinie> wird in den Beispielbefehlen für den Probelaufmodus verwendet. Sie können auch eine Standardzugriffsrichtlinie mit dem folgenden Befehl einrichten:
gcloud alpha config set access_context_manager/policy<access policy number>
Probelaufkonfiguration einrichten
In diesem Beispiel verwenden Sie den Probelaufbefehl, um den Perimeter perimeter-1 zu aktualisieren, damit network-host-project und service-project-2 entfernt und VPC1 hinzugefügt werden. Anschließend führen Sie den Probelaufbefehl aus, um einen neuen Perimeter perimeter-2 zu erstellen und service-project-2 und VPC2 hinzuzufügen.
Wenn Sie einem Perimeter in einer anderen Zugriffsrichtlinie ein Projekt hinzufügen, müssen Sie das Projekt zuerst aus den Perimetern in der vorhandenen Zugriffsrichtlinie entfernen. Informationen zum Entfernen eines Projekts aus einem Perimeter finden Sie unter Dienstperimeter aktualisieren.
Probelaufkonfiguration aktualisieren
Mit dem folgenden Befehl wird der Perimeter perimeter-1 aktualisiert, um network-host-project und service-project-2 zu entfernen und VPC1 hinzuzufügen:
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>
Neuen Perimeter im Probelaufmodus erstellen
Der folgende Befehl erstellt den Perimeter perimeter-2, fügt service-project-2 hinzu und fügt VPC2 hinzu:
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>
Probelaufkonfiguration prüfen
Führen Sie in diesem Beispiel die folgenden Befehle aus, um sicherzustellen, dass keine Probelauffehler aus VPC1 nach service-project-1 und aus VPC2 nach service-project-2 auftreten:
Wenn Sie die Cloud Storage-Buckets in service-project-1 auflisten möchten, melden Sie sich in VM1 an, das sich in VPC1 befindet, und führen Sie den folgenden Befehl aus:
gcloud storage ls --project=service-project-1
Führen Sie den folgenden Befehl aus, um die Cloud Storage-Buckets in service-project-2 aufzulisten:
gcloud storage ls --project=service-project-2
Die Befehle werden erfolgreich ausgeführt, da sich die Probelaufkonfiguration nicht auf den Produktions-Traffic auswirkt. Im Audit-Log für network-host-project für den Zugriff auf service-project-2 über VM1 wird jedoch der folgende Probelauffehler angezeigt:
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>"
}
]
Ebenso haben Cloud Storage-Anfragen von VM2 an service-project-2 keine Probelauffehler und Anfragen von VM2 an service-project-1 haben den folgenden Probelauffehler in den Audit-Logs für das 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>"
}
]
Probelaufkonfiguration erzwingen
Sie müssen alle Probelaufkonfigurationen gleichzeitig in einer atomaren Transaktion erzwingen.
Führen Sie den folgenden Befehl aus, um die Konfigurationen für den Probelauf zu erzwingen:
gcloud access-context-manager perimeters dry-run enforce-all --policy=<access policy number>
Nachdem Sie die Konfigurationen für den Probelauf erzwungen haben, führen Sie den folgenden Befehl aus, um perimeter-1 zu beschreiben:
gcloud access-context-manager perimeters describe perimeter-1 --policy=<access policy number>
Dieses Beispiel erzeugt die folgende Ausgabe, in der network-host-project und service-project-2 entfernt und VPC1 zu perimeter-1 hinzugefügt wird.
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
Führen Sie den folgenden Befehl aus, um perimeter-2 zu beschreiben:
gcloud access-context-manager perimeters describe perimeter-2 --policy=<access policy number>
Dieses Beispiel erzeugt die folgende Ausgabe, in der service-project-2 und VPC2 zu perimeter-2 hinzugefügt werden.
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