Referensi YAML kebijakan

Halaman ini berisi informasi referensi untuk kebijakan Otorisasi Biner sebagaimana ditentukan dalam format YAML. Saat mengonfigurasi kebijakan menggunakan command-line interface, 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 spesifik 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 tempat kebijakan Anda ditentukan.

Contoh:

name: projects/example-project/policy

admissionWhitelistPatterns

admissionWhitelistPatterns menentukan daftar yang diizinkan dari 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 mencocokkan gambar di direktori yang ditentukan. Misalnya, gcr.io/my-project/nginx* cocok dengan gcr.io/my-project/nginx:latest, tetapi tidak cocok 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 umum digunakan, image yang berada 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 memasukkan semua image container yang lokasi registrinya cocok dengan jalur yang ditentukan ke dalam daftar yang diizinkan:

admissionWhitelistPatterns:
  ...
  - namePattern: gcr.io/example-project/*

Untuk memasukkan gambar tertentu ke dalam daftar yang diizinkan:

admissionWhitelistPatterns:
  ...
  - namePattern: gcr.io/example-project/helloworld

Untuk memasukkan versi yang saat ini diberi tag ke dalam daftar yang diizinkan:

admissionWhitelistPatterns:
  ...
  - namePattern: gcr.io/example-project/helloworld:latest
  - namePattern: gcr.io/example-project/helloworld:my-tag
  - namePattern: gcr.io/example-project/helloworld:v1.*

Untuk memasukkan versi tertentu dari image ke daftar yang diizinkan berdasarkan ringkasannya:

admissionWhitelistPatterns:
  ...
  - namePattern: gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c

Untuk memasukkan gambar ke daftar yang diizinkan 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, gambar yang diperlukan oleh GKE tidak akan diblokir oleh penerapan kebijakan. Kebijakan sistem dievaluasi sebelum dan selain 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 yang memiliki aturan khusus cluster sendiri. Anda menentukan aturan default menggunakan koleksi ADMISSION_RULE:

defaultAdmissionRule:
  ADMISSION_RULE

Contoh berikut menunjukkan aturan default yang hanya mengizinkan image penampung yang telah diizinkan oleh pengesah yang ditentukan untuk di-deploy. Jika semua pengesah yang diperlukan belum mengizinkan 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 menyatakan 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 image container yang telah disahkan oleh pengesah yang ditentukan untuk di-deploy:

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

Kumpulan 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 ini
  • ALWAYS_DENY: Selalu tolak deployment gambar yang dievaluasi oleh aturan ini
  • REQUIRE_ATTESTATION: Mewajibkan satu atau beberapa pengesah untuk mengizinkan rilis sebelum deployment

Jika evaluationMode adalah REQUIRE_ATTESTATION, Anda harus memberikan referensi kepada saksi yang diperlukan di requireAttestationsBy.

enforcementMode

enforcementMode menentukan tindakan yang dilakukan Otorisasi Biner jika image container 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 gambar yang tidak sesuai dan menulis detail tentang pelanggaran ke log audit.

Sebagian besar aturan produksi menggunakan mode penerapan ENFORCED_BLOCK_AND_AUDIT_LOG. DRYRUN_AUDIT_LOG_ONLY terutama digunakan untuk menguji kebijakan di lingkungan Anda sebelum kebijakan tersebut berlaku.

requireAttestationsBy

requireAttestationsBy menentukan satu atau beberapa pengesah yang harus mengizinkan rilis sebelum image container dapat di-deploy. 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 harus menandatangani rilis.

Contoh berikut menunjukkan cara menentukan pengesah:

requireAttestationsBy:
- projects/example-project/attestors/secure-build
- projects/example-project/attestors/prod-qualified