Menggunakan Kontrol Layanan VPC

Kontrol Layanan VPC adalah fitur Google Cloud yang memungkinkan Anda menyiapkan perimeter yang aman untuk mencegah pemindahan data yang tidak sah. Halaman ini menunjukkan cara menggunakan Kontrol Layanan VPC dengan kumpulan pribadi Cloud Build untuk memberikan keamanan tambahan pada build Anda.

Batasan

  • Perlindungan Kontrol Layanan VPC hanya tersedia untuk build yang dijalankan di kumpulan pribadi. Anda tidak dapat menggunakan Kontrol Layanan VPC dengan build yang berjalan di kumpulan default.

  • Pemicu Cloud Build Pub/Sub tidak didukung saat Kontrol Layanan VPC digunakan.

Sebelum memulai

  • Untuk menggunakan contoh command line dalam panduan ini, instal dan konfigurasi Google Cloud CLI.

  • Menyiapkan koneksi pribadi antara jaringan Virtual Private Cloud Anda dan jaringan VPC tempat kumpulan pribadi berada. Untuk mengetahui petunjuknya, lihat menyiapkan lingkungan Anda untuk membuat kumpulan pribadi.

Menyiapkan kumpulan pribadi di perimeter Kontrol Layanan VPC

Untuk menggunakan Kontrol Layanan VPC dengan Cloud Build, Anda harus terlebih dahulu membuat dan mengonfigurasi perimeter layanan, yang dilakukan di tingkat organisasi. Penyiapan ini memastikan bahwa pemeriksaan Kontrol Layanan VPC diterapkan saat menggunakan Cloud Build dan bahwa developer hanya dapat menjalankan build yang mematuhi Kontrol Layanan VPC.

Membuat perimeter Kontrol Layanan VPC

Izin Identity and Access Management: Untuk menyiapkan perimeter layanan, Anda memerlukan peran Organization Viewer dan Editor Access Context Manager. Untuk mengetahui petunjuk tentang cara memberikan peran ini, lihat Mengonfigurasi akses ke resource Cloud Build.

Untuk membuat perimeter Kontrol Layanan VPC:

Ikuti Panduan Memulai Kontrol Layanan VPC untuk:

  1. Membuat perimeter layanan.
  2. Tambahkan project tempat Anda berencana membuat kumpulan pribadi ke perimeter.

  3. Membatasi Cloud Build API.

Setelah menyiapkan perimeter layanan, semua panggilan ke Cloud Build API akan diperiksa untuk memastikan bahwa panggilan tersebut berasal dari perimeter yang sama.

Memberi akun layanan Cloud Build akses ke perimeter Kontrol Layanan VPC

Cloud Build menggunakan akun layanan Cloud Build atau akun layanan yang ditentukan pengguna untuk menjalankan build atas nama Anda. Dalam kasus berikut, Anda harus memberi akun layanan akses ke perimeter Kontrol Layanan VPC, agar build Anda dapat mengakses resource di dalam perimeter:

  • Jika Anda menggunakan akun layanan Cloud Build untuk memulai build menggunakan pemicu build, Cloud Build API, atau command line.
  • Jika Anda menggunakan akun layanan yang ditentukan pengguna untuk memulai build menggunakan pemicu build.

Anda tidak perlu memberi akun layanan akses ke perimeter Kontrol Layanan VPC jika menggunakan akun layanan yang ditentukan pengguna untuk memulai build menggunakan Cloud Build API atau command line.

