Halaman ini menunjukkan cara menggunakan pemeriksaan kerentanan validasi berkelanjutan (CV) Otorisasi Biner untuk memantau kerentanan yang terkait dengan Pod yang berjalan di cluster Google Kubernetes Engine (GKE) yang mendukung CV.
Biaya
Panduan ini menggunakan layanan Google Cloud berikut:
- Artifact Analysis
- Otorisasi Biner, tetapi CV tersedia tanpa biaya selama tahap Pratinjau
- GKE
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan API Artifact Analysis, Binary Authorization, Google Kubernetes Engine:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.gcloud services enable binaryauthorization.googleapis.com
containeranalysis.googleapis.com container.googleapis.com -
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan API Artifact Analysis, Binary Authorization, Google Kubernetes Engine:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.gcloud services enable binaryauthorization.googleapis.com
containeranalysis.googleapis.com container.googleapis.com - Pastikan gcloud CLI diupdate ke versi terbaru.
- Instal alat command line
kubectl. - Jika kebijakan Otorisasi Biner dan cluster GKE Anda berada di project yang berbeda, pastikan Otorisasi Biner diaktifkan di kedua project.
Peran yang diperlukan
Bagian ini menunjukkan cara menetapkan peran untuk pemeriksaan ini.
Ringkasan
Jika Anda menjalankan semua produk yang disebutkan dalam panduan ini di project yang sama, Anda tidak perlu menetapkan izin apa pun. Otorisasi Biner mengonfigurasi peran dengan benar saat Anda mengaktifkannya. Jika menjalankan produk di project yang berbeda, Anda harus menetapkan peran seperti yang dijelaskan di bagian ini.
Untuk memastikan bahwa Agen Layanan Otorisasi Biner di setiap project memiliki izin yang diperlukan untuk mengevaluasi pemeriksaan kerentanan CV, minta administrator Anda untuk memberikan peran IAM berikut kepada Agen Layanan Otorisasi Biner di setiap project:
-
Jika project cluster Anda berbeda dengan project kebijakan:
Binary Authorization Policy Evaluator (
roles/binaryauthorization.policyEvaluator) di Agen Layanan Binary Authorization project cluster, agar dapat mengakses project kebijakan -
Jika project artefak Anda berbeda dengan project kebijakan Anda:
Pelihat Peristiwa Analisis Kontainer (
roles/containeranalysis.occurrences.viewer) pada Agen Layanan Otorisasi Biner project kebijakan, agar dapat mengakses informasi kerentanan
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Administrator Anda mungkin juga dapat memberikan izin yang diperlukan kepada Agen Layanan Otorisasi Biner di setiap project melalui peran khusus atau peran bawaan lainnya.
Memberikan peran menggunakan gcloud CLI
Untuk memastikan bahwa akun layanan di setiap project memiliki izin yang diperlukan untuk mengevaluasi pemeriksaan ini, berikan peran IAM berikut kepada akun layanan di setiap project:
Jika project tempat Anda menjalankan cluster berbeda dengan project tempat kebijakan berada, Anda harus memberikan izin kepada agen layanan Binary Authorization project cluster untuk mengakses kebijakan di project kebijakan.
Dapatkan agen layanan Binary Authorization project cluster:
PROJECT_NUMBER=$(gcloud projects list \ --filter="projectId:CLUSTER_PROJECT_ID" \ --format="value(PROJECT_NUMBER)") CLUSTER_SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"Ganti
CLUSTER_PROJECT_IDdengan project ID cluster.Izinkan CV mengevaluasi kebijakan di cluster:
gcloud projects add-iam-policy-binding POLICY_PROJECT_ID \ --member="serviceAccount:$CLUSTER_SERVICE_ACCOUNT" \ --role='roles/binaryauthorization.policyEvaluator'Ganti
POLICY_PROJECT_IDdengan ID project yang berisi kebijakan Anda.
Jika project Analisis Artefak Anda berbeda dengan project kebijakan Binary Authorization, lakukan hal berikut:
Dapatkan agen layanan Otorisasi Biner project kebijakan:
PROJECT_NUMBER=$(gcloud projects list \ --filter="projectId:POLICY_PROJECT_ID" \ --format="value(PROJECT_NUMBER)") SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"Ganti
POLICY_PROJECT_IDdengan ID project yang berisi kebijakan Anda.Berikan peran:
gcloud projects add-iam-policy-binding VULNERABILITY_PROJECT_ID \ --member="serviceAccount:$SERVICE_ACCOUNT" \ --role='roles/containeranalysis.occurrences.viewer'Ganti
VULNERABILITY_PROJECT_IDdengan ID project tempat Anda menjalankan Analisis Artefak.
Membuat kebijakan platform
Untuk membuat kebijakan platform CV dengan pemeriksaan kerentanan, lakukan langkah berikut:
Buat file YAML kebijakan platform:
cat > /tmp/my-policy.yaml <<EOF gkePolicy: checkSets: - checks: - vulnerabilityCheck: maximumFixableSeverity: MEDIUM maximumUnfixableSeverity: HIGH allowedCves: - CVE_ALLOWED blockedCves: - CVE_BLOCKED containerAnalysisVulnerabilityProjects: projects/VULNERABILITY_PROJECT displayName: My vulnerability check displayName: My vulnerability check set EOFBuat kebijakan platform.
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
- POLICY_ID: ID kebijakan platform
pilihan Anda. Jika kebijakan berada di project lain, Anda dapat menggunakan nama resource lengkap:
Mengaktifkan CV
Anda dapat membuat cluster baru atau mengupdate cluster yang ada untuk menggunakan pemantauan CV dengan kebijakan platform berbasis pemeriksaan.
Membuat cluster yang menggunakan pemantauan CV
Di bagian ini, Anda akan membuat cluster yang hanya menggunakan pemantauan CV dengan kebijakan platform berbasis pemeriksaan.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
CLUSTER_NAME: nama cluster.LOCATION: lokasi—misalnya,us-central1atauasia-south1.POLICY_PROJECT_ID: ID project tempat kebijakan disimpan.POLICY_ID: ID kebijakan.CLUSTER_PROJECT_ID: project ID cluster.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud beta container clusters create CLUSTER_NAME \ --location=LOCATION \ --binauthz-evaluation-mode=POLICY_BINDINGS \ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \ --project=CLUSTER_PROJECT_ID
Windows (PowerShell)
gcloud beta container clusters create CLUSTER_NAME ` --location=LOCATION ` --binauthz-evaluation-mode=POLICY_BINDINGS ` --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ` --project=CLUSTER_PROJECT_ID
Windows (cmd.exe)
gcloud beta container clusters create CLUSTER_NAME ^ --location=LOCATION ^ --binauthz-evaluation-mode=POLICY_BINDINGS ^ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ^ --project=CLUSTER_PROJECT_ID
Membuat cluster yang menggunakan pemantauan CV dan penerapan
Di bagian ini, Anda akan membuat cluster yang menggunakan penerapan kebijakan project-singleton dan pemantauan CV dengan kebijakan platform berbasis pemeriksaan:
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
CLUSTER_NAME: nama cluster.LOCATION: lokasi—misalnya,us-central1atauasia-south1.POLICY_PROJECT_ID: ID project tempat kebijakan disimpan.POLICY_ID: ID kebijakan.CLUSTER_PROJECT_ID: project ID cluster.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud beta container clusters create CLUSTER_NAME \ --location=LOCATION \ --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE \ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \ --project=CLUSTER_PROJECT_ID
Windows (PowerShell)
gcloud beta container clusters create CLUSTER_NAME ` --location=LOCATION ` --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE ` --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ` --project=CLUSTER_PROJECT_ID
Windows (cmd.exe)
gcloud beta container clusters create CLUSTER_NAME ^ --location=LOCATION ^ --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE ^ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ^ --project=CLUSTER_PROJECT_ID
Memperbarui cluster untuk menggunakan pemantauan CV
Di bagian ini, Anda akan mengupdate cluster untuk menggunakan pemantauan CV dengan kebijakan platform berbasis pemeriksaan saja. Jika cluster sudah mengaktifkan penerapan kebijakan project-singleton, menjalankan perintah ini akan menonaktifkannya. Sebagai gantinya, pertimbangkan untuk memperbarui cluster dengan pengaktifan pemantauan CV dan penerapan.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
CLUSTER_NAME: nama clusterLOCATION: lokasi—misalnya:us-central1atauasia-south1POLICY_PROJECT_ID: ID project tempat kebijakan disimpanPOLICY_ID: ID kebijakanCLUSTER_PROJECT_ID: project ID cluster
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --binauthz-evaluation-mode=POLICY_BINDINGS \ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \ --project=CLUSTER_PROJECT_ID
Windows (PowerShell)
gcloud beta container clusters update CLUSTER_NAME ` --location=LOCATION ` --binauthz-evaluation-mode=POLICY_BINDINGS ` --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ` --project=CLUSTER_PROJECT_ID
Windows (cmd.exe)
gcloud beta container clusters update CLUSTER_NAME ^ --location=LOCATION ^ --binauthz-evaluation-mode=POLICY_BINDINGS ^ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ^ --project=CLUSTER_PROJECT_ID
Mengupdate cluster untuk menggunakan penerapan dan pemantauan CV
Di bagian ini, Anda akan memperbarui cluster untuk menggunakan penerapan kebijakan singleton project dan pemantauan CV dengan kebijakan platform berbasis pemeriksaan.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
CLUSTER_NAME: nama clusterLOCATION: lokasi—misalnya:us-central1atauasia-south1POLICY_PROJECT_ID: ID project tempat kebijakan disimpanPOLICY_ID: ID kebijakanCLUSTER_PROJECT_ID: project ID cluster
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud beta container clusters update CLUSTER_NAME \ --location=LOCATION \ --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE \ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \ --project=CLUSTER_PROJECT_ID
Windows (PowerShell)
gcloud beta container clusters update CLUSTER_NAME ` --location=LOCATION ` --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE ` --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ` --project=CLUSTER_PROJECT_ID
Windows (cmd.exe)
gcloud beta container clusters update CLUSTER_NAME ^ --location=LOCATION ^ --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE ^ --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ^ --project=CLUSTER_PROJECT_ID
Menguji pemeriksaan kerentanan
Untuk menguji bahwa pemeriksaan dikonfigurasi dengan benar, perbarui kebijakan dan ubah parameter pemeriksaan untuk memicu pelanggaran. Misalnya, Anda dapat menambahkan CVE tertentu ke blockedCves, lalu men-deploy image yang memiliki kerentanan tersebut.
Melihat log untuk entri CV
Anda dapat menelusuri entri Cloud Logging untuk menemukan error konfigurasi CV dan pelanggaran validasi kebijakan platform CV.
CV mencatat error dan pelanggaran ke Cloud Logging dalam waktu 24 jam. Anda biasanya dapat melihat entri dalam beberapa jam.
Melihat log error konfigurasi CV
Untuk melihat log error konfigurasi CV, jalankan perintah berikut:
gcloud logging read \
--order="desc" \
--freshness=7d \
--project=CLUSTER_PROJECT_ID \
'logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation" "configErrorEvent"'
Output berikut menunjukkan error konfigurasi saat kebijakan platform CV tidak ditemukan:
{
"insertId": "141d4f10-72ea-4a43-b3ec-a03da623de42",
"jsonPayload": {
"@type": "type.googleapis.com/google.cloud.binaryauthorization.v1beta1.ContinuousValidationEvent",
"configErrorEvent": {
"description": "Cannot monitor cluster 'us-central1-c.my-cluster': Resource projects/123456789/platforms/gke/policies/my-policy does not exist."
}
},
"resource": {
"type": "k8s_cluster",
"labels": {
"cluster_name": "my-cluster",
"location": "us-central1-c",
"project_id": "my-project"
}
},
"timestamp": "2024-05-28T15:31:03.999566Z",
"severity": "WARNING",
"logName": "projects/my-project/logs/binaryauthorization.googleapis.com%2Fcontinuous_validation",
"receiveTimestamp": "2024-05-28T16:30:56.304108670Z"
}
Melihat pelanggaran validasi kebijakan platform CV
Jika tidak ada gambar yang melanggar kebijakan platform yang telah Anda aktifkan, tidak ada entri yang muncul di log.
Untuk melihat entri log CV selama tujuh hari terakhir, jalankan perintah berikut:
gcloud logging read \
--order="desc" \
--freshness=7d \
--project=CLUSTER_PROJECT_ID \
'logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation" "policyName"'
Ganti CLUSTER_PROJECT_ID dengan project ID cluster.
Jenis cek
Log CV memeriksa informasi pelanggaran ke checkResults. Dalam
entri, nilai checkType menunjukkan pemeriksaan. Nilai untuk setiap pemeriksaan adalah sebagai berikut:
ImageFreshnessCheckSigstoreSignatureCheckSimpleSigningAttestationCheckSlsaCheckTrustedDirectoryCheckVulnerabilityCheck
Contoh log
Entri CV Logging contoh berikut menjelaskan gambar yang tidak sesuai dan melanggar pemeriksaan direktori tepercaya:
{
"insertId": "637c2de7-0000-2b64-b671-24058876bb74",
"jsonPayload": {
"podEvent": {
"endTime": "2022-11-22T01:14:30.430151Z",
"policyName": "projects/123456789/platforms/gke/policies/my-policy",
"images": [
{
"result": "DENY",
"checkResults": [
{
"explanation": "TrustedDirectoryCheck at index 0 with display name \"My trusted directory check\" has verdict NOT_CONFORMANT. Image is not in a trusted directory",
"checkSetName": "My check set",
"checkSetIndex": "0",
"checkName": "My trusted directory check",
"verdict": "NON_CONFORMANT",
"checkType": "TrustedDirectoryCheck",
"checkIndex": "0"
}
],
"image": "gcr.io/my-project/hello-app:latest"
}
],
"verdict": "VIOLATES_POLICY",
"podNamespace": "default",
"deployTime": "2022-11-22T01:06:53Z",
"pod": "hello-app"
},
"@type": "type.googleapis.com/google.cloud.binaryauthorization.v1beta1.ContinuousValidationEvent"
},
"resource": {
"type": "k8s_cluster",
"labels": {
"project_id": "my-project",
"location": "us-central1-a",
"cluster_name": "my-test-cluster"
}
},
"timestamp": "2022-11-22T01:44:28.729881832Z",
"severity": "WARNING",
"logName": "projects/my-project/logs/binaryauthorization.googleapis.com%2Fcontinuous_validation",
"receiveTimestamp": "2022-11-22T03:35:47.171905337Z"
}
Pembersihan
Bagian ini menjelaskan cara membersihkan pemantauan CV yang Anda konfigurasi sebelumnya dalam panduan ini.
Anda dapat menonaktifkan pemantauan CV atau Binary Authorization dan CV di cluster Anda.
Menonaktifkan Otorisasi Biner di cluster
Untuk menonaktifkan penerapan CV dan Otorisasi Biner di cluster Anda, jalankan perintah berikut:
gcloud beta container clusters update CLUSTER_NAME \
--binauthz-evaluation-mode=DISABLED \
--location=LOCATION \
--project=CLUSTER_PROJECT_ID
Ganti kode berikut:
CLUSTER_NAME: nama clusterLOCATION: lokasi clusterCLUSTER_PROJECT_ID: project ID cluster
Menonaktifkan pemantauan kebijakan berbasis pemeriksaan di cluster
Untuk menonaktifkan CV dengan kebijakan berbasis pemeriksaan di cluster, dan mengaktifkan kembali penerapan menggunakan kebijakan penerapan Otorisasi Biner, jalankan perintah berikut:
gcloud beta container clusters update CLUSTER_NAME \
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \
--location=LOCATION \
--project="CLUSTER_PROJECT_ID"
Ganti kode berikut:
CLUSTER_NAME: nama clusterLOCATION: lokasi clusterCLUSTER_PROJECT_ID: project ID cluster
Perhatikan bahwa --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE setara dengan flag --enable-binauthz yang lebih lama.
Menghapus kebijakan
Untuk menghapus kebijakan, jalankan perintah berikut. Kebijakan platform berbasis pemeriksaan tidak perlu dihapus untuk menonaktifkan audit kebijakan berbasis pemeriksaan.
gcloud beta container binauthz policy delete POLICY_ID \
--platform=gke \
--project="POLICY_PROJECT_ID"
Ganti kode berikut:
POLICY_ID: ID kebijakanPOLICY_PROJECT_ID: ID project kebijakan
Langkah berikutnya
- Menggunakan pemeriksaan keaktualan gambar
- Menggunakan pemeriksaan pengesahan penandatanganan sederhana
- Menggunakan pemeriksaan tanda tangan Sigstore
- Menggunakan pemeriksaan SLSA
- Menggunakan pemeriksaan direktori tepercaya
- Menggunakan pemeriksaan kerentanan
- Melihat log CV