Panduan memulai: Memantau keamanan Pod dengan validasi berkelanjutan
Pelajari cara memulai validasi berkelanjutan (CV) Otorisasi Biner dengan kebijakan berbasis pemeriksaan. Dalam panduan memulai ini, Anda akan menggunakan _pemeriksaan_ CV berikut untuk terus memvalidasi Pod yang berjalan untuk kondisi berikut:
- Direktori tepercaya: Memeriksa apakah image yang terkait dengan Pod berada di satu atau beberapa direktori tepercaya yang Anda tentukan dalam kebijakan.
- Kesegaran image: Memeriksa apakah image Pod diupload dalam jumlah hari yang Anda tentukan dalam kebijakan.
Sebelum memulai
- Login ke akun Anda. Google Cloud 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 terlebih dahulu login ke gcloud CLI dengan identitas gabungan Anda.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Memilih 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 Project Creator
(
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 Google Cloud project yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama Google Cloud project Anda.
-
Pastikan penagihan diaktifkan untuk Google Cloud project Anda.
Aktifkan Otorisasi Biner dan Google Kubernetes Engine API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable container.googleapis.com
binaryauthorization.googleapis.com -
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus terlebih dahulu login ke gcloud CLI dengan identitas gabungan Anda.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Memilih 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 Project Creator
(
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 Google Cloud project yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama Google Cloud project Anda.
-
Pastikan penagihan diaktifkan untuk Google Cloud project Anda.
Aktifkan Otorisasi Biner dan Google Kubernetes Engine API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable container.googleapis.com
binaryauthorization.googleapis.com - 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.
Membuat kebijakan platform
Untuk menyiapkan kebijakan platform GKE CV, lakukan hal berikut:
Buat file YAML kebijakan platform:
cat << EOF > /tmp/my-policy.yaml gkePolicy: checkSets: - checks: - trustedDirectoryCheck: trustedDirPatterns: - us-central1-docker.pkg.dev/my-project/my-directory displayName: My trusted directory check - imageFreshnessCheck: maxUploadAgeDays: 30 displayName: My image freshness check displayName: My trusted directory and image freshness check set EOFKebijakan ini memeriksa kondisi berikut:
Image Pod disimpan di repositori Artifact Registry bernama
us-central1-docker.pkg.dev/my-project/my-directory.Image Pod diupload ke repositori Artifact Registry atau Container Registry dalam 30 hari terakhir.
Buat kebijakan platform:
gcloud beta container binauthz policy create POLICY_ID \ --platform=gke \ --policy-file=/tmp/my-policy.yaml \ --project=POLICY_PROJECT_IDGanti kode berikut:
POLICY_ID: ID pilihan AndaPOLICY_PROJECT_ID: ID project kebijakan
Membuat atau memperbarui cluster
Untuk mengaktifkan CV di cluster, Anda dapat membuat cluster baru atau memperbarui cluster yang ada.
Untuk membuat cluster dengan kebijakan platform berbasis pemeriksaan yang diaktifkan, jalankan perintah berikut:
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_IDGanti kode 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
Tunggu hingga cluster selesai dibuat.
Untuk memperbarui cluster yang ada dengan kebijakan berbasis pemeriksaan yang diaktifkan, jalankan perintah berikut.
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_IDGanti kode 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
Tunggu hingga cluster diperbarui.
Men-deploy image
Dapatkan kredensial untuk
kubectl:gcloud container clusters get-credentials CLUSTER_NAMEDeploy image:
kubectl run hello-app \ --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0Image
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0memenuhi pemeriksaan kesegaran karena diupload ke repositori dalam 30 hari terakhir. Namun, image tersebut tidak memenuhi pemeriksaan direktori tepercaya karena tidak berada dius-central1-docker.pkg.dev/my-project/my-directory. Akibatnya, CV menghasilkan entri logTrustedDirectoryCheckdi Cloud Logging.
Melihat log
Entri log akan muncul di Cloud Logging dalam waktu 24 jam setelah Pod di-deploy, tetapi dapat muncul dalam waktu beberapa jam.
Untuk melihat log di Cloud Logging, gunakan filter berikut:
logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation" "policyName"
Log untuk Pod hello-app mirip dengan log di bawah. Beberapa kolom mungkin berbeda, bergantung pada project ID, nama cluster, dll.
{
"insertId": "637c2de7-0000-2b64-b671-24058876bb74",
"jsonPayload": {
"podEvent": {
"endTime": "2022-11-22T01:14:30.430151Z",
"policyName": "projects/1234567890/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": "Default check set",
"checkSetIndex": "0",
"checkName": "My trusted directory check",
"verdict": "NON_CONFORMANT",
"checkType": "TrustedDirectoryCheck",
"checkIndex": "0"
}
],
"image": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0"
}
],
"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-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"
}
Entri log menampilkan informasi tentang pelanggaran kebijakan, termasuk kolom berikut:
policyName: kebijakan platform yang digunakan CV saat mengidentifikasi pelanggarancheckResults: blok hasil yang mencakup kolom berikut:explanation: pesan errorcheckSetName: nilaidisplayNameuntuk kumpulan pemeriksaancheckSetIndex: indeks kumpulan pemeriksaan dalam kebijakancheckName: nama pemeriksaancheckIndex: indeks pemeriksaan dalam kumpulan pemeriksaanverdict: hasil yang menghasilkan entri log, dalam hal iniNOT_CONFORMANTkarena pemeriksaan tidak terpenuhi.
Beberapa pemeriksaan dapat menyertakan informasi tambahan yang dapat membantu Anda memahami alasan pemeriksaan tidak terpenuhi.
Karena image memenuhi pemeriksaan kesegaran, pemeriksaan kesegaran tidak muncul dalam log.
Pembersihan
Agar akun Anda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, hapus project yang berisi resource tersebut. Google Cloud Google Cloud
Bagian ini menjelaskan cara membersihkan pemantauan CV yang Anda konfigurasi 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: 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 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: ID project kebijakan