Memperbarui kebijakan Otorisasi Biner
Dokumen ini menjelaskan cara mengecualikan image dalam kebijakan Otorisasi Biner.
Dalam dokumen ini, Anda akan memperbarui kebijakan untuk mengecualikan image container di Artifact Registry dari penerapan Otorisasi Biner dan menetapkan aturan default untuk melarang semua container lainnya di-deploy.
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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Binary Authorization APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Binary Authorization APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init - Jika Anda tidak menggunakan Cloud Shell,
instal
kubectl.
Membuat cluster dengan Otorisasi Biner diaktifkan
Buat cluster GKE dengan Otorisasi Biner diaktifkan. Cluster ini adalah tempat Anda ingin menjalankan image container yang di-deploy.
Google Cloud Konsol
Buka halaman Clusters GKE di Google Cloud konsol.
Konsol akan menampilkan daftar cluster GKE di project Google Cloud Anda.
Klik Create Cluster.
Masukkan
test-clusterdi kolom Name.
Pilih Zonal di opsi Location Type.
Pilih
us-central1-adari menu drop-down Zone.Klik link Security untuk menampilkan panel Security.
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
Melihat kebijakan Default
Secara default, kebijakan Otorisasi Biner Anda dikonfigurasi untuk mengizinkan semua image container di-deploy.
Google Cloud Konsol
Untuk melihat kebijakan default, lakukan hal berikut:
Buka halaman Binary Authorization di Google Cloud konsol.
Konsol akan menampilkan detail tentang kebijakan tersebut.
Klik Edit Policy.
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 sebagai 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 akan menampilkan hal berikut:
{
"name": "projects/PROJECT_ID/policy",
"globalPolicyEvaluationMode": "ENABLE",
"defaultAdmissionRule": {
"evaluationMode": "ALWAYS_ALLOW",
"enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG"
}
}
Hanya mengizinkan image yang dikecualikan
Bagian ini menjelaskan cara mengubah kebijakan untuk mengecualikan image dan melarang semua image lainnya di-deploy.
Google Cloud Konsol
Untuk mengubah kebijakan, lakukan hal berikut:
Kembali ke halaman Binary Authorization di Google Cloud konsol.
Klik Edit Policy.
Pilih Disallow All Images.
Di bagian Images exempt from deployment rules, luaskan Image paths.
Klik Add Image Paths.
Artifact Registry
Di New image path, tempel jalur berikut dari repositori Artifact Registry:
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0Klik Done untuk menyimpan jalur image.
Klik Save Policy.
gcloud
Untuk mengubah kebijakan agar mengizinkan contoh image dari Artifact Registry, lakukan hal berikut:
Ekspor file YAML kebijakan:
gcloud container binauthz policy export > /tmp/policy.yaml
Di editor teks, ubah
evaluationModedariALWAYS_ALLOWmenjadiALWAYS_DENYdan tambahkan image yang dikecualikan keadmissionWhitelistPatterns.Untuk mengecualikan contoh image berikut dari Artifact Registry, ubah file YAML kebijakan Anda sebagai berikut:
admissionWhitelistPatterns: - 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>/policyImpor 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": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0" } ], "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_DENY", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } } EOMKirim kebijakan yang 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 yang diizinkan Exempt image, lakukan hal berikut:
Deploy image yang dikecualikan ke cluster.
Google Cloud Konsol
Deploy image yang dikecualikan:
Buka halaman Clusters GKE di Google Cloud konsol.
Klik Deploy.
Konsol akan meminta Anda memasukkan detail tentang deployment.
Pilih Existing Container Image.
Masukkan jalur image container.
Artifact Registry
Untuk men-deploy image dari Artifact Registry, masukkan hal berikut:
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0Klik Continue.
Masukkan
hello-serverdi kolom Application Name.Klik Deploy.
kubectl
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 image diizinkan untuk di-deploy:
Google Cloud Konsol
Untuk memastikan bahwa image telah di-deploy, lakukan hal berikut:
- Buka halaman GKE.
- Buka halaman Workloads.
Workload
hello-serverakan muncul dengan ikon hijau, yang menunjukkan bahwa workload tersebut sedang berjalan.kubectl
Untuk memastikan bahwa image diizinkan untuk di-deploy, masukkan perintah berikut:
kubectl get pods
Anda akan melihat image sedang berjalan.
Hapus pod.
Google Cloud Konsol
Di halaman Workloads GKE:
Pilih workload hello-server.
Klik Delete.
Saat diminta untuk menghapus resource, klik Delete.
kubectl
kubectl delete pod hello-server
Pembersihan
Agar akunAnda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut. Google Cloud
Hapus cluster yang Anda buat di GKE:
Konsol
Untuk menghapus cluster, lakukan hal berikut:
Buka halaman Clusters GKE di Google Cloud konsol.
Pilih cluster
test-cluster, lalu klik Delete.
gcloud
Untuk menghapus cluster, masukkan perintah berikut:
gcloud container clusters delete \
--zone=us-central1-a \
test-cluster
Langkah berikutnya
- Untuk mempelajari lebih lanjut cara mengecualikan image, termasuk menggunakan karakter pengganti untuk mengecualikan beberapa image, lihat Mengecualikan image.
- Untuk tutorial menyeluruh yang menjelaskan cara menyiapkan dan menerapkan kebijakan yang memerlukan pengesahan, lihat hal berikut:
- Baca referensi kami tentang DevOps dan jelajahi DevOps Research and Assessment (DORA) program riset.