Contoh migrasi jaringan VPC ke perimeter terpisah

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:

Menghosting project sebelum migrasi

Diagram arsitektur menampilkan komponen berikut:

  • Project host. Project host berisi dua jaringan VPC VPC1 dan VPC2.
  • Project layanan. Project layanan service-project-1 dan service-project-2 berisi bucket Cloud Storage dan dilindungi oleh perimeter layanan.
  • Perimeter. Perimeter layanan perimeter-1 melindungi seluruh project host dan project layanan. VM VM1 di jaringan VPC VPC1 dan VM VM2 di jaringan VPC VPC2 dapat mengakses resource di service-project-1 dan service-project-2.

Diagram berikut menunjukkan konfigurasi perimeter project host setelah migrasi.

Project host setelah migrasi

Diagram arsitektur menampilkan komponen berikut:

  • Perimeter-1. Perimeter ini melindungi jaringan VPC VPC1 dan project layanan service-project-1. VM VM1 dapat mengakses bucket Cloud Storage di service-project-1, tetapi tidak dapat mengakses bucket Cloud Storage di service-project-2.
  • Perimeter-2. Perimeter ini melindungi jaringan VPC VPC2 dan project layanan service-project-2. VM VM2 dapat mengakses bucket Cloud Storage di service-project-2, tetapi tidak dapat mengakses bucket Cloud Storage di service-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