Halaman ini berisi informasi referensi untuk policies Otorisasi Biner seperti yang ditentukan dalam format YAML. Saat mengonfigurasi kebijakan menggunakan antarmuka command line, Anda mengedit file berformat YAML yang mematuhi spesifikasi ini. Untuk contoh kebijakan dalam format YAML, lihat Contoh Kebijakan.
File YAML kebijakan memiliki format berikut:
name: projects/<PROJECT_ID>/policy
admissionWhitelistPatterns:
- namePattern: <MATCHING_PATTERN>
- ...
globalPolicyEvaluationMode: <GLOBAL_EVAL_MODE>
defaultAdmissionRule:
<ADMISSION_RULE>
clusterAdmissionRules:
<CLUSTER_SPECIFIER>:
<ADMISSION_RULE>
...
Node
Format YAML memiliki node tingkat teratas berikut:
Node | Deskripsi | Wajib |
---|---|---|
name |
Nama kebijakan. | Ya |
admissionWhitelistPatterns |
Menentukan image container yang selalu diizinkan untuk di-deploy. | Tidak |
globalPolicyEvaluationMode |
Menentukan apakah akan menerapkan kebijakan sistem yang mengecualikan image sistem milik Google. | Tidak |
defaultAdmissionRule |
Aturan yang akan digunakan jika tidak ada aturan tertentu yang berlaku. | Ya |
clusterAdmissionRules |
Menentukan aturan yang berlaku untuk cluster tertentu. | Tidak |
name
Node name
berisi nama kebijakan dalam format berikut:
name: projects/PROJECT_ID/policy
dengan PROJECT_ID adalah nama project Google Cloud Anda tempat kebijakan Anda ditentukan.
Contoh:
name: projects/example-project/policy
admissionWhitelistPatterns
admissionWhitelistPatterns
menentukan daftar yang diizinkan untuk image container yang
dikecualikan dari penerapan kebijakan. Anda menentukan
jalur ke image di Container Registry dan Artifact Registry, registry lain, atau
referensi lokal di subnode namePattern
:
admissionWhitelistPatterns: - namePattern: MATCHING_PATTERN - ...
Ganti MATCHING_PATTERN dengan jalur ke satu gambar atau
pola yang cocok yang berisi salah satu simbol karakter pengganti (*
, **
).
Perhatikan bahwa karakter pengganti hanya valid di akhir pola. Misalnya,
gcr.io/my-project/nginx*
adalah pola yang valid, tetapi gcr.io/my-project/n*x
tidak valid. Karakter pengganti *
hanya cocok dengan gambar di direktori yang ditentukan. Misalnya, gcr.io/my-project/nginx*
cocok dengan gcr.io/my-project/nginx:latest
,
tetapi tidak dengan gcr.io/my-project/nginx-images/nginx
. Karakter pengganti **
cocok dengan gambar
di subdirektori. Misalnya, jalur gcr.io/my-project/nginx**
cocok dengan
gcr.io/my-project/nginx-1.14.2/image:latest
.
Contoh berikut menambahkan registry yang berisi image Google Kubernetes Engine (GKE) yang biasa digunakan, image yang terletak di gcr.io/example-project/helloworld
, dan referensi lokal ke image, ke daftar image yang dikecualikan untuk kebijakan:
admissionWhitelistPatterns: - namePattern: gcr.io/google-containers/* - namePattern: k8s.gcr.io/** - namePattern: gke.gcr.io/** - namePattern: gcr.io/gke-release/asm/* - namePattern: gcr.io/stackdriver-agents/* - namePattern: gcr.io/example-project/helloworld - namePattern: loc-ref
Pola daftar yang diizinkan
Untuk mengizinkan semua image container yang lokasi registry-nya cocok dengan jalur yang ditentukan:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/*
Untuk mengizinkan gambar tertentu:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld
Untuk mengizinkan versi yang saat ini diberi tag:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld:latest - namePattern: gcr.io/example-project/helloworld:my-tag - namePattern: gcr.io/example-project/helloworld:v1.*
Untuk mengizinkan versi image tertentu berdasarkan ringkasannya:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c
Untuk mengizinkan gambar di subdirektori jalur tertentu:
admissionWhitelistPatterns: ... - namePattern: gcr.io/example-project/**
globalPolicyEvaluationMode
Mode evaluasi kebijakan sistem
adalah setelan kebijakan yang menyebabkan Otorisasi Biner mengevaluasi kebijakan sistem
sebelum mengevaluasi kebijakan yang Anda konfigurasi. Kebijakan sistem disediakan
oleh Google dan mengecualikan daftar image sistem yang dikelola Google dari
evaluasi kebijakan lebih lanjut. Jika Anda mengaktifkan setelan ini, image yang diperlukan oleh GKE tidak akan diblokir oleh penerapan kebijakan. Kebijakan
sistem dievaluasi sebelum dan sebagai tambahan terhadap evaluasi kebijakan pengguna,
termasuk admissionWhitelistPatterns
.
Untuk mengizinkan semua image sistem yang dikelola Google, tetapkan
properti globalPolicyEvaluationMode
ke ENABLE
:
globalPolicyEvaluationMode: ENABLE
Untuk menonaktifkan mode evaluasi kebijakan sistem:
globalPolicyEvaluationMode: DISABLE
defaultAdmissionRule
defaultAdmissionRule
menentukan aturan default
untuk kebijakan. Aturan default menentukan batasan yang berlaku untuk semua
image container yang tidak dikecualikan, kecuali image yang memiliki
aturan khusus clusternya sendiri. Anda menentukan aturan default menggunakan kumpulan ADMISSION_RULE:
defaultAdmissionRule: ADMISSION_RULE
Contoh berikut menunjukkan aturan default yang hanya mengizinkan deployment image penampung yang telah diotorisasi oleh penanda tangan yang ditentukan. Jika semua pengautentikasi yang diperlukan belum memberi otorisasi pada image, Otorisasi Biner akan memblokir deployment dan menulis ke log audit.
defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/example-project/attestors/secure-build
clusterAdmissionRules
clusterAdmissionRules
mendeklarasikan
aturan khusus cluster untuk kebijakan.
Batasan dalam aturan ini hanya berlaku untuk cluster yang ditentukan. Jika
Otorisasi Biner menerapkan aturan khusus cluster ke deployment, aturan
default tidak akan dipertimbangkan. Seperti aturan default, Anda menentukan aturan khusus cluster menggunakan koleksi ADMISSION_RULE:
clusterAdmissionRules: CLUSTER_SPECIFIER: ADMISSION_RULE
dengan CLUSTER_SPECIFIER adalah ID resource cluster tempat
aturan diterapkan dalam format location.name
(misalnya,
us-east1-a.prod-cluster
).
Contoh berikut menunjukkan aturan khusus cluster yang hanya mengizinkan deployment image container yang telah diotorisasi oleh pengautentikasi yang ditentukan:
clusterAdmissionRules: us-east1-a.prod-cluster: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/example-project/attestors/secure-build - projects/example-project/attestors/prod-qualified
Koleksi node
ADMISSION_RULE
ADMISSION_RULE
adalah kumpulan node yang menentukan batasan untuk
aturan dalam format berikut:
evaluationMode: EVAL_MODE enforcementMode: ENFORCEMENT_MODE requireAttestationsBy: - ATTESTOR - ...
defaultAdmissionRule
dan clusterAdmissionRule
mereferensikan koleksi
ini.
evaluationMode
evaluationMode
menentukan operasi yang dilakukan Otorisasi Biner untuk
mengevaluasi apakah akan men-deploy image container. Kemungkinan nilainya adalah:
ALWAYS_ALLOW
: Selalu izinkan deployment gambar yang dievaluasi oleh aturan iniALWAYS_DENY
: Selalu tolak deployment gambar yang dievaluasi oleh aturan iniREQUIRE_ATTESTATION
: Mewajibkan satu atau beberapa pengautentikasi untuk memberikan otorisasi rilis sebelum deployment
Jika evaluationMode
adalah REQUIRE_ATTESTATION
, Anda harus memberikan referensi
kepada pengautentikasi yang diperlukan di
requireAttestationsBy
.
enforcementMode
enforcementMode
menentukan tindakan yang dilakukan Otorisasi Biner jika
image penampung tidak sesuai dengan batasan yang ditentukan dalam aturan. Nilai yang mungkin adalah:
ENFORCED_BLOCK_AND_AUDIT_LOG
: Memblokir deployment dan menulis ke log audit.DRYRUN_AUDIT_LOG_ONLY
: Mengizinkan deployment image yang tidak sesuai dan menulis detail tentang pelanggaran ke log audit.
Sebagian besar aturan produksi menggunakan mode penegakan ENFORCED_BLOCK_AND_AUDIT_LOG
.
DRYRUN_AUDIT_LOG_ONLY
terutama digunakan untuk menguji kebijakan di lingkungan
Anda sebelum diterapkan.
requireAttestationsBy
requireAttestationsBy
menentukan satu atau beberapa pengautentikasi yang harus memberikan otorisasi
rilis sebelum image container dapat di-deploy. Hal ini hanya diperlukan untuk
aturan REQUIRE_ATTESTATION
. Format untuk node ini adalah:
requireAttestationsBy: - projects/PROJECT_ID/attestors/ATTESTOR_NAME - ...
dengan PROJECT_ID adalah nama project tempat attestor Anda ditentukan dan ATTESTOR_NAME adalah nama attestor yang diperlukan untuk menandatangani rilis.
Contoh berikut menunjukkan cara menentukan pengautentikasi:
requireAttestationsBy: - projects/example-project/attestors/secure-build - projects/example-project/attestors/prod-qualified