Dokumen ini menjelaskan cara membuat dan mengelola kebijakan perlindungan artefak. Untuk ringkasan layanan, fitur, dan manfaat, lihat Ringkasan perlindungan artefak.
Sebelum memulai
Sebelum dapat membuat kebijakan perlindungan artefak, Anda harus mengaktifkan perlindungan artefak di Security Command Center dan mendapatkan peran serta izin Identity and Access Management (IAM) yang diperlukan.
Kemudian, Anda dapat membuat kebijakan di konsol Google Cloud atau menggunakan Google Cloud CLI.
Mengaktifkan penjaga artefak
Ikuti langkah-langkah di Mengonfigurasi layanan Security Command Center untuk mengaktifkan perlindungan artefak.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk menggunakan artifact guard, minta administrator Anda untuk memberi Anda peran Identity and Access Management (IAM) berikut di project atau organisasi Anda:
- Admin Evaluasi Penjaga Pemindaian Artefak (
roles/artifactscanguard.policyEvaluator)
Peran ini dapat diberikan menggunakan konsol Google Cloud atau dengan menjalankan perintah Google Cloud CLI berikut:
project
gcloud organizations add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:YOUR_SERVICE_ACCOUNT_EMAIL" \
--role="roles/artifactscanguard.policyEvaluator" \
Ganti kode berikut:
PROJECT_IDYOUR_SERVICE_ACCOUNT_EMAIL
organisasi
gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
--member="serviceAccount:YOUR_SERVICE_ACCOUNT_EMAIL" \
--role="roles/artifactscanguard.policyEvaluator" \
Ganti kode berikut:
ORGANIZATION_IDYOUR_SERVICE_ACCOUNT_EMAIL
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Untuk mengetahui peran artifact guard lainnya, lihat Peran dan izin artifact guard.
Membuat kebijakan di konsol Google Cloud
Untuk membuat kebijakan perlindungan artefak di konsol Google Cloud , ikuti langkah-langkah berikut:
Di konsol Google Cloud , buka Security > Rules, lalu klik Create artifact guard policy atau Create policy.
Masukkan ID Kebijakan dan Deskripsi untuk kebijakan, lalu klik Lanjutkan.
Pilih cakupan dan tindakan kebijakan:
Platform CI/CD
- Pilih konektor: Konektor yang harus dikaitkan dengan kebijakan ini. Kebijakan ini akan dievaluasi untuk setiap build CI/CD yang terkait dengan konektor yang dipilih.
- Tindakan kebijakan: Pilih tindakan yang akan diambil jika kebijakan dilanggar.
- Memblokir build yang gagal memenuhi kebijakan
- Luluskan build dengan pemberitahuan: Hasil evaluasi kebijakan pemindai CI/CD ditampilkan di pipeline build yang terhubung.
Registry
- Project Analisis Container: Opsi ini hanya berlaku untuk organisasi, bukan project. Tambahkan project Google Cloud yang ingin Anda terapkan kebijakan ini.
- Repositori Artifact Registry: Pilih repositori yang ingin Anda terapkan kebijakan ini. Ini harus berupa repositori Artifact Registry yang valid. Jika dibiarkan kosong, kebijakan akan diterapkan ke semua repositori.
- Tindakan Kebijakan: Pilih tindakan yang akan diambil jika kebijakan dilanggar.
- Hanya audit: Kebijakan dievaluasi dan setiap pelanggaran dicatat untuk tujuan audit tanpa memblokir resource. Untuk melihat pelanggaran, Anda harus memanggil API menggunakan
ListArtifactPoliciesEvaluationsdanGetArtifactPoliciesEvaluation. - Kontrol penerimaan: Jika terjadi pelanggaran saat kebijakan
dievaluasi, resource akan diblokir agar tidak dapat dilanjutkan.
- Menetapkan kebijakan Otorisasi Biner ke mode uji coba: Lihat Mengaktifkan mode uji coba untuk mengetahui informasi selengkapnya.
- Project Otorisasi Biner: Opsi ini hanya berlaku untuk organisasi, bukan project. Tambahkan project Google Cloud yang ingin Anda terapkan kontrol masuknya.
- Cluster GKE: Jika dibiarkan kosong, kontrol penerimaan diterapkan ke semua cluster GKE.
- Ganti kebijakan Otorisasi Biner: Kotak centang ini harus dicentang untuk memperbarui kebijakan Otorisasi Biner untuk kontrol penerimaan.
- Hanya audit: Kebijakan dievaluasi dan setiap pelanggaran dicatat untuk tujuan audit tanpa memblokir resource. Untuk melihat pelanggaran, Anda harus memanggil API menggunakan
Runtime
- Project runtime: Opsi ini hanya berlaku untuk organisasi, bukan project. Tambahkan project runtime yang berisi cluster GKE.
- Cluster GKE: Pilih cluster GKE yang ingin Anda terapkan kebijakan ini. Jika dibiarkan kosong, kebijakan akan diterapkan ke semua cluster GKE dalam project yang dipilih.
Tentukan aturan kebijakan. Aturan kebijakan adalah sekumpulan kriteria yang menentukan kerentanan dan paket mana yang diizinkan di lingkungan Anda. Aturan kebijakan mencakup hal berikut:
Ambang batas tingkat keparahan: Tetapkan tingkat keparahan minimum untuk kerentanan yang akan disertakan dalam evaluasi kebijakan. Kerentanan harus memenuhi atau melampaui nilai minimum ini agar dapat disertakan.
Misalnya, mengonfigurasi aturan ke Sedang akan mencakup semua kerentanan Sedang, Tinggi, dan Kritis dalam penilaian.
Nilai minimum jumlah kerentanan: Menetapkan jumlah maksimum kerentanan yang diizinkan setelah filter kebijakan lainnya diterapkan. Kebijakan dilanggar hanya jika jumlah kerentanan spesifik yang difilter ini melebihi batas.
Misalnya, jika Anda menetapkan nilai minimum Keparahan Tinggi, mengecualikan kerentanan dengan perbaikan yang tidak tersedia, dan menetapkan nilai minimum jumlah lima, build akan gagal jika berisi lebih dari lima kerentanan yang dapat diperbaiki yang diberi peringkat Tinggi atau Kritis.
Status kerentanan: Tentukan apakah hanya menyertakan kerentanan yang perbaikannya tersedia. Hal ini memungkinkan perbaikan yang diprioritaskan dengan menargetkan semua kerentanan atau hanya yang dapat diperbaiki.
Pengecualian dan Pembatasan: Bagian ini memungkinkan Anda membuat izin atau pemblokiran tertentu yang menggantikan kebijakan umum.
- CVE yang dikecualikan: Tentukan CVE yang dianggap dapat diterima di lingkungan Anda selama jangka waktu tertentu. Hal ini berguna untuk menerapkan solusi sementara. Anda dapat menetapkan tanggal habis masa berlaku untuk pengecualian ini. Setelah tanggal ini, kerentanan tidak lagi diizinkan dan menyebabkan kebijakan gagal.
- CVE yang dibatasi: Tentukan CVE yang akan selalu diblokir, terlepas dari rating tingkat keparahannya. Hal ini sangat berguna untuk menunjukkan kerentanan yang menimbulkan risiko unik pada aplikasi atau infrastruktur tertentu Anda.
- Paket yang diizinkan: Mencantumkan paket yang dianggap aman. Versi paket dapat ditentukan; jika tidak, semua versi diizinkan.
- Paket yang dibatasi: Mencantumkan paket yang akan dibatasi. Paket yang dibatasi menyebabkan kebijakan gagal. Versi paket dapat ditentukan; jika tidak, semua versi dibatasi.
Klik Create.
Kebijakan perlindungan artefak yang tersedia tercantum dalam tabel di halaman Rules.
Membuat kebijakan menggunakan Google Cloud CLI
Bagian ini menguraikan perintah gcloud CLI yang tersedia untuk perlindungan artefak dan cara menggunakannya.
Prasyarat Google Cloud CLI
- Pastikan gcloud CLI Anda versi 559.0.0 atau yang lebih baru.
- Tetapkan project Anda sebagai project konfigurasi.
Untuk melakukannya, jalankan perintah gcloud CLI berikut:
gcloud components update --version=559.0.0
gcloud config set project PROJECT_ID
Perintah Google Cloud CLI
buat
gcloud alpha scc artifact-guard policies create \ (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \ --policy-file-path=PATH_TO_FILE
- POLICY: ID lengkap untuk kebijakan, dalam salah satu
format berikut:
{organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID}{projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID}{policy_id -location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)}
- PATH_TO_FILE: Jalur lokal ke dokumen YAML yang berisi definisi kebijakan. Lihat bagian file YAML dalam dokumen ini untuk mengetahui detail tentang struktur file YAML.
get
gcloud alpha scc artifact-guard policies describe \ (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER))
- POLICY: ID lengkap untuk kebijakan, dalam salah satu
format berikut:
{organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID}{projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID}{policy_id -location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)}
list
gcloud alpha scc artifact-guard policies list PARENT
- PARENT: Organisasi atau project. Format
yang dapat diterima untuk resource induk meliputi:
{organizations/ORGANIZATION_ID/locations/LOCATION}{projects/PROJECT_NUMBER/locations/LOCATION}
delete
gcloud alpha scc artifact-guard policies delete \ (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \ [--etag=ETAG]
- POLICY: ID lengkap untuk kebijakan, dalam salah satu
format berikut:
{organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID}{projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID}{policy_id -location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)}
- etag: Opsional. Untuk kontrol konkurensi. Permintaan hanya dilanjutkan jika etag resource cocok.
update
gcloud alpha scc artifact-guard policies update \ (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \ --policy-file-path=PATH_TO_FILE [--allow-missing] \ [--update-mask=UPDATE_MASK]
- POLICY: ID lengkap untuk kebijakan, dalam salah satu
format berikut:
{organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_ID}{projects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_ID}{policy_id -location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)}
- PATH_TO_FILE: Jalur lokal ke dokumen YAML yang berisi definisi kolom yang akan diperbarui.
- allow_missing: Boolean opsional. Jika
true, membuat kebijakan baru jika kebijakan yang ditentukan tidak ada. - update-mask: Daftar kolom yang dipisahkan koma yang akan diperbarui. String kosong atau "*" berarti update kebijakan penuh. Kolom yang valid
untuk mask pembaruan mencakup:
display_namedescriptionscopeenablement_statevulnerability_policyannotations
File YAML
File YAML untuk definisi kebijakan perlindungan artefak harus mengikuti template ini:
displayName: <Human readable display name for the policy>
description: <Description of the policy>
vulnerabilityPolicy: # (at least one of these rules must be defined)
exemptedCves:
- id: <cve-id-1>
gracePeriodExpirationTime: <optional-grace-period-expiration-time>
- id: <cve-id-2>
gracePeriodExpirationTime: <optional-grace-period-expiration-time>
maxAllowedSeverity: <The maximum severity allowed in the detected
vulnerabilities. The severity values can be LOW, MEDIUM, HIGH, CRITICAL>
maximumAllowedVulnerabilities: <The maximum number of vulnerabilities that
can be detected>
excludeUnfixable: <Whether to exclude the vulnerabilities without an
available fix from the purview of the policy evaluation>
restrictedCves:
- <restricted-cve-id-1>
- <restricted-cve-id-2>
allowedPackages:
- name: <allowed_package_name_1>
version: <optional_version_of_allowed_package_1. If unspecified, all the
versions of the package are allowed>
- name: <allowed_package_name_2>
version: <optional_version_of_allowed_package_2>
restrictedPackages:
- name: <restricted_package_name_1>
version: <optional_version_of_restricted_package_1. If unspecified, all
the versions of the package are restricted>
- name: <restricted_package_name_2>
version: <optional_version_of_restricted_package_2>
scope:
pipeline:
connectorIds:
- <connector_id_1>
- <connector_id_2>
enforcementAction: <action to take in case the policy evaluation fails.
The supported values are AUDIT_ONLY or BLOCK_BUILD>
registry:
projectIds:
- <project_id_1>
garRepositoryNamePatterns:
- <repository_name_pattern_1>
imageNamePatterns:
- <image_name_pattern_1>
enforcementAction: <AUDIT_ONLY or ADMISSION_CONTROL>
admissionControl:
deploymentProjectIds:
- <project_id_1>
gkeClusterNames:
- <cluster_name_1>
dryRun: <bool>
overrideBinauthzPolicy: <bool>
runtime:
deploymentProjectIds:
- <project_id_1>
gkeClusterNames:
- <cluster_name_1>
dryRun: <bool>
overrideBinauthzPolicy: <bool>
enforcementAction: <AUDIT_ONLY or BLOCK_DEPLOYMENT>
enablementState: <The enablement state of the policy. The supported values are
ACTIVE, INACTIVE>
Berikut adalah contoh file kebijakan penjaga artefak:
displayName: 'A sample policy'
description: Vulnerability Policy
vulnerabilityPolicy:
exemptedCves:
- id: CVE-2022-40897
gracePeriodExpirationTime: '2026-09-10T18:58:08Z'
- id: CVE-2024-6345
maxAllowedSeverity: MEDIUM
maximumAllowedVulnerabilities: 5
excludeUnfixable: true
restrictedCves:
- CVE-2013-4392
- CVE-2024-4143
allowedPackages:
- name: systemd
version: '257.7'
- name: util-linux
restrictedPackages:
- name: ncurses
version: 6.5+20250216
- name: setuptools
scope:
pipeline:
connectorIds:
- organizations/123/locations/global/connectors/demoConnector
enforcementAction: BLOCK_BUILD
registry:
projectIds:
- projects/my-registry-project-id
- projects/another-registry-project
garRepositoryNamePatterns:
- us-west1-docker.pkg.dev/my-registry-project-id/my-repo
- gcr.io/team-a/internal-artifacts
imageNamePatterns:
- my-repo/service-a:.*
- my-repo/service-b:v1\..*
enforcementAction: ADMISSION_CONTROL
admissionControl:
deploymentProjectIds:
- projects/my-deployment-project
gkeClusterNames:
- //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-a
- //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-b
dryRun: true
overrideBinauthzPolicy: true
runtime:
deploymentProjectIds:
- projects/my-deployment-project
gkeClusterNames:
- //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-a
- //container.googleapis.com/projects/my-deployment-project/locations/us-central1/clusters/gke-cluster-b
dryRun: false
overrideBinauthzPolicy: false
enforcementAction: BLOCK_DEPLOYMENT
enablementState: ACTIVE
Performa dan batasan
- Kebijakan maksimum per resource induk: Resource induk (organisasi atau project) dapat menentukan maksimum 1.000 kebijakan. Hal ini mencakup semua jenis kebijakan keamanan yang dikonfigurasi dalam perlindungan artefak.
- Kebijakan kerentanan maksimum per resource induk: Dalam batas kebijakan keseluruhan, ada batas jumlah kebijakan yang berfokus pada temuan kerentanan. Resource induk (organisasi atau project) dapat memiliki maksimum 500 kebijakan yang menargetkan kerentanan.
- Kebijakan maksimum per pipeline: Untuk setiap pipeline CI/CD individual tempat kebijakan perlindungan artefak diintegrasikan untuk penerapan waktu build, maksimum 100 kebijakan diizinkan.
- Update maksimum per kebijakan per minggu: Untuk setiap kebijakan, maksimum 100 update dapat dilakukan setiap minggu.
- Konektor pipeline maksimum per kebijakan: Setiap kebijakan dapat memiliki maksimum 100 konektor pipeline yang terkait dengannya.
- CVE yang Dikecualikan dan Dibatasi Maksimum per kebijakan: Setiap kebijakan dapat mengecualikan dan membatasi maksimum 100 CVE.
- Paket yang Diizinkan dan Dibatasi maksimum per kebijakan: Setiap kebijakan dapat mengizinkan dan membatasi maksimum 100 paket.
Untuk batasan tambahan, lihat Pemecahan masalah.
Pemecahan masalah
Bagian ini menguraikan kolom kebijakan penjaga artefak dan kesalahan umum beserta solusinya.
Validasi kebijakan
Artifact Guard memvalidasi definisi kebijakan saat Anda membuat atau memperbarui kebijakan. Jika validasi gagal, perlindungan artefak akan menolak permintaan dan memberikan pesan error mendetail.
Kolom kebijakan umum
| Nama | Deskripsi | Wajib | Batasan | Nilai Contoh |
|---|---|---|---|---|
| Induk | Menentukan cakupan penerapan kebijakan. | Ya | Hanya kebijakan di lokasi global yang didukung. |
|
| ID Kebijakan | ID unik untuk kebijakan. | Ya | Maksimal 100 karakter. Harus diawali dengan huruf, diakhiri dengan karakter alfanumerik, dan hanya berisi huruf, angka, tanda hubung, atau garis bawah. | my-policy-1 |
| Display Name | Nama kebijakan yang dapat dibaca manusia. | Tidak | Maksimal 63 karakter. Sebaiknya dibuat unik. | My vulnerability policy |
| Deskripsi | Deskripsi kebijakan. | Tidak | Maksimal 2048 karakter. | Checks for critical vulnerabilities. |
| Jenis Kebijakan | Jenis kebijakan yang ditentukan. | Ya | Hanya vulnerability_policy yang didukung. |
vulnerability_policy |
| Status Pengaktifan | Status pengaktifan kebijakan. | Ya | Harus berupa ACTIVE atau INACTIVE. |
ACTIVE |
Kebijakan Kerentanan
| Nama | Deskripsi | Bernilai ganda | Batasan | Nilai Contoh |
|---|---|---|---|---|
| maximumAllowedVulnerabilities | Jumlah maksimum kerentanan yang diizinkan sebelum kebijakan dilanggar. | Tidak | Harus berupa bilangan non-negatif jika ditetapkan. | 10 |
| maxAllowedSeverity | Tingkat keparahan maksimum kerentanan yang diizinkan oleh kebijakan. | Tidak | Harus berupa LOW, MEDIUM, HIGH
atau CRITICAL. |
|
| exemptedCves | Daftar CVE yang dikecualikan dari kebijakan ini. | Ya | Maksimal 100 entri. Setiap ID harus dalam format CVE-YYYY-NNNN.
Masa tenggang berakhir, jika diberikan, harus berupa stempel waktu yang valid. Tidak dapat
tumpang-tindih dengan restrictedCves. |
- id: CVE-2024-12345gracePeriodExpirationTime: 2027-01-01T00:00:00Z- id: CVE-2025-4000 |
| restrictedCves | Daftar CVE yang secara eksplisit tidak diizinkan oleh kebijakan ini. | Ya | Maksimal 100 entri. Setiap ID harus dalam format CVE-YYYY-NNNN.
Tidak dapat tumpang-tindih dengan exemptedCves. |
- CVE-2024-54321- CVE-2025-5001 |
| allowedPackages | Daftar paket yang diizinkan, yang berpotensi menggantikan aturan lain. | Ya | Maksimal 100 entri. Nama paket tidak boleh kosong. Tidak dapat berkonflik dengan
restrictedPackages. |
- name: nginxversion: 1.0- name: pythonversion: 3.12.4 |
| restrictedPackages | Daftar paket yang secara eksplisit tidak diizinkan. | Ya | Maksimal 100 entri. Nama paket tidak boleh kosong. Tidak dapat berkonflik dengan
allowedPackages. |
- name: npmversion: 9.0.0 |
| excludeUnfixable | Apakah akan mengecualikan kerentanan yang tidak memiliki perbaikan yang tersedia. | Tidak | Boolean. Default-nya adalah false. |
true |
| exemptionDaysPostDisclosure | Jumlah hari untuk mengecualikan kerentanan setelah tanggal pengungkapannya. | Tidak | Jika ditetapkan, harus berupa bilangan non-negatif. Default-nya adalah 0. |
30 |
Cakupan kebijakan
Cakupan pipeline
| Nama | Deskripsi | Wajib | Batasan | Nilai Contoh |
|---|---|---|---|---|
| connectorIds | Daftar ID Konektor yang diterapkan kebijakan selama pemindaian pipeline CI/CD. | Ya | Minimum 1 entri, maksimum 100 entri. Organisasi atau project Anda harus diaktifkan untuk pemindaian CI/CD. Setiap ID harus mengikuti format yang benar, dimiliki oleh organisasi atau project Anda, dan mengarah ke konektor yang ada. |
|
| enforcementAction | Tindakan yang harus diambil jika kebijakan dilanggar. | Ya | Harus berupa AUDIT_ONLY atau BLOCK_BUILD. |
BLOCK_BUILD |
Cakupan pendaftaran
| Nama | Deskripsi | Wajib | Batasan | Nilai Contoh |
|---|---|---|---|---|
| projectIds | Daftar project ID tempat kebijakan berlaku. | Tidak | Minimum 1 entri. Setiap ID harus berupa ID project Google Cloud yang valid. | projects/123, projects/456 |
| garRepositoryNamePatterns | Daftar pola nama repositori Google Cloud Artifact Registry. | Tidak | Maksimal 100 entri. Harus berupa pola repositori Google Cloud Artifact Registry yang valid. | us-west1-docker.pkg.dev/my-project/my-repo, gcr.io/team-a/* |
| imageNamePatterns | Pola ekspresi reguler untuk nama gambar yang sepenuhnya memenuhi syarat. | Tidak | Maksimal 100 entri. Harus berupa ekspresi reguler yang valid. | 'my-repo/service-a:.*', 'my-repo/service-b:v1..*' |
| enforcementAction | Tindakan yang harus diambil jika kebijakan dilanggar. | Ya | Harus berupa AUDIT_ONLY atau ADMISSION_CONTROL. |
ADMISSION_CONTROL |
| admissionControl | Detail konfigurasi untuk kontrol penerimaan. | Tidak | Harus ada jika enforcementAction adalah ADMISSION_CONTROL. |
Cakupan runtime
Cakupan runtime memungkinkan penjaga artefak memantau image container yang aktif berjalan dalam lingkungan GKE Anda. Jika kebijakan diterapkan ke cakupan ini, temuan kerentanan Security Command Center akan otomatis ditingkatkan dengan metadata kebijakan untuk image yang di-deploy di project atau cluster yang ditentukan.
| Nama | Deskripsi | Wajib | Batasan | Nilai Contoh |
|---|---|---|---|---|
| projectIds | Daftar project ID tempat cluster GKE di-deploy dan penilaian kerentanan diaktifkan. | Ya | Harus dipilih di tingkat organisasi. | projects/my-gke-deployment-123 |
| gkeClusterNames | Cluster GKE tertentu yang kebijakannya perlu dievaluasi. | Tidak | Dapat dipilih di level organisasi atau project. | projects/prod-env/locations/us-central1/clusters/main-cluster |
Jika image container yang berjalan di cluster GKE yang dipantau melanggar kebijakan, metadata ArtifactGuardPolicies akan ditambahkan ke pesan temuan kerentanan Security Command Center, sebagai berikut:
// Added to the SCC 'message Finding'
ArtifactGuardPolicies artifact_guard_policies = X;
message ArtifactGuardPolicies {
string resource_id = 1; // e.g., //us-docker.pkg.dev/google-samples/containers/gke/security/...
repeated Policy failing_policies = 2;
}
message Policy {
enum Type {
TYPE_UNSPECIFIED = 0;
VULNERABILITY = 1;
}
Type type = 1;
string policy_id = 2; // e.g., organizations/3392779/locations/global/policies/prod-policy
string failure_reason = 3; // e.g., severity=HIGH AND max_vuln_count=2
}
Tindakan penegakan kebijakan
Untuk tindakan BLOCK_BUILD dan BLOCK_DEPLOYMENT, evaluasi kebijakan akan menampilkan
tindakan penegakan kebijakan yang direkomendasikan. Namun, Anda harus mengonfigurasi penerapan
sebenarnya dalam konfigurasi pipeline menggunakan rekomendasi ini.
Penghapusan kebijakan
Kebijakan aktif tidak dapat dihapus dan akan menghasilkan error FAILED_PRECONDITION. Untuk menghapus kebijakan, tetapkan statusnya ke Inactive terlebih dahulu.
Error yang biasa terjadi
Tabel berikut menguraikan beberapa error umum dan cara menyelesaikannya.
| Petunjuk Pesan Error | Penyebab | Resolusi |
|---|---|---|
| parent is required (orang tua wajib diisi) | Kolom induk tidak ada dalam permintaan. | Berikan induk yang valid dalam salah satu format berikut:
|
| definisi kebijakan diperlukan | Objek kebijakan tidak ada dalam permintaan. | Berikan objek kebijakan yang valid dalam permintaan. |
| nama tampilan memiliki panjang maksimum... | Nama tampilan melebihi 63 karakter. | Perpendek nama tampilan menjadi 63 karakter atau kurang. |
| description memiliki panjang maksimum... | Deskripsi melebihi 2.048 karakter. | Persingkat deskripsi menjadi 2.048 karakter atau kurang. |
| jenis kebijakan wajib diisi | Jenis kebijakan (misalnya, vulnerabilityPolicy) tidak ada dalam permintaan. |
Tambahkan vulnerabilityPolicy atau jenis kebijakan lainnya ke kebijakan Anda. |
| status pengaktifan tidak valid | Status pengaktifan yang tidak valid atau tidak digunakan lagi telah digunakan. | Gunakan ACTIVE atau INACTIVE. |
| cakupan wajib diisi | Tidak ada cakupan (Pipeline, Registry, atau Runtime) yang ditentukan. | Tambahkan minimal satu cakupan yang valid ke kebijakan Anda. |
| Nama CVE harus dalam format... | ID CVE di exemptedCves atau restrictedCves tidak valid. |
Pastikan semua ID CVE mengikuti format CVE-YYYY-NNNN. |
| CVE ... tidak dapat dikecualikan dan dibatasi | CVE ID yang sama ada di exemptedCves dan restrictedCves. |
Hapus CVE dari salah satu daftar. |
| nama paket tidak boleh kosong | Paket di allowedPackages atau restrictedPackages
memiliki nama kosong. |
Berikan nama untuk semua paket. |
| paket ... tidak dapat diizinkan dan dibatasi | Paket yang sama tercantum di allowedPackages dan
restrictedPackages. |
Hapus paket dari salah satu daftar. |
| ID konektor wajib diisi | Kolom connectorIds tidak ada dalam cakupan Pipeline. |
Berikan setidaknya satu ID Konektor. |
| ID konektor harus dalam format... | Format ID Konektor salah. | Pastikan ID dalam salah satu format berikut:
|
| ID konektor ... tidak ada | ID konektor yang ditentukan tidak ada. | Pastikan konektor ada atau hapus dari daftar. |
| Pola nama repositori GAR harus... | Pola repositori yang tidak valid diberikan dalam cakupan Registry. | Pastikan pola cocok dengan format repositori Artifact Registry yang valid. Google Cloud |
| project ID harus berupa project ID GCP yang valid... | ID project tidak valid diberikan dalam cakupan Registry atau Runtime. | Berikan project ID Google Cloud yang valid. |
| tindakan penegakan harus ditentukan | enforcementAction tidak ada dalam cakupan Pipeline atau Runtime. |
Tetapkan tindakan penegakan (misalnya, AUDIT_ONLY,
BLOCK_BUILD (Khusus pipeline), atau BLOCK_DEPLOYMENT
(Khusus runtime)). |
| jumlah kebijakan per organisasi melebihi batas... | Anda telah mencapai jumlah maksimum kebijakan (1.000) untuk organisasi Anda. | Hapus kebijakan yang tidak digunakan sebelum membuat kebijakan baru. |
| jumlah kebijakan kerentanan ... melebihi batas... | Anda telah mencapai jumlah maksimum kebijakan kerentanan (500). | Hapus kebijakan kerentanan yang tidak digunakan sebelum membuat yang baru. |
| jumlah kebijakan per pipeline melebihi batas... | Konektor dikaitkan dengan lebih dari 100 kebijakan. | Kurangi jumlah kebijakan yang terkait dengan konektor. |
| jumlah revisi kebijakan ... melebihi batas... | Anda telah memperbarui kebijakan lebih dari 100 kali dalam 7 hari. | Tunggu atau kurangi frekuensi update. |
Masalah operasional umum
Selain kegagalan validasi konten kebijakan, masalah dapat muncul pada bidang kontrolGoogle Cloud yang mendasarinya. Masalah ini dapat memengaruhi permintaan API, operasi yang berjalan lama, dan status resource, biasanya muncul sebagai kode error tertentu atau perilaku yang tidak biasa.
| Masalah | Gejala | Cara Memecahkan Masalah |
|---|---|---|
| Modifikasi Serentak | UpdatePolicy atau DeletePolicy gagal dengan
kode error ABORTED dan pesan "Provided etag is out of date". |
Pemecahan masalah: Hal ini terjadi saat etag
dalam permintaan Anda tidak cocok dengan versi server kebijakan saat ini,
yang menunjukkan modifikasi oleh permintaan lain.Penyelesaian: Baca kembali kebijakan untuk mendapatkan etag terbaru, lalu coba lagi permintaan dengan etag baru. |
| Permintaan Divalidasi tetapi Tidak Dieksekusi | Permintaan CreatePolicy, UpdatePolicy, atau DeletePolicy
berhasil ditampilkan, tetapi Anda tidak melihat perubahan pada resource. |
Pemecahan masalah: Masalah ini biasanya terjadi saat validate_only: true
ditetapkan dalam permintaan. Flag ini menginstruksikan layanan untuk melakukan semua
validasi tanpa melakukan perubahan apa pun.Penyelesaian: Tetapkan validate_only ke
false atau hapus kolom dalam permintaan Anda. |
| Pembaruan Membuat Kebijakan Baru | Permintaan UpdatePolicy membuat kebijakan, bukan
menampilkan error "tidak ditemukan" jika kebijakan tidak ada. |
Pemecahan masalah: Ini adalah perilaku yang dimaksudkan saat
allow_missing: true disertakan dalam UpdatePolicyRequest.Penyelesaian: Jika Anda hanya ingin memperbarui kebijakan yang ada, tetapkan allow_missing ke false atau hapus
kolom. |
| Izin Ditolak atau API Tidak Diaktifkan | Permintaan gagal dengan PERMISSION_DENIED atau pesan error
seperti "Artifact Guard API has not been used in the project before or it is
disabled." |
Pemecahan masalah: API mungkin dinonaktifkan, atau pemanggil mungkin tidak memiliki izin yang memadai. Penyelesaian: Di project Google Cloud Anda, aktifkan Artifact Guard API ( artifactscanguard.googleapis.com).
Pastikan pengguna atau akun layanan yang melakukan operasi memiliki
peran IAM yang diperlukan. |
| Waktu Tunggu Operasi | Permintaan yang menampilkan operasi yang berjalan lama (LRO) memerlukan waktu terlalu lama
untuk diselesaikan atau gagal dengan DEADLINE_EXCEEDED. |
Pemecahan masalah: Hal ini dapat menunjukkan perlambatan atau masalah sementara di layanan backend. Penyelesaian: Polling status LRO. Jika gagal atau waktunya habis, coba lagi operasi setelah beberapa saat. Jika masalah berlanjut, periksa Dasbor Status untuk mengetahui apakah ada insiden yang sedang berlangsung atau hubungi Google Cloud Dukungan.Google Cloud |