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 dihasilkan oleh Cloud Build. Proses ini dapat mengurangi risiko deployment software yang tidak sah.
Sebelum memulai
Enable the Cloud Build, Binary Authorization, and Artifact Registry APIs.
Untuk menggunakan contoh command line dalam panduan ini, instal dan konfigurasikan Google Cloud SDK.
Mengontrol deployment dengan Otorisasi Biner
Kebijakan di Otorisasi Biner adalah sekumpulan aturan yang mengatur deployment image. Anda dapat mengonfigurasi aturan untuk mewajibkan pernyataan yang ditandatangani secara digital.
Cloud Build membuat dan menandatangani pengesahan pada waktu build. Dengan
Otorisasi Biner, Anda dapat menggunakan penegaskan built-by-cloud-build
untuk
memverifikasi pengesahan dan hanya men-deploy image yang dibuat oleh Cloud Build.
Untuk membuat pengautentikasi built-by-cloud-build
dalam project Anda, jalankan build di
project tersebut.
Untuk mengizinkan hanya image yang dibuat oleh Cloud Build yang di-deploy, lakukan langkah-langkah berikut:
Konsol
Buka halaman Binary Authorization di konsol Google Cloud:
Di tab Kebijakan, klik Edit Kebijakan.
Pada dialog Edit Policy, pilih Allow only images that have been approved by all of the following attestors.
Klik Tambahkan Pengesah.
Pada kotak dialog Add attestors, lakukan hal berikut:
- Pilih Tambahkan menurut project dan nama attestor, lalu lakukan langkah-langkah
berikut:
- Di kolom Project name, masukkan project tempat Anda menjalankan Cloud Build.
- Klik kolom Nama pengautentikasi dan perhatikan bahwa
pengautentikasi
built-by-cloud-build
tersedia. - Klik
built-by-cloud-build
.
Atau, pilih Tambahkan menurut ID resource attestor. Di ID resource attestor, masukkan
projects/PROJECT_ID/attestors/built-by-cloud-build
Mengganti
PROJECT_ID
dengan project tempat Anda menjalankan Cloud Build.
- Pilih Tambahkan menurut project dan nama attestor, lalu lakukan langkah-langkah
berikut:
Klik Tambahkan 1 pengautentikasi.
Klik Simpan Kebijakan.
gcloud
Ekspor kebijakan yang ada ke file menggunakan perintah berikut:
gcloud container binauthz policy export > /tmp/policy.yaml
Edit file kebijakan Anda.
Edit salah satu aturan berikut:
defaultAdmissionRule
clusterAdmissionRules
istioServiceIdentityAdmissionRules
kubernetesServiceAccountAdmissionRules
Tambahkan blok
requireAttestationsBy
ke aturan jika belum ada.Di blok
requireAttestationsBy
, tambahkanprojects/PROJECT_ID/attestors/built-by-cloud-build
Mengganti
PROJECT_ID
dengan project tempat Anda menjalankan Cloud Build.Simpan file kebijakan.
Impor file kebijakan.
gcloud container binauthz policy import /tmp/policy.yaml
Berikut 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/policy
Ganti
PROJECT_ID
dengan 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 akan dicatat ke Cloud Logging. Anda dapat menggunakan log ini untuk menentukan apakah kebijakan pemblokiran berfungsi dengan benar dan untuk mengidentifikasi positif palsu.
Untuk mengaktifkan uji coba, lakukan hal berikut:
Konsol
Buka halaman Otorisasi Biner di konsol Google Cloud.
Klik Edit Policy.
Di Aturan Default atau aturan tertentu, pilih Mode uji coba.
Klik Simpan Kebijakan.
gcloud
Ekspor kebijakan Otorisasi Biner ke file YAML:
gcloud container binauthz policy export > /tmp/policy.yaml
Di editor teks, tetapkan
enforcementMode
keDRYRUN_AUDIT_LOG_ONLY
dan 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 Binary Authorization harus berada dalam project yang sama. Jika Anda menjalankan platform deployment di project lain, konfigurasikan peran IAM untuk penyiapan multi-project, dan lihat project Cloud Build saat menambahkan pengautentikasi
built-by-cloud-build
di Otorisasi Biner.Cloud Build tidak menghasilkan pengesahan saat Anda mengirim image ke Artifact Registry menggunakan langkah build
docker push
eksplisit. Pastikan Anda melakukan push ke Artifact Registry menggunakan kolomimages
di langkah builddocker build
. Untuk mengetahui informasi selengkapnya tentangimages
, lihat Berbagai 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 menghasilkan pengesahan setelah pipeline build berhasil selesai. 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
atestasi, 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 asal untuk
image Anda.
Melihat metadata pengautentikasi
Penanda tangan dibuat saat pertama kali Anda menjalankan build dalam project. ID
penanda tangan 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 pengautentikasi 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 selanjutnya
- Pelajari Otorisasi Biner.