Lakukan langkah-langkah berikut untuk memberi akun layanan Cloud Build akses ke perimeter Kontrol Layanan VPC:

  1. Catat alamat email akun layanan Cloud Build atau akun layanan yang ditentukan pengguna. Untuk mendapatkan alamat email akun layanan Cloud Build Anda:

    1. Buka halaman IAM:

      Buka halaman IAM

    2. Pilih project yang Anda tambahkan ke perimeter layanan.

    3. Di tabel izin, cari alamat email yang diakhiri dengan @cloudbuild.gserviceaccount.com, lalu catat. Ini adalah akun layanan Cloud Build Anda.

  2. Perbarui kebijakan ingress perimeter layanan agar akun layanan dapat memanggil Cloud Build API. Aturan masuk ini memungkinkan akun layanan melakukan panggilan API CreateBuild. Untuk mengetahui informasi selengkapnya tentang cara menetapkan kebijakan ingress Kontrol Layanan VPC, lihat Mengonfigurasi kebijakan traffic masuk dan keluar serta aturan masuk dan keluar.

    - ingressFrom:
        identities:
        - serviceAccount:SERVICE_ACCOUNT_EMAIL
        sources:
        - accessLevel: '*'
      ingressTo:
        operations:
        - serviceName: 'cloudbuild.googleapis.com'
          methodSelectors:
          - method: '*'
        resources:
        - 'projects/PROJECT_NUMBER'
    
  3. Perbarui kebijakan perimeter dengan menjalankan perintah berikut dan mengganti variabel dengan nilai yang sesuai:

    gcloud beta access-context-manager perimeters update PERIMETER_NAME \
        --set-ingress-policies=INGRESS-FILENAME \
        --policy=POLICY_ID
    

Ganti variabel di atas dengan variabel berikut:

  • SERVICE_ACCOUNT_EMAIL: alamat email akun layanan Cloud Build atau akun layanan yang ditentukan pengguna.
  • PROJECT_NUMBER: nomor project project Google Cloud yang Anda tambahkan ke perimeter Kontrol Layanan VPC.
  • PERIMETER_NAME: nama perimeter Kontrol Layanan VPC Anda.
  • INGRESS-FILENAME: nama file kebijakan masuk Anda.
  • POLICY_ID: ID kebijakan akses.

Opsional: Mengaktifkan akses perimeter untuk mesin pengembangan

Karena pemeriksaan Kontrol Layanan VPC diterapkan untuk Cloud Build API, panggilan ke Cloud Build API akan gagal, kecuali jika berasal dari dalam perimeter layanan. Oleh karena itu, untuk mengelola build dengan Cloud Build API, UI Cloud Build di Konsol Google Cloud, atau Google Cloud CLI, pilih salah satu opsi berikut:

  • Gunakan mesin di dalam perimeter Kontrol Layanan VPC. Misalnya, Anda dapat menggunakan VM Compute Engine atau mesin lokal yang terhubung ke jaringan VPC Anda melalui VPN.

  • Beri developer akses ke perimeter. Misalnya, Anda dapat membuat tingkat akses yang mengaktifkan akses perimeter berdasarkan alamat IP atau identitas pengguna. Untuk mengetahui informasi selengkapnya, lihat Mengizinkan akses ke resource yang dilindungi dari luar perimeter.

Menyiapkan batasan kebijakan organisasi

Untuk memastikan pemeriksaan Kontrol Layanan VPC diterapkan dengan benar dan Anda membatasi build di organisasi Google Cloud agar hanya menggunakan kumpulan pribadi yang ditentukan, tetapkan batasan kebijakan organisasi constraints/cloudbuild.allowedWorkerPools. Anda dapat menerapkan kebijakan organisasi ke seluruh organisasi, atau ke project atau folder di organisasi. Misalnya, kebijakan organisasi Anda dapat menentukan bahwa:

  • Semua build di organisasi menggunakan kumpulan pribadi yang ditentukan.
  • Semua build dalam folder menggunakan kumpulan pribadi yang ditentukan.
  • Semua build dalam project menggunakan kumpulan pribadi yang ditentukan.

Izin IAM: Untuk mengelola kebijakan organisasi, Anda memerlukan peran Organization Policy Administrator (roles/orgpolicy.policyAdmin). Untuk mengetahui petunjuk tentang cara memberikan peran, lihat Mengonfigurasi akses ke resource Cloud Build.

