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 continuous validation (CV). Layanan evaluasi kebijakan mengevaluasi secara on demand 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 minimal sekali setiap 24 jam. Akibatnya, 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 adanya pelanggaran kebijakan. CV tidak menghasilkan entri log jika 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 GKE CV.
Dengan cara ini, layanan layanan evaluasi kebijakan dapat membantu Anda mengembangkan kebijakan dan men-debug resource Kubernetes yang tidak sesuai sebelum menggunakan CV.
Fitur ini hanya mendukung kebijakan berbasis pemeriksaan GKE CV.
Gambar juga harus menentukan ringkasan gambar dalam formulir IMAGE_URL@IMAGE_DIGEST
,
kecuali dalam kasus berikut:
- Pemeriksaan direktori tepercaya: Pemeriksaan lulus jika image berada di direktori yang Anda tentukan.
- Daftar gambar yang diizinkan dikecualikan: Semua pemeriksaan lainnya memerlukan ringkasan gambar dalam formulir
IMAGE_URL@IMAGE_DIGEST
.
Sebelum memulai
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk menggunakan layanan evaluasi kebijakan,
minta administrator Anda untuk memberi Anda peran IAM
Policy Evaluator (roles/binaryauthorization.policyEvaluator
) di project kebijakan.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.
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 khusus pemeriksaan berikut yang diperlukan:
- Peran yang diperlukan pemeriksaan pengesahan penandatanganan sederhana
- Peran yang diperlukan pemeriksaan kerentanan
- Peran yang diperlukan 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 dalam 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 disetel ke gke
,
jalankan perintah berikut:
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
POLICY_ID
: ID kebijakan platform. Jika kebijakan berada dalam 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 dalam 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 tanda --image
, namespace dan akun layanan
secara implisit dianggap kosong. Jika kebijakan yang Anda evaluasi menggunakan
kumpulan centang yang mencakup kubernetesNamespace
atau
kubernetesServiceAccount
, hasil yang ditampilkan mungkin tidak akurat.
Meninjau output perintah
Output perintah berisi verdict level teratas yang menunjukkan status kesesuaian Pod. Status kesesuaian berikut dapat ditampilkan:
CONFORMANT
: Resource Kubernetes mematuhi kebijakan platform.NON_CONFORMANT
: Resource Kubernetes tidak sesuai dengan kebijakan platform.ERROR
: Evaluasi berakhir dengan error.
Respons ini juga berisi hasil bertingkat yang berisi informasi mendetail tentang status kesesuaian semua pemeriksaan yang dievaluasi untuk setiap gambar yang terdapat dalam resource Kubernetes.
Setiap blok ImageResults
berisi kolom explanation
yang dapat dibaca manusia dan
menjelaskan alasan gambar diizinkan atau tidak diizinkan.
Untuk memfasilitasi pembuatan skrip, perintah menampilkan kode keluar bukan nol saat spesifikasi Pod tidak sesuai dengan kebijakan atau evaluasi gagal.
Contoh output berikut menunjukkan dua kasus. Pada kasus pertama, resource Kubernetes sesuai dengan kebijakan. Dalam kasus kedua, resource tidak sesuai dengan kebijakan.
Melihat hasil yang sesuai
Bagian ini menjelaskan output dari pemeriksaan layanan evaluasi kebijakan di mana Pod sesuai dengan 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
evaluasi berikut:
- Pemeriksaan: Image sesuai untuk pemeriksaan individual—dalam hal ini, pemeriksaan direktori tepercaya.
- {i>CheckSet<i}: Gambar sesuai untuk setiap pemeriksaan di {i>CheckSet<i}.
- Kebijakan: Gambar sesuai dengan kebijakan.
Karena gambar sesuai dengan kebijakan, perintah akan menampilkan kode keluar dengan angka nol.
Melihat hasil yang tidak sesuai
Bagian ini menjelaskan output dari pemeriksaan layanan evaluasi kebijakan saat 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 gambar tidak sesuai dengan pemeriksaan individual, dalam
hal ini pemeriksaan direktori tepercaya, dan karenanya kumpulan semua pemeriksaan, verdict tingkat teratas adalah NON_CONFORMANT
, dan perintah menampilkan kode keluar
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 dalam 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 dalam 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 ini menghasilkan verdict
yang menunjukkan bahwa spesifikasi Pod adalah CONFORMANT
karena spesifikasi
Pod merujuk pada gambar yang berada dalam direktori yang
ditentukan dalam 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 dalam 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 ini menghasilkan
verdict yang menunjukkan bahwa spesifikasi Pod adalah NON_CONFORMANT
, karena
spesifikasi Pod mereferensikan gambar yang berada di luar direktori
yang ditentukan dalam trustedDirPatterns
dalam pemeriksaan direktori tepercaya.
Untuk mengevaluasi gambar 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 dalam 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