Kontrol Layanan VPC adalah fitur yang memungkinkan Anda menyiapkan perimeter yang aman untuk mencegah pemindahan data yang tidak sah. Google Cloud Halaman ini menunjukkan cara menggunakan Kontrol Layanan VPC dengan kumpulan pribadi Cloud Build untuk meningkatkan keamanan build Anda.
Sebelum memulai
Untuk menggunakan contoh command line dalam panduan ini, instal dan konfigurasi Google Cloud CLI.
Siapkan koneksi pribadi antara jaringan Virtual Private Cloud Anda dan jaringan VPC tempat kumpulan pribadi berada. Untuk mengetahui petunjuknya, lihat menyiapkan lingkungan untuk membuat pool pribadi.
Build yang berjalan dalam perimeter layanan tidak akan memiliki izin untuk menyimpan log build di bucket log Cloud Storage default. Sebelum menjalankan build, siapkan file konfigurasi build dengan salah satu opsi berikut:
- Pilih untuk menyimpan log build Anda di Cloud Logging dengan menyetel
loggingMode
keCLOUD_LOGGING_ONLY
. - Di project pribadi Anda, buat bucket log Cloud Storage untuk menyimpan log build Anda. Untuk mengetahui informasi selengkapnya, lihat Menyimpan log build di bucket yang dibuat pengguna.
- Nonaktifkan log build dengan menyetel
loggingMode
keNONE
.
- Pilih untuk menyimpan log build Anda di Cloud Logging dengan menyetel
Jika build Anda mengirimkan image dan artefak ke Artifact Registry atau Cloud Storage di project yang berbeda, tambahkan project tersebut ke perimeter layanan yang sama dengan project asal build Anda. Google Cloud
Opsional: Pahami konfigurasi jenis mesin dan ketersediaan regional. Untuk mengetahui informasi selengkapnya, lihat
workerconfig
dalam dokumentasi skema file konfigurasi pool pribadi.
Untuk mendapatkan izin yang diperlukan untuk menyiapkan perimeter layanan, minta administrator untuk memberi Anda peran IAM berikut di akun layanan Anda:
-
Organization Viewer (
roles/resourcemanager.organizationViewer
) -
Access Context Manager Editor (
roles/accesscontextmanager.policyEditor
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran yang telah ditentukan lainnya.
Menyiapkan pool pribadi di perimeter Kontrol Layanan VPC
Untuk menggunakan Kontrol Layanan VPC dengan Cloud Build, Anda harus membuat dan mengonfigurasi perimeter layanan terlebih dahulu, 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
Ikuti Panduan Memulai Kontrol Layanan VPC untuk:
- Membuat perimeter layanan.
Tambahkan project tempat Anda berencana membuat kumpulan pribadi ke perimeter.
Batasi Cloud Build API.
Setelah menyiapkan perimeter layanan, semua panggilan ke Cloud Build API akan diperiksa untuk memastikan bahwa panggilan berasal dari dalam perimeter yang sama.
Memberi akun layanan akses ke perimeter Kontrol Layanan VPC
Dalam kasus berikut, Anda harus memberi akun layanan Cloud Build atau Compute Engine lama akses ke perimeter Kontrol Layanan VPC agar build Anda dapat mengakses resource dalam perimeter:
Jika Anda menggunakan akun layanan Cloud Build atau Compute Engine lama 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 memberikan akses akun layanan Cloud Build atau Compute Engine lama ke perimeter Kontrol Layanan VPC jika Anda 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 atau Compute Engine lama akses ke perimeter Kontrol Layanan VPC:
Catat alamat email akun layanan lama:
Buka halaman IAM:
Pilih project yang Anda tambahkan ke perimeter layanan.
Di tabel izin, temukan alamat email yang sesuai dengan akun layanan Cloud Build lama.
Perbarui kebijakan ingress perimeter layanan untuk mengizinkan akun layanan memanggil API Cloud Build. Aturan ingress ini memungkinkan akun layanan melakukan panggilan API
CreateBuild
. Untuk mengetahui informasi selengkapnya tentang cara menetapkan kebijakan traffic masuk Kontrol Layanan VPC, lihat Mengonfigurasi kebijakan traffic masuk dan keluar serta Aturan traffic masuk dan keluar.- ingressFrom: identities: - serviceAccount:SERVICE_ACCOUNT_EMAIL sources: - accessLevel: '*' ingressTo: operations: - serviceName: 'cloudbuild.googleapis.com' methodSelectors: - method: '*' resources: - 'projects/PROJECT_NUMBER'
Perbarui kebijakan perimeter dengan menjalankan perintah berikut, dengan mengganti variabel dengan nilai yang sesuai:
gcloud beta access-context-manager perimeters update PERIMETER_NAME \ --set-ingress-policies=INGRESS-FILENAME \ --policy=POLICY_ID
Dengan:
SERVICE_ACCOUNT_EMAIL
: alamat email akun layanan.PROJECT_NUMBER
: nomor project Google Cloud project yang Anda tambahkan ke perimeter VPC Service Controls.PERIMETER_NAME
: nama perimeter Kontrol Layanan VPC Anda.INGRESS-FILENAME
: nama file kebijakan ingress 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 panggilan tersebut 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 menggunakan 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 bahwa 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 dalam 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
Administrator Kebijakan Organisasi
(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 mewajibkan build di organisasi hanya
menggunakan pool pribadi yang ditentukan:
gcloud resource-manager org-policies allow \
cloudbuild.allowedWorkerPools \
projects/PRIVATEPOOL_PROJECT_ID/locations/LOCATION/workerPools/PRIVATEPOOL_ID \
--organization ORGANIZATION_ID
Dengan:
PRIVATEPOOL_ID
: ID pool pribadi untuk menjalankan build.PRIVATEPOOL_PROJECT_ID
: ID Google Cloud project yang berisi private pool.LOCATION
: region yang berisi pool 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 menggunakan kumpulan pribadi mana pun di organisasi tersebut:
gcloud resource-manager org-policies allow \
cloudbuild.allowedWorkerPools under:organizations/ORGANIZATION_ID \
--organization ORGANIZATION_ID
Dengan ORGANIZATION_ID
adalah ID organisasi yang
berisi kumpulan pribadi.
Untuk menetapkan kebijakan organisasi yang mewajibkan semua build di project dalam folder menggunakan kumpulan pribadi di 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 mewajibkan semua build dalam project menggunakan kumpulan pribadi di 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 pool pribadi dan BUILD_PROJECT_ID adalah ID project tempat Anda menjalankan build.
Perhatikan hal-hal 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 Anda berisi layanan seperti fungsi App Engine atau Cloud Run yang secara implisit menggunakan Cloud Build, penerapan batasan kebijakan organisasi ini dapat menyebabkan layanan tersebut tidak berfungsi seperti yang diharapkan. Google Cloud
Membuat kumpulan pribadi di perimeter layanan
Google Cloud console
Buka halaman Worker Pool di konsol Google Cloud :
Klik Buat kumpulan pribadi.
Halaman Buat pool pribadi akan ditampilkan.
Masukkan informasi berikut untuk membuat pool pribadi Anda:
Nama: Masukkan nama untuk pool pribadi Anda. Nilai ini hanya boleh berisi karakter alfanumerik
/[a-z][0-9]/
atau tanda hubung-
. Nama kumpulan pribadi Anda harus terdiri dari 1 hingga 63 karakter.Region: Pilih region tempat Anda ingin membuat pool pribadi.
Machine configuration: Konfigurasi berikut:
Seri: Pilih seri mesin.
Jenis mesin: Setelan ini menampilkan jenis mesin, berdasarkan seri mesin yang Anda pilih, yang dapat digunakan oleh kumpulan pekerja. Jenis mesin yang tersedia bervariasi menurut wilayah.
Ukuran disk: Masukkan ukuran disk untuk kumpulan data pribadi Anda. Tentukan nilai yang lebih besar dari atau sama dengan 100 dan kurang dari atau sama dengan 4000. Jika Anda tidak memberikan nilai, Cloud Build akan menggunakan ukuran disk 100.
Virtualisasi bertingkat: Jika Anda memilih mesin seri C3, Anda dapat mengaktifkan virtualisasi bertingkat. Dengan fitur ini, Anda dapat menjalankan instance virtual machine (VM) di dalam VM lain sehingga Anda dapat membuat lingkungan virtualisasi Anda sendiri.
Di bagian Network type, pilih Private network, lalu pilih opsi berikut:
Project: Pilih project ID Google Cloud Anda.
Jaringan: Pilih jaringan Anda dari menu drop-down. Jika Anda belum membuat jaringan, lihat Membuat dan mengelola jaringan VPC untuk mempelajari cara membuat jaringan.
Rentang IP: Masukkan rentang IP internal yang dapat digunakan oleh jaringan produsen Cloud Build untuk dialokasikan ke VM yang mempertahankan koneksi dengan repositori pribadi.
Anda dapat menentukan rentang menggunakan notasi perutean Classless Inter-Domain Routing (CIDR) dalam format
STARTING_IP_ADDRESS/SUBNET_PREFIX_SIZE
. Misalnya,192.0.2.0/24
memiliki panjang awalan 24. 24 bit pertama rentang IP digunakan sebagai subnet mask (192.0.2.0
), sedangkan rentang alamat host yang mungkin adalah dari192.0.2.0
hingga192.0.2.255
.Nilai panjang awalan tidak boleh melebihi
/29
. Jika tidak ada nilai yang ditentukan untuk rentang, nilai default/24
akan otomatis ditetapkan. Jika tidak ada nilai yang ditentukan untuk panjang awalan, alamat IP akan otomatis ditetapkan dalam jaringan VPC yang di-peering. Jika tidak ada nilai yang ditentukan untuk alamat IP, alamat IP akan otomatis diberi rentang dalam jaringan VPC yang di-peering.Hapus centang pada Tetapkan IP eksternal untuk membatasi akses ke jaringan pribadi Anda.
Klik Buat untuk membuat pool pribadi Anda.
gcloud
Buat file konfigurasi pool pribadi dalam format YAML atau JSON, dan tetapkan flag
egressOption
keNO_PUBLIC_EGRESS
:privatePoolV1Config: networkConfig: egressOption: NO_PUBLIC_EGRESS peeredNetwork: PEERED_NETWORK workerConfig: diskSizeGb: 'PRIVATE_POOL_DISK_SIZE' machineType: PRIVATE_POOL_MACHINE_TYPE
Dengan:
PEERED_NETWORK
adalah URL resource jaringan dari jaringan yang di-peering ke jaringan penyedia layanan.PEERED_NETWORK
harus dalam formatprojects/NETWORK_PROJECT_ID/global/networks/NETWORK_NAME
, denganNETWORK_PROJECT_ID
adalah project ID project Google Cloud yang memiliki jaringan VPC Anda danNETWORK_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 pool pribadi dalam GB. Tentukan nilai yang lebih besar dari atau sama dengan 100 dan kurang dari atau sama dengan 1000. Jika Anda menentukan0
, Cloud Build akan menggunakan nilai default 100.egressOption
adalah tanda untuk mengaktifkan perimeter Kontrol Layanan VPC untuk pool pribadi Anda. Tetapkan ini keNO_PUBLIC_EGRESS
untuk membuat kumpulan pribadi Anda dalam perimeter Kontrol Layanan VPC.
Jalankan perintah
gcloud
berikut, denganPRIVATEPOOL_ID
adalah ID unik untuk pool pribadi Anda,PRIVATEPOOL_CONFIG_FILE
adalah nama file konfigurasi pool pribadi Anda, danREGION
adalah region tempat Anda ingin membuat pool pribadi:gcloud builds worker-pools create PRIVATEPOOL_ID --config-from-file PRIVATEPOOL_CONFIG_FILE --region REGION
Opsional: Aktifkan panggilan internet publik di jaringan VPC
Untuk mengaktifkan jaringan VPC Anda agar mengizinkan konektivitas jaringan ke tempat repositori Anda dihosting (misalnya, github.com), konfigurasikan kedua setelan berikut:
Jaringan VPC tempat kumpulan pribadi Anda berjalan ditentukan sebagai PeeredNetwork. Untuk mengizinkan panggilan ke host repositori Anda, pastikan jaringan VPC ini mengizinkan traffic keluar publik ke host repositori Anda. Untuk mengetahui informasi tentang cara melakukannya, lihat rute dan aturan firewall.
Lakukan salah satu hal berikut:
Tetapkan kolom
egressOption
di file konfigurasi kumpulan pribadi kePUBLIC_EGRESS
.Siapkan kumpulan pribadi Anda untuk menggunakan IP eksternal statis.
Batasan
Perlindungan Kontrol Layanan VPC hanya tersedia untuk build yang dijalankan di pool pribadi; Anda tidak dapat menggunakan Kontrol Layanan VPC dengan build yang dijalankan di pool default.
Pemicu Cloud Build Pub/Sub tidak didukung saat Kontrol Layanan VPC digunakan.
Langkah berikutnya
- Pelajari cara menjalankan build di pool pribadi.
- Pelajari cara mengonfigurasi kasus penggunaan jaringan yang umum digunakan.