Halaman ini memberikan petunjuk untuk mengonfigurasi Otorisasi Biner kebijakan menggunakan Google Cloud CLI. Sebagai alternatif, Anda juga dapat melakukan tugas ini menggunakan Google Cloud konsol atau REST API. Langkah ini merupakan bagian dari penyiapan Otorisasi Biner.
Untuk mengonfigurasi kebijakan menggunakan alat command line, Anda harus mengekspor kebijakan yang ada sebagai file YAML. Setelah mengubah file, Anda dapat mengimpornya untuk memperbarui kebijakan, seperti yang dijelaskan nanti dalam panduan ini. Untuk mengetahui informasi selengkapnya tentang format YAML kebijakan, lihat Referensi YAML Kebijakan.
Sebelum memulai
- Aktifkan Otorisasi Biner.
- Buat cluster.
- Jika Anda ingin menggunakan pengesahan, sebaiknya buat pengesah sebelum mengonfigurasi kebijakan. Anda dapat membuat pengesah menggunakan a alat command line atau melalui Google Cloud konsol.
Tetapkan project ID ke project tempat Anda mengaktifkan Otorisasi Biner:
PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID}
Mengekspor file YAML kebijakan
Bagian ini berlaku untuk GKE, Distributed Cloud, Cloud Run, dan Cloud Service Mesh.
Untuk memperbarui kebijakan, ekspor terlebih dahulu ke file YAML lokal, sebagai berikut:
gcloud container binauthz policy export > /tmp/policy.yaml
Secara default, konten file akan terlihat mirip dengan berikut ini:
defaultAdmissionRule: enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG evaluationMode: ALWAYS_ALLOW globalPolicyEvaluationMode: ENABLE name: projects/PROJECT_ID/policy
Untuk mengubah kebijakan, edit file dan tambahkan atau perbarui bagian, seperti yang dijelaskan nanti dalam panduan ini. Setelah menyimpan file, Anda dapat mengimpor kebijakan.
Untuk menambahkan image yang dikecualikan ke daftar yang diizinkan, tambahkan kode berikut ke file kebijakan:
admissionWhitelistPatterns: - namePattern: EXEMPT_IMAGE_PATH
Ganti EXEMPT_IMAGE_PATH dengan jalur ke image yang akan dikecualikan. Untuk mengecualikan image tambahan, tambahkan entri - namePattern tambahan. Pelajari lebih lanjut admissionWhitelistPatterns.
Menetapkan aturan default
Bagian ini berlaku untuk GKE, Distributed Cloud, Cloud Run, dan Cloud Service Mesh.
A aturan adalah bagian dari kebijakan yang menentukan batasan yang harus dipenuhi image container sebelum dapat di-deploy. Aturan default menentukan batasan yang berlaku untuk semua image yang tidak dikecualikan dan tidak memiliki aturan khusus cluster sendiri. Setiap kebijakan harus memiliki aturan default.
Aturan default ditentukan dalam node di file YAML kebijakan.defaultAdmissionRule Untuk mengetahui informasi selengkapnya tentang bagian aturan ini, lihat
ADMISSION_RULE di Referensi YAML Kebijakan. Untuk mengetahui contoh aturan default, lihat
Contoh Kebijakan.
Untuk menetapkan aturan default, edit node defaultAdmissionRule di file policy.yaml sesuai kebutuhan:
defaultAdmissionRule: evaluationMode: EVALUATION_MODE enforcementMode: ENFORCEMENT_MODE requireAttestationsBy: - ATTESTOR - ...
Ganti kode berikut:
EVALUATION_MODE: Mode evaluasi menentukan jenis batasan yang diterapkan oleh penegak Otorisasi Biner pada waktu deployment. Ganti EVALUATION_MODE dengan salah satu opsi berikut:
ALWAYS_ALLOW: Mengizinkan semua image di-deploy.ALWAYS_DENY: Tidak mengizinkan semua image di-deploy.REQUIRE_ATTESTATION: Mengizinkan image di-deploy jika image tersebut memiliki satu atau beberapa pengesahan yang dapat diverifikasi oleh semua pengesah yang Anda tambahkan ke aturan ini. Pada waktu deployment, penegak memverifikasi pengesahan menggunakan pengesah yang Anda tambahkan ke ATTESTOR daftar dalam aturan ini. Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah. Jika Anda menentukanREQUIRE_ATTESTATION, Anda juga harus menambahkan blokrequireAttestationsByyang berisi setidaknya satu pengesah. Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah.
ENFORCEMENT_MODE: Mode penerapan menentukan cara penegak merespons saat image melanggar aturan. Ganti ENFORCEMENT_MODE dengan salah satu opsi berikut:
ENFORCED_BLOCK_AND_AUDIT_LOG: Memblokir image yang melanggar aturan dan mencatat informasi tentang pelanggaran ke Cloud Audit Logs (default).DRYRUN_AUDIT_LOG_ONLY: Mengizinkan semua image di-deploy, tetapi mencatat informasi penerapan, termasuk informasi tentang pelanggaran, ke Cloud Audit Logs.
ATTESTOR: Jika Anda menetapkan
EVALUATION_MODEkeREQUIRE_ATTESTATION, Anda juga harus menambahkan requireAttesationsBy blok. Di blok tersebut, Anda mencantumkan satu atau beberapa pengesah, berdasarkan ID resource. ID resource memiliki format:projects/PROJECT_ID/attestors/ATTESTOR_NAME.Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah.
Mengelola image yang dikecualikan
Bagian ini berlaku untuk GKE, Distributed Cloud, Cloud Run, dan Cloud Service Mesh.
Image yang dikecualikan adalah image yang dikecualikan dari aturan kebijakan. Otorisasi Biner selalu mengizinkan image yang dikecualikan untuk di-deploy.
Anda menentukan image yang dikecualikan dengan mencantumkan jalur registry-nya di admissionWhitelistPatterns. Jalur tersebut mengacu ke
Container Registry atau registry image lainnya. Pada
waktu deployment, Otorisasi Biner mengecualikan daftar image yang ditentukan oleh
admissionWhitelistPatterns setelah image yang ditentukan oleh
kebijakan sistem.
Untuk menambahkan image yang dikecualikan, tambahkan node namePattern di bagian daftar
admissionWhitelistPatterns
dalam file policy.yaml:
admissionWhitelistPatterns: - namePattern: MATCHING_PATTERN
Ganti MATCHING_PATTERN dengan jalur ke satu image di registry Anda dengan kecocokan yang tepat, atau ke image apa pun yang cocok dengan pola menggunakan simbol karakter pengganti (*, **).
Cloud Run
Bagian ini berlaku untuk Cloud Run.
Anda tidak dapat menentukan nama image yang berisi tag secara langsung. Misalnya, Anda tidak dapat menentukan IMAGE_PATH:latest.
Jika ingin menentukan nama image yang berisi tag, Anda harus menentukan nama image menggunakan karakter pengganti sebagai berikut:
*untuk semua versi satu image; misalnya,us-docker.pkg.dev/myproject/container/hello@***untuk semua image dalam project; misalnya,us-docker.pkg.dev/myproject/**
Anda dapat menggunakan nama jalur untuk menentukan ringkasan dalam format IMAGE_PATH@DIGEST.
Mode evaluasi kebijakan sistem
Bagian ini berlaku untuk GKE dan Distributed Cloud.
Mode evaluasi kebijakan sistem adalah setelan kebijakan yang menyebabkan Otorisasi Biner mengevaluasi kebijakan sistem sebelum mengevaluasi kebijakan yang Anda konfigurasi. Google mengelola kebijakan sistem, yang mengecualikan daftar image sistem yang dikelola Google dan digunakan GKE. Image yang tercantum dalam kebijakan sistem tidak diblokir oleh penerapan kebijakan. Jika tidak mengaktifkan setelan ini, Anda harus mengelola daftar image yang dikecualikan sendiri. Pelajari cara Mengelola image yang dikecualikan.
Anda dapat melihat konten kebijakan sistem menggunakan perintah berikut:
gcloud alpha container binauthz policy export-system-policy
Untuk mengaktifkan mode evaluasi kebijakan sistem, tambahkan baris berikut ke file policy.yaml:
globalPolicyEvaluationMode: ENABLE
Untuk menonaktifkan mode evaluasi kebijakan sistem, tambahkan kode berikut:
globalPolicyEvaluationMode: DISABLE
Anda dapat mengekspor kebijakan sistem yang terkait dengan region tertentu sebagai berikut:
gcloud alpha container binauthz policy export-system-policy \
--location=REGION > /tmp/policy.yaml
Ganti REGION dengan region yang terkait dengan kebijakan sistem
yang ingin Anda ekspor (atau "global"). Contohnya mencakup: asia-east1, europe-west1, us-central1.
Jika Anda menghapus --location atau menentukan --location=global, perintah akan menampilkan kebijakan sistem dari region dalam grup region terakhir yang menerima pembaruan. Karena sebagian besar perubahan pada kebijakan sistem adalah penambahan, output akan menampilkan kumpulan image sistem yang saat ini diizinkan di semua region.
Menetapkan aturan khusus cluster (opsional)
Bagian ini berlaku untuk GKE dan Distributed Cloud.
Cluster juga dapat memiliki satu atau beberapa aturan khusus cluster. Jenis aturan ini hanya berlaku untuk image yang akan di-deploy ke cluster GKE tertentu. Aturan khusus cluster adalah bagian opsional dari kebijakan.
Aturan khusus cluster ditentukan dalam
clusterAdmissionRules node di
file YAML kebijakan. Untuk mengetahui informasi selengkapnya tentang bagian aturan ini, lihat
ADMISSION_RULE di Referensi YAML Kebijakan. Untuk mengetahui contohnya, lihat
Menggunakan aturan khusus cluster
di Contoh Kebijakan.
Untuk menambahkan aturan khusus cluster:
Di file policy.yaml, tambahkan node clusterAdmissionRules:
clusterAdmissionRules:
CLUSTER_SPECIFIER:
evaluationMode: EVALUATION_MODE
enforcementMode: ENFORCEMENT_MODE
requireAttestationsBy:
- ATTESTOR
- ...
Ganti kode berikut:
CLUSTER_SPECIFIER: ID resource cluster yang berlaku untuk aturan ini. Anda memformat aturan sebagai berikut:
Untuk GKE, GKE Attached Clusters, dan GKE di AWS, formatnya adalah
CLUSTER_LOCATION.CLUSTER_NAME—misalnya,us-central1-a.test-cluster.Untuk software Google Distributed Cloud (cluster GKE di bare metal atau VMware), formatnya adalah
FLEET_MEMBERSHIP_LOCATION.FLEET_MEMBERSHIP_ID—misalnya,global.test-membership.Properti lainnya dijelaskan di Menetapkan aturan default sebelumnya dalam panduan ini. Untuk mengetahui contoh aturan khusus cluster, lihat Contoh Kebijakan.
EVALUATION_MODE: Mode evaluasi menentukan jenis batasan yang diterapkan oleh penegak Otorisasi Biner pada waktu deployment. Ganti EVALUATION_MODE dengan salah satu opsi berikut:
ALWAYS_ALLOW: Mengizinkan semua image di-deploy.ALWAYS_DENY: Tidak mengizinkan semua image di-deploy.REQUIRE_ATTESTATION: Mengizinkan image di-deploy jika image tersebut memiliki satu atau beberapa pengesahan yang dapat diverifikasi oleh semua pengesah yang Anda tambahkan ke aturan ini. Pada waktu deployment, penegak memverifikasi pengesahan menggunakan pengesah yang Anda tambahkan ke ATTESTOR daftar dalam aturan ini. Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah. Jika Anda menentukanREQUIRE_ATTESTATION, Anda juga harus menambahkan blokrequireAttestationsByyang berisi setidaknya satu pengesah. Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah.
ENFORCEMENT_MODE: Mode penerapan menentukan cara penegak merespons saat image melanggar aturan. Ganti ENFORCEMENT_MODE dengan salah satu opsi berikut:
ENFORCED_BLOCK_AND_AUDIT_LOG: Memblokir image yang melanggar aturan dan mencatat informasi tentang pelanggaran ke Cloud Audit Logs (default).DRYRUN_AUDIT_LOG_ONLY: Mengizinkan semua image di-deploy, tetapi mencatat informasi penerapan, termasuk informasi tentang pelanggaran, ke Cloud Audit Logs.
ATTESTOR: Jika Anda menetapkan
EVALUATION_MODEkeREQUIRE_ATTESTATION, Anda juga harus menambahkan requireAttesationsBy blok. Di blok tersebut, Anda mencantumkan satu atau beberapa pengesah, berdasarkan ID resource. ID resource memiliki format:projects/PROJECT_ID/attestors/ATTESTOR_NAME.Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah.
Menetapkan aturan spesifik (opsional)
Anda dapat membuat aturan yang dicakup ke identitas layanan mesh, akun layanan Kubernetes, atau namespace Kubernetes.
Menetapkan aturan untuk identitas layanan Cloud Service Mesh
Untuk menetapkan aturan untuk identitas layanan Cloud Service Mesh, edit file policy.yaml Anda dan tambahkan blok istioServiceIdentityAdmissionRules, misalnya:
defaultAdmissionRule:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
istioServiceIdentityAdmissionRules:
SERVICE_IDENTITY_ID:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ENFORCEMENT_MODE
requireAttestationsBy:
- <var>ATTESTOR</var>
- ...
name: projects/PROJECT_ID/policy
Ganti kode berikut:
SERVICE_IDENTITY_ID: identitas layanan Cloud Service Mesh yang akan digunakan untuk mencakup aturan ini. Identitas layanan memiliki format berikut: PROJECT_ID.svc.id.goog/ns/NAMESPACE/sa/SERVICE_ACCOUNT. Di ID identitas layanan, ganti kode berikut:
- PROJECT_ID: project ID tempat Anda menentukan resource Kubernetes.
- NAMESPACE: namespace Kubernetes.
- SERVICE_ACCOUNT: akun layanan.
EVALUATION_MODE: Mode evaluasi menentukan jenis batasan yang diterapkan oleh penegak Otorisasi Biner pada waktu deployment. Ganti EVALUATION_MODE dengan salah satu opsi berikut:
ALWAYS_ALLOW: Mengizinkan semua image di-deploy.ALWAYS_DENY: Tidak mengizinkan semua image di-deploy.REQUIRE_ATTESTATION: Mengizinkan image di-deploy jika image tersebut memiliki satu atau beberapa pengesahan yang dapat diverifikasi oleh semua pengesah yang Anda tambahkan ke aturan ini. Pada waktu deployment, penegak memverifikasi pengesahan menggunakan pengesah yang Anda tambahkan ke ATTESTOR daftar dalam aturan ini. Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah. Jika Anda menentukanREQUIRE_ATTESTATION, Anda juga harus menambahkan blokrequireAttestationsByyang berisi setidaknya satu pengesah. Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah.
ENFORCEMENT_MODE: Mode penerapan menentukan cara penegak merespons saat image melanggar aturan. Ganti ENFORCEMENT_MODE dengan salah satu opsi berikut:
ENFORCED_BLOCK_AND_AUDIT_LOG: Memblokir image yang melanggar aturan dan mencatat informasi tentang pelanggaran ke Cloud Audit Logs (default).DRYRUN_AUDIT_LOG_ONLY: Mengizinkan semua image di-deploy, tetapi mencatat informasi penerapan, termasuk informasi tentang pelanggaran, ke Cloud Audit Logs.
ATTESTOR: Jika Anda menetapkan
EVALUATION_MODEkeREQUIRE_ATTESTATION, Anda juga harus menambahkan requireAttesationsBy blok. Di blok tersebut, Anda mencantumkan satu atau beberapa pengesah, berdasarkan ID resource. ID resource memiliki format:projects/PROJECT_ID/attestors/ATTESTOR_NAME.Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah.
Menetapkan aturan untuk akun layanan Kubernetes
Untuk menetapkan aturan untuk akun layanan Kubernetes, edit file policy.yaml Anda dan tambahkan blok kubernetesServiceAccountAdmissionRules, misalnya:
defaultAdmissionRule:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
kubernetesServiceAccountAdmissionRules:
KUBERNETES_SERVICE_ACCOUNT_ID:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ENFORCEMENT_MODE
requireAttestationsBy:
- <var>ATTESTOR</var>
- ...
name: projects/PROJECT_ID/policy
Ganti kode berikut:
KUBERNETES_SERVICE_ACCOUNT_ID: Akun layanan Kubernetes yang akan digunakan untuk mencakup aturan ini. ID akun layanan ini memiliki format: NAMESPACE:SERVICE_ACCOUNT. Di ID akun layanan, ganti kode berikut:
- NAMESPACE: namespace Kubernetes.
- SERVICE_ACCOUNT: nama akun layanan.
EVALUATION_MODE: Mode evaluasi menentukan jenis batasan yang diterapkan oleh penegak Otorisasi Biner pada waktu deployment. Ganti EVALUATION_MODE dengan salah satu opsi berikut:
ALWAYS_ALLOW: Mengizinkan semua image di-deploy.ALWAYS_DENY: Tidak mengizinkan semua image di-deploy.REQUIRE_ATTESTATION: Mengizinkan image di-deploy jika image tersebut memiliki satu atau beberapa pengesahan yang dapat diverifikasi oleh semua pengesah yang Anda tambahkan ke aturan ini. Pada waktu deployment, penegak memverifikasi pengesahan menggunakan pengesah yang Anda tambahkan ke ATTESTOR daftar dalam aturan ini. Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah. Jika Anda menentukanREQUIRE_ATTESTATION, Anda juga harus menambahkan blokrequireAttestationsByyang berisi setidaknya satu pengesah. Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah.
ENFORCEMENT_MODE: Mode penerapan menentukan cara penegak merespons saat image melanggar aturan. Ganti ENFORCEMENT_MODE dengan salah satu opsi berikut:
ENFORCED_BLOCK_AND_AUDIT_LOG: Memblokir image yang melanggar aturan dan mencatat informasi tentang pelanggaran ke Cloud Audit Logs (default).DRYRUN_AUDIT_LOG_ONLY: Mengizinkan semua image di-deploy, tetapi mencatat informasi penerapan, termasuk informasi tentang pelanggaran, ke Cloud Audit Logs.
ATTESTOR: Jika Anda menetapkan
EVALUATION_MODEkeREQUIRE_ATTESTATION, Anda juga harus menambahkan requireAttesationsBy blok. Di blok tersebut, Anda mencantumkan satu atau beberapa pengesah, berdasarkan ID resource. ID resource memiliki format:projects/PROJECT_ID/attestors/ATTESTOR_NAME.Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah.
Menetapkan aturan untuk namespace Kubernetes
Untuk menetapkan aturan untuk namespace Kubernetes, edit file policy.yaml Anda dan tambahkan blok kubernetesNamespaceAdmissionRules, misalnya:
defaultAdmissionRule:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
kubernetesNamespaceAdmissionRules:
KUBERNETES_NAMESPACE:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: EVALUATION_MODE
requireAttestationsBy:
- <var>ATTESTOR</var>
- ...
name: projects/PROJECT_ID/policy
Ganti kode berikut:
KUBERNETES_NAMESPACE: namespace Kubernetes yang akan digunakan untuk mencakup aturan ini.
EVALUATION_MODE: Mode evaluasi menentukan jenis batasan yang diterapkan oleh penegak Otorisasi Biner pada waktu deployment. Ganti EVALUATION_MODE dengan salah satu opsi berikut:
ALWAYS_ALLOW: Mengizinkan semua image di-deploy.ALWAYS_DENY: Tidak mengizinkan semua image di-deploy.REQUIRE_ATTESTATION: Mengizinkan image di-deploy jika image tersebut memiliki satu atau beberapa pengesahan yang dapat diverifikasi oleh semua pengesah yang Anda tambahkan ke aturan ini. Pada waktu deployment, penegak memverifikasi pengesahan menggunakan pengesah yang Anda tambahkan ke ATTESTOR daftar dalam aturan ini. Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah. Jika Anda menentukanREQUIRE_ATTESTATION, Anda juga harus menambahkan blokrequireAttestationsByyang berisi setidaknya satu pengesah. Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah.
ENFORCEMENT_MODE: Mode penerapan menentukan cara penegak merespons saat image melanggar aturan. Ganti ENFORCEMENT_MODE dengan salah satu opsi berikut:
ENFORCED_BLOCK_AND_AUDIT_LOG: Memblokir image yang melanggar aturan dan mencatat informasi tentang pelanggaran ke Cloud Audit Logs (default).DRYRUN_AUDIT_LOG_ONLY: Mengizinkan semua image di-deploy, tetapi mencatat informasi penerapan, termasuk informasi tentang pelanggaran, ke Cloud Audit Logs.
ATTESTOR: Jika Anda menetapkan
EVALUATION_MODEkeREQUIRE_ATTESTATION, Anda juga harus menambahkan requireAttesationsBy blok. Di blok tersebut, Anda mencantumkan satu atau beberapa pengesah, berdasarkan ID resource. ID resource memiliki format:projects/PROJECT_ID/attestors/ATTESTOR_NAME.Untuk mempelajari cara membuat pengesah, lihat Membuat pengesah.
Mengimpor file YAML kebijakan
Bagian ini berlaku untuk GKE, Distributed Cloud, Cloud Run, dan Cloud Service Mesh.
Impor kembali file YAML kebijakan ke Otorisasi Biner dengan memasukkan kode berikut:
gcloud container binauthz policy import /tmp/policy.yaml
Langkah berikutnya
- Gunakan pengesah
built-by-cloud-builduntuk men-deploy hanya image yang dibuat oleh Cloud Build. - Gunakan pengesahan.
- Men-deploy image GKE.