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 mereka.
Diagram berikut menunjukkan konfigurasi perimeter contoh 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. - Perimeter. Perimeter layanan
perimeter-1
melindungi seluruh project host dan project layanan. VMVM1
di jaringan VPCVPC1
dan VMVM2
di 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 dilakukan dalam mode uji coba, lalu
diverifikasi sebelum menerapkan konfigurasi uji coba. Proses ini memastikan bahwa jaringan dan resource VPC dilindungi 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 jaringan VPC dan detail perimeter.
Mencantumkan jaringan VPC di project host
Perintah berikut mencantumkan jaringan VPC di project-host-network:
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 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 memperbarui perimeter perimeter-1
untuk menghapus network-host-project
, service-project-2
, dan menambahkan VPC1
. Kemudian, jalankan perintah uji coba untuk membuat perimeter perimeter-2
baru dan tambahkan service-project-2
serta VPC2
.
Jika menambahkan project ke perimeter dalam kebijakan akses yang berbeda, Anda harus menghapus project terlebih dahulu dari perimeter dalam kebijakan akses yang ada. Untuk informasi tentang cara menghapus project dari perimeter, lihat Memperbarui perimeter layanan.
Memperbarui konfigurasi uji coba
Perintah berikut memperbarui 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
,
dan menambahkan 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>
Memverifikasi konfigurasi uji coba
Dalam contoh ini, jalankan perintah berikut untuk memastikan tidak ada error uji coba
dari VPC1
ke service-project-1
, dan dari VPC2
ke service-project-2
:
Untuk mencantumkan bucket Cloud Storage di service-project-1
, login ke VM1
, yang ada di VPC1
,
lalu jalankan perintah berikut:
gcloud storage ls --project=service-project-1
Untuk mencantumkan bucket Cloud Storage di service-project-2
, jalankan perintah berikut:
gcloud storage ls --project=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 atomik.
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 dengan 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 menjelaskan perimeter-2
:
gcloud access-context-manager perimeters describe perimeter-2 --policy=<access policy number>
Contoh ini menghasilkan output berikut dengan 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