Halaman ini menunjukkan cara menggunakan pemeriksaan direktori tepercaya Otorisasi Biner (CV) untuk memeriksa apakah image yang terkait dengan Pod yang berjalan di cluster Google Kubernetes Engine (GKE) berkemampuan CV telah di-deploy dari direktori tepercaya.
Biaya
Panduan ini menggunakan layanan Google Cloud berikut:
- 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.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Artifact Registry, Binary Authorization, Google Kubernetes Engine:
gcloud services enable artifactregistry.googleapis.com
binaryauthorization.googleapis.com container.googleapis.com - Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Artifact Registry, Binary Authorization, Google Kubernetes Engine:
gcloud services enable artifactregistry.googleapis.com
binaryauthorization.googleapis.com container.googleapis.com - Pastikan gcloud CLI diupdate ke versi terbaru.
- Instal alat command line
kubectl
. - Jika kebijakan Otorisasi Biner dan cluster GKE berada di project yang berbeda, pastikan Otorisasi Biner diaktifkan di kedua project.
Peran yang diperlukan
Bagian ini menampilkan 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 project cluster memiliki izin yang diperlukan untuk mengevaluasi pemeriksaan direktori tepercaya CV, minta administrator Anda untuk memberikan peran IAM berikut pada project kepada agen layanan Otorisasi Biner project cluster:
-
Jika project cluster Anda berbeda dengan project kebijakan:
Binary Authorization Policy Evaluator (
roles/binaryauthorization.policyEvaluator
) - Project cluster Binary Authorization Service Agent, untuk mengakses project kebijakan
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Administrator Anda mungkin juga dapat memberikan izin yang diperlukan kepada agen layanan Otorisasi Biner project cluster melalui peran khusus atau peran standar lainnya.
Memberikan peran menggunakan gcloud CLI
Jika project tempat Anda menjalankan cluster berbeda dengan project tempat kebijakan berada, lakukan hal berikut untuk memberikan izin kepada agen layanan Otorisasi Biner project cluster agar dapat mengakses kebijakan dalam project kebijakan.
Dapatkan agen layanan Otorisasi Biner 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_ID
dengan project ID cluster.Izinkan CV untuk 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_ID
dengan ID project yang berisi kebijakan Anda.
Membuat kebijakan platform
Untuk membuat kebijakan platform CV dengan pemeriksaan direktori tepercaya, lakukan hal berikut:
Buat file YAML kebijakan direktori tepercaya:
cat > /tmp/my-policy.yaml <<EOF gkePolicy: checkSets: checks: trustedDirectoryCheck: trustedDirPatterns: - PATTERN1 - PATTERN2 displayName: CHECK_DISPLAY_NAME displayName: CHECK_SET_DISPLAY_NAME EOF
Ganti kode berikut:
PATTERN1
: item daftar dengan pola direktoriPATTERN2
: item daftar dengan pola direktoriCHECK_DISPLAY_NAME
: nama tampilan opsional untuk pemeriksaan direktori tepercayaCHECK_SET_DISPLAY_NAME
: nama tampilan opsional untuk pemeriksaan direktori tepercaya
Berikut adalah contoh pola:
asia-east1-docker.pkg.dev/my-project/my-repo
: hanya memercayai repositori inieurope-central1-docker.pkg.dev/my-project/my-repo/test*
: hanya memercayai repositori dan repositori ini tepat di bawahnya yang dimulai dengantest
us-central1-docker.pkg.dev/my-project/my-repo/**
: hanya memercayai repositori ini dan semua repo di bawahnya
Buat kebijakan platform:
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
- POLICY_ID: ID kebijakan platform
pilihan Anda. Jika kebijakan berada dalam project lain, Anda dapat menggunakan nama resource lengkap:
Aktifkan 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 check.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
CLUSTER_NAME
: nama cluster.LOCATION
: lokasi—misalnya,us-central1
atauasia-south1
.POLICY_PROJECT_ID
: ID project tempat kebijakan disimpan.POLICY_ID
: ID kebijakan.CLUSTER_PROJECT_ID
: ID project 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 penerapan dan pemantauan CV
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-central1
atauasia-south1
.POLICY_PROJECT_ID
: ID project tempat kebijakan disimpan.POLICY_ID
: ID kebijakan.CLUSTER_PROJECT_ID
: ID project 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
Mengupdate cluster untuk menggunakan pemantauan CV
Di bagian ini, Anda akan memperbarui cluster untuk menggunakan pemantauan CV dengan kebijakan platform berbasis check saja. Jika cluster sudah mengaktifkan penerapan kebijakan project-singleton, menjalankan perintah ini akan menonaktifkannya. Sebagai gantinya, pertimbangkan untuk mengupdate cluster dengan penerapan dan pemantauan CV yang diaktifkan.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
CLUSTER_NAME
: nama clusterLOCATION
: lokasi—misalnya:us-central1
atauasia-south1
POLICY_PROJECT_ID
: ID project tempat kebijakan disimpanPOLICY_ID
: ID kebijakanCLUSTER_PROJECT_ID
: ID project 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 penegakan 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-central1
atauasia-south1
POLICY_PROJECT_ID
: ID project tempat kebijakan disimpanPOLICY_ID
: ID kebijakanCLUSTER_PROJECT_ID
: ID project 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
Melihat log untuk entri CV
CV mencatat pelanggaran kebijakan platform ke Cloud Logging dalam waktu 24 jam. Anda biasanya dapat melihat entri dalam beberapa jam.
Jika tidak ada gambar yang melanggar kebijakan platform yang telah Anda aktifkan, tidak ada entri yang akan muncul dalam 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 pemeriksaan
Log CV memeriksa informasi pelanggaran untuk checkResults
. Dalam
entri, nilai checkType
menunjukkan pemeriksaan. Nilai untuk setiap pemeriksaan adalah
sebagai berikut:
ImageFreshnessCheck
SigstoreSignatureCheck
SimpleSigningAttestationCheck
SlsaCheck
TrustedDirectoryCheck
VulnerabilityCheck
Log contoh
Contoh entri Logging CV berikut menjelaskan gambar yang tidak sesuai yang 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 konfigurasikan sebelumnya dalam panduan ini.
Anda dapat menonaktifkan pemantauan CV atau Otorisasi Biner 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
: ID project 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
: ID project cluster
Perhatikan bahwa --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
setara dengan flag lama --enable-binauthz
.
Menghapus kebijakan
Untuk menghapus kebijakan, jalankan perintah berikut. Anda tidak perlu menghapus kebijakan platform berbasis pemeriksaan 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
: project ID kebijakan
Langkah selanjutnya
- 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