Halaman ini menunjukkan cara menggunakan perintah Google Cloud CLI layanan evaluasi kebijakan untuk mengevaluasi dengan cepat apakah image atau resource Kubernetes sesuai dengan kebijakan platform berbasis pemeriksaan validasi berkelanjutan.
Ringkasan
Layanan evaluasi kebijakan adalah fitur Otorisasi Biner yang dapat Anda gunakan dengan kebijakan platform berbasis pemeriksaan validasi berkelanjutan (CV). Layanan evaluasi kebijakan mengevaluasi sesuai permintaan apakah image container yang Anda tentukan sesuai dengan kebijakan platform CV. Layanan evaluasi kebijakan tersedia sebagai perintah gcloud CLI dan metode projects.platforms.gke.policies.evaluate.
CV memeriksa pelanggaran kebijakan setidaknya sekali setiap 24 jam. Oleh karena itu, perlu waktu hingga 24 jam agar peristiwa CV muncul di Logging setelah CV diaktifkan atau resource Kubernetes di-deploy. Selain itu, CV menghasilkan entri log saat mendeteksi pelanggaran kebijakan. CV tidak menghasilkan entri log saat resource Kubernetes sesuai dengan kebijakan.
Layanan evaluasi kebijakan menghasilkan verdict yang menunjukkan apakah gambar sesuai dengan kebijakan atau apakah gambar melanggar kebijakan.
Dengan menggunakan layanan evaluasi kebijakan, Anda dapat dengan cepat menentukan apakah gambar Anda sesuai dengan kebijakan.
Saat menggunakan layanan ini, Anda menentukan URL gambar, baik secara langsung maupun dalam resource Kubernetes, dan Anda juga menentukan nama kebijakan berbasis pemeriksaan CV GKE.
Dengan cara ini, layanan evaluasi kebijakan dapat membantu Anda mengembangkan kebijakan dan men-debug resource Kubernetes yang tidak mematuhi kebijakan sebelum Anda menggunakan CV.
Fitur ini hanya mendukung kebijakan berbasis pemeriksaan GKE CV.
Gambar juga harus menentukan ringkasan gambar dalam bentuk IMAGE_URL@IMAGE_DIGEST
,
kecuali dalam kasus berikut:
- Pemeriksaan direktori tepercaya: Pemeriksaan akan lulus jika gambar berada di direktori yang Anda tentukan.
- Daftar yang dikecualikan untuk gambar: Semua pemeriksaan lainnya memerlukan ringkasan gambar dalam bentuk
IMAGE_URL@IMAGE_DIGEST
.
Sebelum memulai
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna menggunakan layanan evaluasi kebijakan,
minta administrator untuk memberi Anda
peran IAM Policy Evaluator (roles/binaryauthorization.policyEvaluator
) di project kebijakan.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Jika kebijakan Anda menggunakan pemeriksaan tertentu, Anda mungkin perlu meminta administrator untuk memberikan peran yang diperlukan khusus pemeriksaan berikut:
- Peran yang diperlukan untuk pemeriksaan pengesahan penandatanganan sederhana
- Peran yang diperlukan untuk pemeriksaan kerentanan
- Peran yang diperlukan untuk pemeriksaan keaktualan
Mengevaluasi kebijakan platform berbasis pemeriksaan
Layanan evaluasi kebijakan dapat mengevaluasi satu URL gambar atau gambar yang ditentukan dalam resource Kubernetes berformat JSON atau YAML.
Mengevaluasi kebijakan platform berbasis pemeriksaan dengan resource Kubernetes
Untuk mengevaluasi kebijakan dengan resource Kubernetes menggunakan gcloud CLI, jalankan perintah berikut:
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
POLICY_ID
: ID kebijakan platform. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap:projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID
.POD_SPECIFICATION_PATH
: Jalur spesifikasi Pod Anda.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud beta container binauthz policy evaluate POLICY_ID \ --resource=POD_SPECIFICATION_PATH
Windows (PowerShell)
gcloud beta container binauthz policy evaluate POLICY_ID ` --resource=POD_SPECIFICATION_PATH
Windows (cmd.exe)
gcloud beta container binauthz policy evaluate POLICY_ID ^ --resource=POD_SPECIFICATION_PATH
Untuk mengevaluasi kebijakan yang menentukan platform, yang harus ditetapkan ke gke
, jalankan perintah berikut:
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
POLICY_ID
: ID kebijakan platform. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap:projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID
.POD_SPECIFICATION_PATH
: Jalur spesifikasi Pod Anda.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud beta container binauthz policy evaluate POLICY_ID \ --platform=gke \ --resource=POD_SPECIFICATION_PATH
Windows (PowerShell)
gcloud beta container binauthz policy evaluate POLICY_ID ` --platform=gke ` --resource=POD_SPECIFICATION_PATH
Windows (cmd.exe)
gcloud beta container binauthz policy evaluate POLICY_ID ^ --platform=gke ^ --resource=POD_SPECIFICATION_PATH
Mengevaluasi kebijakan platform berbasis pemeriksaan dengan URL gambar
Untuk mengevaluasi kebijakan menggunakan URL gambar, jalankan perintah berikut:
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
POLICY_ID
: ID kebijakan platform. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap:projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID
.IMAGE_URL
: Jalur spesifikasi Pod Anda.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud beta container binauthz policy evaluate POLICY_ID \ --image=IMAGE_URL
Windows (PowerShell)
gcloud beta container binauthz policy evaluate POLICY_ID ` --image=IMAGE_URL
Windows (cmd.exe)
gcloud beta container binauthz policy evaluate POLICY_ID ^ --image=IMAGE_URL
Saat Anda menggunakan flag --image
, namespace dan akun layanan secara implisit dianggap kosong. Jika kebijakan yang Anda evaluasi menggunakan
checkset yang dicakupkan ke kubernetesNamespace
atau
kubernetesServiceAccount
, hasil yang ditampilkan mungkin tidak akurat.
Meninjau output perintah
Output perintah berisi verdict tingkat atas yang menunjukkan status kepatuhan Pod. Status kepatuhan berikut dapat ditampilkan:
CONFORMANT
: Resource Kubernetes sesuai dengan kebijakan platform.NON_CONFORMANT
: Resource Kubernetes tidak sesuai dengan kebijakan platform.ERROR
: Evaluasi berakhir dengan error.
Respons juga berisi hasil bertingkat yang berisi informasi mendetail tentang status kepatuhan semua pemeriksaan yang dievaluasi untuk setiap gambar yang terdapat dalam resource Kubernetes.
Setiap blok ImageResults
berisi kolom explanation
yang dapat dibaca manusia yang
menjelaskan alasan gambar diizinkan atau tidak diizinkan.
Untuk memfasilitasi pembuatan skrip, perintah akan menampilkan kode keluar non-nol saat spesifikasi Pod tidak sesuai dengan kebijakan atau evaluasi gagal.
Contoh output berikut menunjukkan dua kasus. Dalam kasus pertama, resource Kubernetes sesuai dengan kebijakan. Dalam kasus kedua, resource tidak sesuai dengan kebijakan.
Melihat hasil yang sesuai
Bagian ini menjelaskan output pemeriksaan layanan evaluasi kebijakan yang memastikan Pod mematuhi kebijakan platform.
results:
- imageResults:
- checkSetResult:
checkResults:
results:
- displayName: My trusted directory check
evaluationResult:
verdict: CONFORMANT
explanation: Image is in a trusted directory
type: TrustedDirectoryCheck
displayName: Default check set
scope: {}
imageUri: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
verdict: CONFORMANT
kubernetesNamespace: default
kubernetesServiceAccount: default
podName: my-pod
verdict: CONFORMANT
verdict: CONFORMANT
Dalam output, verdict CONFORMANT
ditampilkan untuk jenis
penilaian berikut:
- Pemeriksaan: Gambar sesuai untuk pemeriksaan individual—dalam hal ini, pemeriksaan direktori tepercaya.
- CheckSet: Gambar sesuai untuk setiap pemeriksaan di CheckSet.
- Kebijakan: Gambar sesuai dengan kebijakan.
Karena image mematuhi kebijakan, perintah akan menampilkan kode keluar nol.
Melihat hasil yang tidak sesuai
Bagian ini menjelaskan output pemeriksaan layanan evaluasi kebijakan yang menunjukkan bahwa Pod tidak sesuai dengan kebijakan platform.
results:
- imageResults:
- checkSetResult:
checkResults:
results:
- displayName: My trusted directory check
evaluationResult:
verdict: NON_CONFORMANT
explanation: Image isn't in a trusted directory
type: TrustedDirectoryCheck
displayName: Default check set
scope: {}
imageUri: us-docker.pkg.dev/untrusted-directory/containers/gke/hello-app:1.0
verdict: NON_CONFORMANT
kubernetesNamespace: default
kubernetesServiceAccount: default
podName: my-pod
verdict: NON_CONFORMANT
verdict: NON_CONFORMANT
Dalam output, karena image tidak sesuai dengan pemeriksaan individual, dalam
hal ini pemeriksaan direktori tepercaya, dan oleh karena itu kumpulan semua pemeriksaan, verdict tingkat teratas adalah NON_CONFORMANT
, dan perintah menampilkan kode keluar
yang bukan nol.
Menguji layanan evaluasi kebijakan
Bagian ini menjelaskan cara menguji layanan evaluasi kebijakan. Anda membuat kebijakan platform berbasis pemeriksaan yang berisi pemeriksaan direktori tepercaya. Pada pengujian pertama, Anda dapat mengevaluasi spesifikasi Pod yang sesuai dengan kebijakan. Pada pengujian kedua, Anda mengevaluasi spesifikasi Pod yang tidak sesuai dengan kebijakan.
Untuk membuat kebijakan yang berisi pemeriksaan direktori tepercaya, jalankan perintah berikut:
Buat file kebijakan platform:
cat << EOF > my-policy.yaml gkePolicy: checkSets: - checks: - displayName: "My trusted directory check" trustedDirectoryCheck: trustedDirPatterns: - "us-docker.pkg.dev/google-samples/containers/gke/" displayName: "My default check set" EOF
Buat kebijakan:
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- POLICY_ID: ID kebijakan platform
pilihan Anda. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap:
projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID
. - POLICY_PATH: Jalur ke file kebijakan.
- POLICY_PROJECT_ID: Project ID kebijakan.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud beta container binauthz policy create POLICY_ID \ --platform=gke \ --policy-file=POLICY_PATH \ --project=POLICY_PROJECT_ID
Windows (PowerShell)
gcloud beta container binauthz policy create POLICY_ID ` --platform=gke ` --policy-file=POLICY_PATH ` --project=POLICY_PROJECT_ID
Windows (cmd.exe)
gcloud beta container binauthz policy create POLICY_ID ^ --platform=gke ^ --policy-file=POLICY_PATH ^ --project=POLICY_PROJECT_ID
gcloud beta container binauthz policy create POLICY_ID \ --platform=gke \ --policy-file=my-policy.yaml
- POLICY_ID: ID kebijakan platform
pilihan Anda. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap:
Mengevaluasi gambar yang sesuai
Di bagian ini, Anda akan mengevaluasi spesifikasi Pod yang sesuai dengan kebijakan
yang Anda buat sebelumnya dalam panduan ini. Evaluasi menghasilkan verdict
yang menunjukkan bahwa spesifikasi Pod adalah CONFORMANT
, karena spesifikasi
Pod mereferensikan image yang berada di direktori yang
ditentukan di trustedDirPatterns
dalam pemeriksaan direktori tepercaya.
Buat spesifikasi Pod:
cat << EOF > my-conforming-pod.json { "apiVersion": "v1", "kind": "Pod", "metadata": { "name": "" }, "spec": { "containers": [ { "image": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0" } ] } } EOF
Gunakan layanan evaluasi kebijakan dengan menjalankan perintah berikut:
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
POLICY_ID
: ID kebijakan platform. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap:projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID
.my-conforming-pod.json
: Jalur spesifikasi Pod Anda.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud beta container binauthz policy evaluate POLICY_ID \ --image=my-conforming-pod.json
Windows (PowerShell)
gcloud beta container binauthz policy evaluate POLICY_ID ` --image=my-conforming-pod.json
Windows (cmd.exe)
gcloud beta container binauthz policy evaluate POLICY_ID ^ --image=my-conforming-pod.json
Mengevaluasi gambar yang tidak sesuai
Di bagian ini, Anda akan mengevaluasi spesifikasi Pod yang tidak sesuai dengan
kebijakan yang Anda buat sebelumnya dalam panduan ini. Evaluasi menghasilkan
verdict yang menunjukkan bahwa spesifikasi Pod adalah NON_CONFORMANT
, karena
spesifikasi Pod mereferensikan image yang berada di luar direktori
yang ditentukan dalam trustedDirPatterns
dalam pemeriksaan direktori tepercaya.
Untuk mengevaluasi image yang tidak sesuai, jalankan perintah berikut:
Buat spesifikasi Pod:
cat << EOF > my-non-conforming-pod.json { "apiVersion": "v1", "kind": "Pod", "metadata": { "name": "" }, "spec": { "containers": [ { "image": "us-docker.pkg.dev/untrusted-directory/containers/gke/hello-app:1.0" } ] } } EOF
Gunakan layanan evaluasi kebijakan dengan menjalankan perintah berikut:
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
POLICY_ID
: ID kebijakan platform. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap:projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID
.my-non-conforming-pod.json
: Jalur spesifikasi Pod Anda.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud beta container binauthz policy evaluate POLICY_ID \ --image=my-non-conforming-pod.json
Windows (PowerShell)
gcloud beta container binauthz policy evaluate POLICY_ID ` --image=my-non-conforming-pod.json
Windows (cmd.exe)
gcloud beta container binauthz policy evaluate POLICY_ID ^ --image=my-non-conforming-pod.json