Perintah gcloud resource-manager org-policies allow menetapkan kebijakan organisasi yang mengharuskan build di organisasi untuk hanya menggunakan kumpulan pribadi yang ditentukan:

 gcloud resource-manager org-policies allow \
     cloudbuild.allowedWorkerPools \
     projects/PRIVATEPOOL_PROJECT_ID/locations/LOCATION/workerPools/PRIVATEPOOL_ID \
     --organization ORGANIZATION_ID

Ganti nilai placeholder dalam perintah di atas dengan nilai berikut:

  • PRIVATEPOOL_ID: ID kumpulan pribadi untuk menjalankan build.

  • PRIVATEPOOL_PROJECT_ID: ID project Google Cloud yang berisi kumpulan pribadi.

  • LOCATION: wilayah yang berisi kolam renang pribadi.

  • ORGANIZATION_ID: ID Organisasi tempat Anda menjalankan build.

Perintah ini mendukung awalan under: dan is.

Untuk menetapkan kebijakan organisasi yang mewajibkan semua build di organisasi untuk menggunakan kumpulan pribadi apa pun di bawah organisasi tersebut:

 gcloud resource-manager org-policies allow \
     cloudbuild.allowedWorkerPools under:organizations/ORGANIZATION_ID \
     --organization ORGANIZATION_ID

Dalam hal ini, ORGANIZATION_ID adalah ID organisasi yang berisi kumpulan pribadi.

Untuk menetapkan kebijakan organisasi yang mewajibkan semua build dalam project dalam folder untuk menggunakan kumpulan pribadi dalam project yang ditentukan:

 gcloud resource-manager org-policies allow \
     cloudbuild.allowedWorkerPools under:projects/PROJECT_ID \
     --folder FOLDER_ID

Dengan PROJECT_ID adalah ID project yang berisi kumpulan pribadi dan FOLDER_ID berisi project tempat Anda menjalankan build.

Untuk menetapkan kebijakan organisasi yang mengharuskan semua build dalam project untuk menggunakan kumpulan pribadi dalam project yang ditentukan:

 gcloud resource-manager org-policies allow \
     cloudbuild.allowedWorkerPools under:projects/PRIVATEPOOL_PROJECT_ID \
     --project BUILD_PROJECT_ID

Dengan PRIVATEPOOL_PROJECT_ID adalah ID project yang berisi kumpulan pribadi dan BUILD_PROJECT_ID adalah ID project tempat Anda menjalankan build.

Perhatikan pertimbangan berikut saat menerapkan batasan kebijakan organisasi constraints/cloudbuild.allowedWorkerPools:

  • Jika Anda menerapkan batasan kebijakan organisasi ini ke project Google Cloud, pastikan semua build dalam project menggunakan kumpulan pribadi; build yang mencoba menggunakan kumpulan bersama default akan gagal.

  • Jika organisasi Google Cloud Anda berisi layanan seperti App Engine atau Cloud Functions yang secara implisit menggunakan Cloud Build, menerapkan batasan kebijakan organisasi ini dapat menyebabkan layanan ini tidak berfungsi seperti yang diharapkan.

Membuat kumpulan pribadi di perimeter layanan

Konsol

  1. Buka halaman Worker Pool di konsol Google Cloud:

    Buka halaman kumpulan pekerja Cloud Build

  2. Pilih project tempat Anda ingin membuat kolam renang pribadi.

  3. Di halaman Worker pool, klik Create.

  4. Di panel samping Buat kolam renang pribadi:

    1. Masukkan nama untuk kolam renang pribadi Anda.

    2. Pilih region untuk membuat kolam renang pribadi.

    3. Pilih jenis mesin Compute Engine yang ingin digunakan untuk kumpulan pribadi Anda.

    4. Masukkan nomor project untuk project Google Cloud tempat Anda membuat jaringan VPC.

    5. Masukkan nama jaringan VPC Anda.

    6. Hapus centang Tetapkan IP eksternal.

    7. Klik Create.

