Memperbarui kebijakan Otorisasi Biner
Dokumen ini menjelaskan cara mengecualikan gambar di kebijakan Otorisasi Biner.
Dalam dokumen ini, Anda akan memperbarui kebijakan untuk mengecualikan image container di Container Registry dan Artifact Registry dari penerapan Otorisasi Biner serta menetapkan aturan default untuk melarang deployment semua container lain.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Artifact Registry, Binary Authorization.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Artifact Registry, Binary Authorization.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
- Jika Anda tidak menggunakan Cloud Shell,
instal
kubectl
.
Membuat cluster yang mengaktifkan Otorisasi Biner
Buat cluster GKE dengan Otorisasi Biner yang diaktifkan. Ini adalah cluster tempat Anda ingin menjalankan image container yang telah di-deploy.
Konsol Google Cloud
Buka halaman Cluster GKE di Google Cloud Console.
Konsol akan menampilkan daftar cluster GKE di project Google Cloud Anda.
Klik Buat Cluster.
Masukkan
test-cluster
di kolom Name.Pilih Zonal di opsi Location Type.
Pilih
us-central1-a
dari daftar drop-down Zone.Klik link Keamanan untuk menampilkan panel Keamanan.
Di panel Security, pilih Enable Binary Authorization.
Pilih Enforce-only.
Klik Create.
gcloud
Jalankan gcloud container clusters create
dengan flag --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
diaktifkan.
gcloud container clusters create \ --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \ --zone us-central1-a \ test-cluster
Lihat kebijakan Default
Secara default, kebijakan Otorisasi Biner Anda dikonfigurasi untuk mengizinkan semua image container di-deploy.
Konsol Google Cloud
Untuk melihat kebijakan default, lakukan hal berikut:
Buka halaman Otorisasi Biner di Konsol Google Cloud.
Konsol akan menampilkan detail tentang kebijakan tersebut.
Klik Edit Kebijakan.
Di Project Default Rule, opsi Allow All Images dipilih.
gcloud
Untuk melihat kebijakan default, ekspor file YAML kebijakan, lakukan hal berikut:
gcloud container binauthz policy export
Secara default, file tersebut memiliki konten berikut:
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
evaluationMode: ALWAYS_ALLOW
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
name: projects/<var>PROJECT_ID</var>/policy
REST API
Untuk melihat kebijakan default, ambil dalam format JSON seperti berikut:
curl \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"
REST API menampilkan hal berikut:
{ "name": "projects/PROJECT_ID/policy", "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_ALLOW", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } }
Hanya izinkan gambar yang dikecualikan
Bagian ini menjelaskan cara mengubah kebijakan untuk mengecualikan image dan melarang semua image lain untuk di-deploy.
Konsol Google Cloud
Untuk mengubah kebijakan, lakukan hal berikut:
Kembali ke halaman Otorisasi Biner di konsol Google Cloud.
Klik Edit Kebijakan.
Pilih Larang Semua Gambar.
Di bagian Gambar yang dikecualikan dari aturan deployment, luaskan Jalur image.
Klik Add Image Path.
Container Registry
Di New image path, tempel jalur berikut dari repositori Container Registry:
gcr.io/google-samples/hello-app:1.0
Artifact Registry
Di New image path, tempel jalur berikut dari repositori Artifact Registry:
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Klik Done untuk menyimpan jalur image.
Klik Simpan Kebijakan.
gcloud
Untuk mengubah kebijakan agar mengizinkan image contoh dari Container Registry dan Artifact Registry, lakukan tindakan berikut:
Ekspor file YAML kebijakan:
gcloud container binauthz policy export > /tmp/policy.yaml
Di editor teks, ubah
evaluationMode
dariALWAYS_ALLOW
menjadiALWAYS_DENY
, lalu tambahkan gambar yang dikecualikan keadmissionWhitelistPatterns
.Untuk mengecualikan contoh image berikut dari Container Registry dan Artifact Registry, ubah file YAML kebijakan Anda sebagai berikut:
admissionWhitelistPatterns: - namePattern: gcr.io/google-samples/hello-app:1.0 - namePattern: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG name: projects/<var>PROJECT_ID</var>/policy
Impor kembali file YAML kebijakan ke Otorisasi Biner:
gcloud container binauthz policy import /tmp/policy.yaml
REST API
Untuk mengubah kebijakan, lakukan hal berikut:
Buat file teks dengan kebijakan yang diperbarui dalam format JSON:
cat > /tmp/policy.json << EOM { "name": "projects/${PROJECT_ID}/policy", "admissionWhitelistPatterns": [ { "namePattern": "gcr.io/google-samples/hello-app:1.0" }, { "namePattern": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0" } ], "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_DENY", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } } EOM
Kirim kebijakan yang telah diperbarui ke REST API:
curl -X PUT \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ --data-binary @/tmp/policy.json \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"
Menguji kebijakan
Untuk menguji kebijakan dengan men-deploy image yang Anda tambahkan ke daftar Exempt image
yang diizinkan,
lakukan hal berikut:
Men-deploy image yang dikecualikan ke cluster.
Konsol Google Cloud
Men-deploy image yang dikecualikan:
Buka halaman Cluster GKE di Google Cloud Console.
Klik Deploy.
Konsol akan meminta Anda untuk memasukkan detail deployment.
Pilih Image Container yang Ada.
Masukkan jalur image container.
Container Registry
Untuk men-deploy image dari Container Registry, masukkan hal berikut:
gcr.io/google-samples/hello-app:1.0
Artifact Registry
Untuk men-deploy image dari Artifact Registry, masukkan hal berikut:
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Klik Lanjutkan.
Masukkan
hello-server
di kolom Application Name.Klik Deploy.
kubectl
Container Registry
Deploy image dari Container Registry:
kubectl run hello-server --image gcr.io/google-samples/hello-app:1.0 --port 8080
Artifact Registry
Deploy image dari Artifact Registry:
kubectl run hello-server --image us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 --port 8080
Pastikan bahwa image diizinkan untuk men-deploy:
Konsol Google Cloud
Untuk memastikan bahwa image telah di-deploy, lakukan hal berikut:
- Buka halaman GKE.
- Buka halaman Beban Kerja.
Beban kerja
hello-server
muncul dengan ikon hijau, yang menunjukkan bahwa beban kerja sedang berjalan.kubectl
Untuk memverifikasi bahwa image diizinkan untuk di-deploy, masukkan perintah berikut:
kubectl get pods
Anda melihat gambar berjalan.
Hapus pod.
Konsol Google Cloud
Di halaman Workloads GKE:
Pilih workload hello-server.
Klik Delete.
Saat diminta menghapus fasilitas, klik Hapus.
kubectl
kubectl delete pod hello-server
Pembersihan
Agar akun Google Cloud Anda tidak dikenakan biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.
Hapus cluster yang Anda buat di GKE:
Konsol
Untuk menghapus cluster, lakukan langkah berikut:
Buka halaman Cluster GKE di Google Cloud Console.
Pilih cluster
test-cluster
, lalu klik Hapus.
gcloud
Untuk menghapus cluster, masukkan perintah berikut:
gcloud container clusters delete \ --zone=us-central1-a \ test-cluster
Langkah selanjutnya
- Untuk mempelajari lebih lanjut cara mengecualikan gambar, termasuk menggunakan karakter pengganti untuk mengecualikan beberapa gambar, lihat Mengecualikan gambar.
- Untuk tutorial menyeluruh yang menjelaskan cara menyiapkan dan menerapkan kebijakan yang memerlukan pengesahan, lihat referensi berikut:
- Baca referensi kami tentang DevOps dan jelajahi program riset DevOps Research and Assessment (DORA).