Contoh ini menunjukkan cara memigrasikan jaringan VPC dari project host yang ada, yang sudah berada dalam perimeter layanan, ke perimeter terpisah.
Dalam contoh ini, project host terdiri dari dua jaringan VPC. Dua project layanan menghosting resource Cloud Storage.
Diagram berikut menunjukkan konfigurasi perimeter project host sebelum migrasi:
Diagram arsitektur menampilkan komponen berikut:
- Project host. Project host berisi dua jaringan VPC
VPC1
danVPC2
. - Project layanan. Project layanan
service-project-1
danservice-project-2
berisi bucket Cloud Storage dan dilindungi oleh perimeter layanan. - Keliling alas. Perimeter layanan
perimeter-1
melindungi seluruh project host dan project layanan. VMVM1
dalam jaringan VPCVPC1
dan VMVM2
dalam jaringan VPCVPC2
dapat mengakses resource diservice-project-1
danservice-project-2
.
Diagram berikut menunjukkan konfigurasi perimeter project host setelah migrasi.
Diagram arsitektur menampilkan komponen berikut:
- Perimeter-1. Perimeter ini melindungi jaringan VPC
VPC1
dan project layananservice-project-1
. VMVM1
dapat mengakses bucket Cloud Storage diservice-project-1
, tetapi tidak dapat mengakses bucket Cloud Storage diservice-project-2
. - Perimeter-2. Perimeter ini melindungi jaringan VPC
VPC2
dan project layananservice-project-2
. VMVM2
dapat mengakses bucket Cloud Storage diservice-project-2
, tetapi tidak dapat mengakses bucket Cloud Storage diservice-project-1
.
Dalam contoh migrasi ini, perubahan konfigurasi dibuat dalam mode uji coba, lalu
diverifikasi sebelum menerapkan konfigurasi uji coba. Proses ini memastikan bahwa
jaringan dan resource VPC terlindungi dan traffic produksi
dari VPC1
ke service-project-1
dan dari VPC2
ke service-project-2
tidak
terganggu selama migrasi.
Proses migrasi terdiri dari langkah-langkah berikut:
- Mendapatkan detail perimeter dan jaringan VPC
- Menyiapkan konfigurasi perimeter uji coba
- Memverifikasi penyiapan uji coba
- Menerapkan konfigurasi uji coba
Mendapatkan detail perimeter dan jaringan VPC
Dalam contoh ini, sebelum memulai migrasi, Anda harus mendapatkan daftar detail perimeter dan jaringan VPC.
Membuat daftar jaringan VPC dalam project host
Perintah berikut mencantumkan jaringan VPC dalam project network-host-:
gcloud compute networks list --project=network-host-project
Contoh ini menghasilkan output berikut:
NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 vpc1 AUTO REGIONAL vpc2 AUTO REGIONAL
Mendapatkan detail perimeter
Perintah berikut akan mendapatkan detail perimeter:
gcloud access-context-manager perimeters describe perimeter-1
Contoh ini menghasilkan output berikut:
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> digunakan dalam contoh perintah mode uji coba. Anda juga dapat menyiapkan kebijakan akses default dengan perintah berikut:
gcloud alpha config set access_context_manager/policy<access policy number>
Menyiapkan konfigurasi uji coba
Dalam contoh ini, Anda menggunakan perintah uji coba untuk mengupdate perimeter-1
perimeter guna menghapus network-host-project
, service-project-2
, dan menambahkan VPC1
. Kemudian, jalankan perintah uji coba untuk membuat perimeter baru perimeter-2
dan menambahkan service-project-2
dan VPC2
.
Memperbarui konfigurasi uji coba
Perintah berikut mengupdate perimeter perimeter-1
untuk menghapus network-host-project
,
service-project-2
, dan menambahkan 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>
Membuat perimeter baru dalam mode uji coba
Perintah berikut membuat perimeter perimeter-2
dan menambahkan service-project-2
,
serta VPC1
:
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>
Memverifikasi konfigurasi uji coba
Dalam contoh ini, jalankan perintah berikut untuk memastikan bahwa tidak ada error uji coba
dari VPC1
ke service-project-1
, dan dari VPC2
ke service-project-2
:
Untuk menampilkan daftar bucket Cloud Storage di service-project-1
, login ke VM1
yang ada di VPC1
, lalu jalankan perintah berikut:
gsutil ls -p service-project-1
Untuk menampilkan daftar bucket Cloud Storage di service-project-2
, jalankan perintah berikut:
gsutil ls -p service-project-2
Perintah berhasil dijalankan karena konfigurasi uji coba tidak memengaruhi traffic produksi. Namun, error uji coba berikut muncul di log audit untuk network-host-project
untuk mengakses service-project-2
dari VM1
:
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>" } ]
Demikian pula, permintaan Cloud Storage dari VM2
ke service-project-2
tidak memiliki error uji coba, dan permintaan dari VM2
ke service-project-1
memiliki error uji coba berikut dalam log audit untuk 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>" } ]
Menerapkan konfigurasi uji coba
Anda harus menerapkan semua konfigurasi uji coba sekaligus dalam satu transaksi atom.
Untuk menerapkan konfigurasi uji coba, jalankan perintah berikut:
gcloud access-context-manager perimeters dry-run enforce-all --policy=<access policy number>
Setelah Anda menerapkan konfigurasi uji coba, jalankan perintah berikut untuk mendeskripsikan
perimeter-1
:
gcloud access-context-manager perimeters describe perimeter-1 --policy=<access policy number>
Contoh ini menghasilkan output berikut tempat network-host-project
dan service-project-2
dihapus, dan VPC1
ditambahkan ke 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
Jalankan perintah berikut untuk mendeskripsikan perimeter-2
:
gcloud access-context-manager perimeters describe perimeter-2 --policy=<access policy number>
Contoh ini menghasilkan output berikut tempat service-project-2
dan VPC2
ditambahkan ke 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