gcloud

  1. Buat file konfigurasi kumpulan pribadi dalam format YAML atau JSON, dan setel tanda egressOption ke NO_PUBLIC_EGRESS:

    privatePoolV1Config:
      networkConfig:
        egressOption: NO_PUBLIC_EGRESS
        peeredNetwork: PEERED_NETWORK
      workerConfig:
        diskSizeGb: 'PRIVATE_POOL_DISK_SIZE'
        machineType: PRIVATE_POOL_MACHINE_TYPE
    

    Dengan keterangan:

    • PEERED_NETWORK adalah URL resource jaringan dari jaringan yang di-peering ke jaringan penyedia layanan. PEERED_NETWORK harus dalam format projects/NETWORK_PROJECT_ID/global/networks/NETWORK_NAME, dengan NETWORK_PROJECT_ID adalah project ID project Google Cloud yang menyimpan jaringan VPC Anda, dan NETWORK_NAME adalah nama jaringan VPC Anda.
    • PRIVATE_POOL_MACHINE_TYPE adalah jenis mesin Compute Engine untuk instance kumpulan pribadi. Untuk jenis mesin yang didukung, lihat Skema file konfigurasi kumpulan pribadi.
    • PRIVATE_POOL_DISK_SIZE adalah ukuran disk untuk instance kumpulan pribadi dalam GB. Tentukan nilai yang lebih besar atau sama dengan 100 dan kurang dari atau sama dengan 1.000. Jika Anda menentukan 0, Cloud Build akan menggunakan nilai default 100.
    • egressOption adalah flag guna mengaktifkan perimeter Kontrol Layanan VPC untuk kumpulan pribadi Anda. Tetapkan parameter ini ke NO_PUBLIC_EGRESS untuk membuat kumpulan pribadi Anda di dalam perimeter Kontrol Layanan VPC.
  2. Jalankan perintah gcloud berikut, dengan PRIVATEPOOL_ID adalah ID unik untuk kumpulan pribadi Anda, PRIVATEPOOL_CONFIG_FILE adalah nama file konfigurasi kumpulan pribadi Anda, dan REGION adalah region tempat Anda ingin membuat kumpulan pribadi:

    gcloud builds worker-pools create PRIVATEPOOL_ID --config-from-file PRIVATEPOOL_CONFIG_FILE --region REGION
    

Opsional: Mengaktifkan panggilan internet publik pada jaringan VPC

Pastikan jaringan VPC Anda dikonfigurasi untuk mengizinkan konektivitas jaringan ke tempat repositori Anda dihosting (misalnya github.com) dengan setelan berikut:

  1. Dalam file konfigurasi kumpulan pribadi, pastikan kolom egressOption disetel ke NO_PUBLIC_EGRESS.

  2. Jaringan VPC tempat kumpulan pribadi Anda berjalan didefinisikan sebagai PeeredNetwork. Untuk mengizinkan panggilan ke host repositori Anda, pastikan jaringan VPC ini mengizinkan traffic keluar publik ke host repositori Anda. Untuk mengetahui informasi cara melakukannya, lihat aturan rute dan firewall.

Menjalankan build di kumpulan pribadi dalam perimeter layanan

Build yang berjalan dalam perimeter layanan tidak memiliki akses ke internet publik. Oleh karena itu, Anda harus melakukan beberapa tindakan sebelum menjalankan build.

Mengirim image dan artefak yang dibangun

Jika build Anda mengirim image dan artefak ke Container Registry (Tidak digunakan lagi), Artifact Registry, atau Cloud Storage yang berada di project Google Cloud yang berbeda, pastikan untuk menambahkan project tersebut ke perimeter layanan yang sama dengan project tempat build Anda berasal.

Membuat bucket log

Build yang dijalankan dalam perimeter layanan tidak akan memiliki izin untuk menyimpan log build di bucket log Cloud Storage default. Pilih salah satu opsi berikut:

Build yang berjalan

Jalankan build menggunakan petunjuk di bagian Menjalankan build di kolam pribadi.

Langkah selanjutnya