Halaman ini memberikan petunjuk tentang cara mengamankan deployment image ke Cloud Run dan Google Kubernetes Engine menggunakan Cloud Build.
Pelajari cara mengonfigurasi Otorisasi Biner untuk memeriksa pengesahan build dan memblokir deployment image yang tidak dibuat oleh Cloud Build. Proses ini dapat mengurangi risiko men-deploy software yang tidak sah.
Sebelum memulai
Aktifkan Cloud Build, Otorisasi Biner, dan Artifact Registry API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.Untuk menggunakan contoh command line dalam panduan ini, instal dan konfigurasi the Google Cloud SDK.
Mengontrol deployment dengan Otorisasi Biner
Kebijakan policy di Otorisasi Biner adalah sekumpulan aturan yang mengatur deployment image. Anda dapat mengonfigurasi aturan untuk mewajibkan pengesahan yang ditandatangani secara digital .
Cloud Build membuat dan menandatangani pengesahan pada waktu build. Dengan
Otorisasi Biner, Anda dapat menggunakan built-by-cloud-build attestor untuk
memverifikasi pengesahan dan hanya men-deploy image yang dibuat oleh Cloud Build.
Untuk membuat attestor built-by-cloud-build di project Anda, jalankan build di project tersebut.
Untuk hanya mengizinkan image yang dibuat oleh Cloud Build untuk di-deploy, lakukan langkah-langkah berikut:
Konsol
Buka halaman Otorisasi Biner di Google Cloud konsol:
Di tab Policy, klik Edit Policy.
Dalam dialog Edit Policy, pilih Allow only images that have been approved by all of the following attestors.
Klik Add Attestors.
Di kotak dialog Add attestors, lakukan hal berikut:
- Pilih Add by project and attestor name , lalu lakukan langkah-langkah berikut:
- Di kolom Project name, masukkan project tempat Anda menjalankan Cloud Build.
- Klik kolom Attestor name dan perhatikan bahwa attestor
built-by-cloud-buildtersedia. - Klik
built-by-cloud-build.
Atau, pilih Add by attestor resource ID. Di Attestor resource ID, masukkan
projects/PROJECT_ID/attestors/built-by-cloud-buildMengganti
PROJECT_IDdengan project tempat Anda menjalankan Cloud Build.
- Pilih Add by project and attestor name , lalu lakukan langkah-langkah berikut:
Klik Add 1 attestor.
Klik Save Policy.
gcloud
Ekspor kebijakan yang ada ke file menggunakan perintah berikut:
gcloud container binauthz policy export > /tmp/policy.yamlEdit file kebijakan Anda.
Edit salah satu aturan berikut:
defaultAdmissionRuleclusterAdmissionRulesistioServiceIdentityAdmissionRuleskubernetesServiceAccountAdmissionRules
Tambahkan blok
requireAttestationsByke aturan jika belum ada.Di blok
requireAttestationsBy, tambahkanprojects/PROJECT_ID/attestors/built-by-cloud-buildMengganti
PROJECT_IDdengan project tempat Anda menjalankan Cloud Build.Simpan file kebijakan.
Impor file kebijakan.
gcloud container binauthz policy import /tmp/policy.yamlBerikut adalah contoh file kebijakan yang berisi referensi ke
built-by-cloud-build-attestor:defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/PROJECT_ID/attestors/built-by-cloud-build name: projects/PROJECT_ID/policyGanti
PROJECT_IDdengan project ID tempat Anda menjalankan Cloud Build.
Anda dapat melihat error kebijakan dalam pesan log Otorisasi Biner untuk GKE atau Cloud Run
Menggunakan mode uji coba
Dalam mode uji coba, Otorisasi Biner memeriksa kepatuhan kebijakan tanpa benar-benar memblokir deployment. Sebagai gantinya, pesan status kepatuhan kebijakan dicatat ke Cloud Logging. Anda dapat menggunakan log ini untuk menentukan apakah kebijakan pemblokiran Anda berfungsi dengan benar dan untuk mengidentifikasi positif palsu.
Untuk mengaktifkan uji coba, lakukan hal berikut:
Konsol
Buka halaman Otorisasi Biner di Google Cloud konsol.
Klik Edit Policy.
Di Default Rule atau aturan tertentu, pilih Dry-run mode.
Klik Save Policy.
gcloud
Ekspor kebijakan Otorisasi Biner ke file YAML:
gcloud container binauthz policy export > /tmp/policy.yamlDi editor teks, tetapkan
enforcementModekeDRYRUN_AUDIT_LOG_ONLYdan simpan file.Untuk memperbarui kebijakan, impor file dengan menjalankan perintah berikut:
gcloud container binauthz policy import /tmp/policy.yaml
Anda dapat melihat error kebijakan dalam pesan log Otorisasi Biner untuk GKE atau Cloud Run
Batasan
Cloud Build dan Otorisasi Biner harus berada dalam project yang sama. Jika Anda menjalankan platform deployment di project lain, konfigurasi peran IAM untuk penyiapan multi-project, dan lihat project Cloud Build saat menambahkan attestor
built-by-cloud-builddi Otorisasi Biner.Cloud Build tidak membuat pengesahan saat Anda mengirim image ke Artifact Registry menggunakan langkah build
docker pusheksplisit. Pastikan Anda mengirim ke Artifact Registry menggunakan kolomimagesdi langkah builddocker build. Untuk mengetahui informasi selengkapnya tentangimages, lihat Cara menyimpan image di Artifact Registry.Anda harus menggunakan file konfigurasi build terpisah untuk pipeline build dan pipeline deployment. Hal ini karena Cloud Build hanya membuat pengesahan setelah pipeline build berhasil diselesaikan. Otorisasi Biner kemudian akan memeriksa pengesahan sebelum men-deploy image.
Mengaktifkan pengesahan di kumpulan pribadi
Secara default, Cloud Build tidak membuat pengesahan Otorisasi Biner
untuk build di kumpulan pribadi. Untuk membuat
pengesahan, tambahkan opsi requestedVerifyOption: VERIFIED ke
file konfigurasi build Anda:
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'us-central1-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1', '.' ]
images:
- 'us-central1-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'
options:
requestedVerifyOption: VERIFIED
Setelah menambahkan requestedVerifyOption, Cloud Build akan mengaktifkan
pembuatan pengesahan dan metadata provenance untuk
image Anda.
Melihat metadata attestor
Attestor dibuat saat pertama kali Anda menjalankan build di project. ID attestor memiliki format
projects/PROJECT_ID/attestors/built-by-cloud-build,
dengan PROJECT_ID adalah project ID Anda.
Anda dapat memeriksa metadata attestor build menggunakan perintah berikut:
curl -X GET -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://binaryauthorization.googleapis.com/v1beta1/projects/PROJECT_ID/attestors/built-by-cloud-build
Ganti PROJECT_ID dengan project tempat Anda menjalankan Cloud Build.
Output berisi informasi tentang attestor dan kunci publik yang sesuai. Contoh:
name": "projects/PROJECT_ID/attestors/built-by-cloud-build",
"userOwnedDrydockNote": {
"noteReference": "projects/PROJECT_ID/notes/built-by-cloud-build",
"publicKeys": [
{
"id": "//cloudkms.googleapis.com/v1/projects/verified-builder/locations/asia/keyRings/attestor/cryptoKeys/builtByGCB/cryptoKeyVersions/1",
"pkixPublicKey": {
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEMMvFxZLgIiWOLIXsaTkjTmOKcaK7\neIZrgpWHpHziTFGg8qyEI4S8O2/2wh1Eru7+sj0Sh1QxytN/KE5j3mTvYA==\n-----END PUBLIC KEY-----\n",
"signatureAlgorithm": "ECDSA_P256_SHA256"
}
},
...
}
],
"delegationServiceAccountEmail": "service-942118413832@gcp-binaryauthorization.iam.gserviceaccount.com"
},
"updateTime": "2021-09-24T15:26:44.808914Z",
"description": "Attestor autogenerated by build ID fab07092-30f4-4f70-caf7-4545cbc404d6"
Langkah berikutnya
- Pelajari tentang Otorisasi Biner.