Halaman ini memberikan petunjuk untuk mengonfigurasi kebijakan Otorisasi Biner menggunakan REST API. Sebagai alternatif, Anda juga dapat melakukan tugas ini menggunakan Google Cloud CLI atau Konsol Google Cloud. Langkah ini adalah bagian dari menyiapkan Otorisasi Biner.
Ringkasan
Kebijakan adalah sekumpulan aturan yang mengatur deployment satu atau beberapa image container.
Saat mengonfigurasi kebijakan menggunakan REST API, Anda mengisi nilai dalam format JSON yang strukturnya identik dengan struktur YAML yang digunakan dalam interaksi gcloud
dengan layanan. Untuk informasi selengkapnya, lihat
Referensi YAML Kebijakan.
Untuk mengonfigurasi kebijakan, Anda harus:
- Mengekspor file JSON kebijakan
- Tambahkan gambar tambahan yang dikecualikan (opsional)
- Menetapkan aturan default
- Menambahkan aturan khusus cluster (opsional)
- Mengimpor file JSON kebijakan
Sebagian besar kebijakan di dunia nyata memeriksa untuk melihat apakah semua penanda tangan yang diperlukan telah memverifikasi bahwa image container sudah siap di-deploy. Dalam hal ini, Anda juga harus membuat pengautentikasi saat mengonfigurasi kebijakan.
Menetapkan project default
Tetapkan project Google Cloud default jika Anda belum melakukannya:
PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID}
dengan PROJECT_ID sebagai project ID Anda.
Mengekspor kebijakan
Bagian ini berlaku untuk GKE, Distributed Cloud, Cloud Run, dan Cloud Service Mesh.
Ekspor kebijakan ke file JSON di sistem lokal Anda:
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" \ -o "/tmp/policy.json"
Secara default, file memiliki konten berikut:
{ "name": "projects/PROJECT_ID/policy", "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_ALLOW", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } }
Mengelola gambar yang dikecualikan
Bagian ini berlaku untuk GKE, Distributed Cloud, Cloud Run, dan Cloud Service Mesh.
Image yang dikecualikan adalah image container yang dikecualikan dari aturan kebijakan. Otorisasi Biner selalu mengizinkan image yang dikecualikan untuk di-deploy.
Anda menentukan gambar yang dikecualikan dengan mencantumkan jalur registry-nya di
admissionWhitelistPatterns
. Jalur dapat merujuk ke Container Registry atau registry image lainnya. Penegakan
memproses gambar yang dikecualikan di admissionWhitelistPatterns
setelah gambar
dikecualikan oleh mode evaluasi kebijakan sistem.
Untuk menambahkan gambar yang dikecualikan, tambahkan node namePattern
di bawah daftar
admissionWhitelistPatterns
dalam file JSON kebijakan:
{ "name": "projects/PROJECT_ID/policy", "admissionWhitelistPatterns": [ { "namePattern": "MATCHING_PATTERN" } ], ... }
dengan MATCHING_PATTERN adalah jalur ke satu gambar di registry Anda
dengan pencocokan persis, atau ke gambar apa pun yang cocok dengan pola menggunakan simbol karakter pengganti
(*
, **
).
Cloud Run
Bagian ini berlaku untuk Cloud Run.
Anda tidak dapat langsung menentukan nama gambar yang berisi tag. Misalnya, Anda tidak dapat menentukan
IMAGE_PATH
:latest.
Jika ingin menentukan nama gambar yang berisi tag, Anda harus menentukan nama gambar menggunakan karakter pengganti sebagai berikut:
*
untuk semua versi gambar tunggal; 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 Binary Authorization mengevaluasi kebijakan sistem sebelum mengevaluasi kebijakan yang Anda konfigurasi. Google mengelola kebijakan sistem, yang mengecualikan daftar image sistem yang dikelola Google yang digunakan GKE. Gambar yang tercantum dalam kebijakan sistem tidak diblokir oleh penerapan kebijakan. Jika tidak mengaktifkan setelan ini, Anda harus mengelola daftar gambar yang dikecualikan sendiri. Pelajari cara Mengelola gambar 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 node tingkat teratas berikut ke file JSON kebijakan:
"globalPolicyEvaluationMode": "ENABLE"
Untuk menonaktifkan mode evaluasi kebijakan sistem, tambahkan hal berikut:
"globalPolicyEvaluationMode": "DISABLE"
Anda dapat mengekspor kebijakan sistem yang terkait dengan wilayah 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 menghasilkan
kebijakan sistem dari region dalam grup region terakhir untuk menerima
update. Karena sebagian besar perubahan pada kebijakan sistem adalah penambahan, output
akan menampilkan kumpulan image sistem yang saat ini diizinkan di semua region.
Menetapkan aturan default
Bagian ini berlaku untuk GKE, Distributed Cloud, Cloud Run, dan Cloud Service Mesh.
Aturan adalah bagian dari kebijakan yang menentukan batasan yang harus dilalui image container sebelum dapat di-deploy. Setiap permintaan izin memiliki cluster GKE terkait. Jika permintaan tidak cocok dengan aturan khusus cluster, aturan default akan digunakan.
Aturan default ditentukan di node defaultAdmissionRule
dalam kebijakan. Untuk mengetahui informasi selengkapnya tentang bagian aturan ini, lihat
ADMISSION_RULE di Referensi YAML
Kebijakan. Untuk contoh aturan default, lihat
Contoh Kebijakan.
Untuk menetapkan aturan default, edit node defaultAdmissionRule
dalam file JSON kebijakan
sesuai kebutuhan:
"defaultAdmissionRule": { "evaluationMode": "EVAL_MODE", "enforcementMode": "ENFORCEMENT_MODE" requireAttestationsBy: [ ATTESTOR, ... ] }
dengan:
- EVAL_MODE menentukan jenis batasan yang dievaluasi oleh Otorisasi Biner sebelum mengizinkan image container di-deploy.
- ENFORCEMENT_MODE menentukan tindakan yang diambil jika image penampung tidak sesuai dengan batasan yang ditentukan dalam aturan.
- ATTESTOR menentukan
pengesah (jika diperlukan) yang harus menandatangani image container sebelum dapat
di-deploy. Gunakan jalur yang sepenuhnya memenuhi syarat ke pengautentikasi dalam format
projects/PROJECT_ID/attestors/ATTESTOR_NAME
.
Jika aturan Anda memeriksa apakah semua pengautentikasi yang diperlukan telah menandatangani image penampung, Anda harus membuat pengautentikasi sebelum menyelesaikan langkah ini.
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 cluster GKE yang ditentukan. Jika cluster tidak memiliki aturannya sendiri, aturan default akan digunakan. Aturan khusus cluster adalah bagian opsional dari kebijakan.
Aturan khusus cluster ditentukan di node clusterAdmissionRules
dalam file JSON kebijakan. Untuk mengetahui informasi selengkapnya tentang bagian aturan ini, lihat
ADMISSION_RULE di Referensi YAML
Kebijakan. Sebagai contoh, lihat
Menggunakan aturan khusus cluster
di Contoh Kebijakan.
Untuk menambahkan aturan khusus cluster:
Di file JSON kebijakan, tambahkan node clusterAdmissionRules
:
"clusterAdmissionRules": { "us-central1-a.test-cluster": { "evaluationMode": "REQUIRE_ATTESTATION", "requireAttestationsBy": [ "ATTESTOR", ... ], "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } },
dengan CLUSTER_SPECIFIER adalah ID resource cluster tempat aturan diterapkan.
- Untuk GKE, cluster terpasang GKE, dan
GKE di AWS, formatnya adalah
CLUSTER_LOCATION.CLUSTER_NAME
—misalnya,us-central1-a.test-cluster
. - Untuk Google Distributed Cloud dan Google Distributed Cloud,
formatnya adalah
FLEET_MEMBERSHIP_LOCATION.FLEET_MEMBERSHIP_ID
—misalnya,global.test-membership
.
Properti lainnya dijelaskan dalam Menetapkan aturan default, di awal panduan ini. Lihat Contoh Kebijakan untuk mengetahui contoh aturan khusus cluster.
Jika aturan Anda memeriksa apakah semua pengautentikasi yang diperlukan telah menandatangani image penampung, Anda harus membuat pengautentikasi sebelum menyelesaikan langkah ini.
Mengimpor file JSON kebijakan
Bagian ini berlaku untuk GKE, Distributed Cloud, Cloud Run, dan Cloud Service Mesh.
Impor file JSON kebijakan kembali ke Otorisasi Biner dengan memasukkan hal berikut:
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"