Mengonfigurasi kebijakan perlindungan artefak

Dokumen ini menjelaskan cara membuat dan mengelola kebijakan perlindungan artefak. Untuk ringkasan layanan, lihat Ringkasan Artifact Guard.

Sebelum memulai

Sebelum dapat membuat kebijakan perlindungan artefak, Anda harus mengaktifkan perlindungan artefak di Security Command Center dan mendapatkan peran Identity and Access Management (IAM) yang diperlukan.

Selain itu, pahami batas penjaga artefak.

Jika Anda berencana menggunakan gcloud CLI untuk mengelola kebijakan atau konektor CI/CD, tinjau prasyarat gcloud 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 gcloud CLI berikut:

project

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/artifactscanguard.policyEvaluator"

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • SERVICE_ACCOUNT_EMAIL: alamat email akun layanan Anda.

organisasi

  gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/artifactscanguard.policyEvaluator"

Ganti kode berikut:

  • ORGANIZATION_ID: ID organisasi Anda.
  • SERVICE_ACCOUNT_EMAIL: alamat email akun layanan Anda.

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.

Prasyarat gcloud CLI

Untuk mengelola kebijakan atau konektor CI/CD menggunakan gcloud CLI, pastikan lingkungan Anda memenuhi persyaratan berikut:

  • Versi gcloud CLI Anda adalah 559.0.0 atau yang lebih baru.
  • Project Anda ditetapkan sebagai project konfigurasi.

Untuk mengupdate gcloud CLI dan menyetel project Anda, jalankan perintah berikut:

gcloud components update --version=559.0.0
gcloud config set project PROJECT_ID

Ganti PROJECT_ID dengan project ID Anda.

Buat kebijakan

Konsol

Untuk membuat kebijakan perlindungan artefak di konsol Google Cloud , ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka Security > Rules, lalu klik Create artifact guard policy atau Create policy.
  2. Masukkan ID kebijakan dan deskripsi untuk kebijakan tersebut, lalu klik Lanjutkan.
  3. Pilih cakupan dan tindakan kebijakan:
    • Platform CI/CD
      • Pilih konektor: Pilih konektor yang akan dikaitkan dengan kebijakan ini. Pemindai mengevaluasi kebijakan ini untuk setiap build CI/CD yang terkait dengan konektor yang dipilih.
      • Tindakan kebijakan: Pilih tindakan yang akan diambil jika kebijakan dilanggar.
        • Blokir build yang gagal memenuhi kebijakan: Jika kebijakan gagal, build akan diblokir.
        • Luluskan build dengan pemberitahuan: Pipeline build yang terhubung menampilkan hasil evaluasi kebijakan pemindai CI/CD.
    • Registry
      • Container Analysis: Setelan ini hanya berlaku untuk organisasi, bukan project. Tambahkan Google Cloud project tempat Anda ingin menerapkan kebijakan ini.
      • Repositori Artifact Registry: Pilih repositori tempat Anda ingin menerapkan kebijakan ini. Repositori ini harus berupa repositori Artifact Registry yang valid. Jika dibiarkan kosong, artifact guard akan menerapkan kebijakan ke semua repositori.
      • Tindakan Kebijakan: Pilih tindakan yang akan diambil jika kebijakan dilanggar.
        • Hanya audit: Artifact Guard mengevaluasi kebijakan dan mencatat setiap pelanggaran untuk tujuan audit tanpa memblokir resource.
        • Kontrol akses: Jika terjadi pelanggaran selama evaluasi kebijakan, kontrol akses akan memblokir deployment resource.
          • Menetapkan kebijakan Otorisasi Biner ke mode uji coba: Untuk mengetahui informasi selengkapnya tentang mode uji coba, lihat Mengaktifkan mode uji coba.
          • Project Otorisasi Biner: Setelan ini hanya berlaku untuk organisasi, bukan project. Tambahkan project Google Cloud tempat Anda ingin menerapkan kontrol penerimaan.
          • Cluster GKE: Jika dibiarkan kosong, kontrol penerimaan berlaku untuk semua cluster GKE.
          • Ganti kebijakan Otorisasi Biner: Centang kotak ini untuk memperbarui kebijakan Otorisasi Biner untuk kontrol akses.
    • Runtime
      • Project runtime: Setelan ini hanya berlaku untuk organisasi, bukan project. Tambahkan project runtime yang berisi cluster GKE.
      • Cluster GKE: Pilih cluster GKE tempat Anda ingin menerapkan kebijakan ini. Jika dibiarkan kosong, penjaga artefak akan menerapkan kebijakan ke semua cluster GKE di project yang dipilih.
  4. Tentukan aturan kebijakan. Aturan kebijakan adalah serangkaian kriteria yang menentukan kerentanan dan paket mana yang diizinkan di lingkungan Anda. Aturan kebijakan mencakup hal berikut:
    • Ambang batas keparahan: Tetapkan tingkat keparahan minimum agar kerentanan disertakan dalam evaluasi kebijakan. Kerentanan harus memenuhi atau melampaui nilai minimum ini agar dapat disertakan.

      Misalnya, mengonfigurasi aturan ke Sedang 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 ini hanya dilanggar 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 dan diberi peringkat Tinggi atau Kritis.

    • Status kerentanan: Tentukan apakah hanya menyertakan kerentanan yang tersedia perbaikannya. Hal ini memungkinkan perbaikan yang diprioritaskan dengan menargetkan semua kerentanan atau hanya kerentanan 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 durasi 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.
  5. Klik Create.

Kebijakan perlindungan artefak yang tersedia tercantum dalam tabel di halaman Rules.

gcloud CLI

Untuk membuat kebijakan menggunakan gcloud CLI, jalankan perintah berikut:

gcloud alpha scc artifact-guard policies create \
    (POLICY_ID --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \
    --policy-file-path=PATH_TO_FILE

Ganti kode berikut:

  • POLICY_ID: ID untuk kebijakan (misalnya, my-policy).
  • LOCATION: Lokasi Security Command Center tempat data Anda disimpan. Hanya global yang didukung.
  • ORGANIZATION_ID: ID organisasi.
  • PROJECT_NUMBER: Nomor project numerik.
  • 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.

Memperbarui kebijakan

Konsol

Untuk memperbarui kebijakan perlindungan artefak di konsol Google Cloud , ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka Security > Rules.
  2. Di tabel aturan, klik nama kebijakan yang ingin Anda edit.
  3. Di halaman detail kebijakan, klik Edit atau ubah kolom yang ingin Anda perbarui, seperti cakupan, aturan kerentanan, atau status pengaktifan.
  4. Klik Simpan atau Perbarui.

gcloud CLI

Untuk melihat kebijakan yang ada dan memperbaruinya menggunakan gcloud CLI, gunakan perintah berikut:

Mencantumkan kebijakan

gcloud alpha scc artifact-guard policies list PARENT

Ganti kode berikut:

PARENT: Organisasi atau project. Format yang dapat diterima untuk resource induk meliputi:
  • organizations/ORGANIZATION_ID/locations/LOCATION
  • projects/PROJECT_NUMBER/locations/LOCATION

Menjelaskan kebijakan

gcloud alpha scc artifact-guard policies describe \
    (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER))

Ganti kode berikut:

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)

Memperbarui kebijakan

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]

--allow_missing adalah tanda opsional. Jika tanda ini disertakan, kebijakan baru akan dibuat jika kebijakan yang ditentukan tidak ada.

Ganti kode berikut:

UPDATE-MASK: Daftar kolom yang dipisahkan koma untuk diupdate. String kosong atau * berarti update kebijakan penuh. Kolom yang valid untuk mask update mencakup:
  • display_name
  • description
  • scope
  • enablement_state
  • vulnerability_policy
  • annotations

Validasi kebijakan

Artifact Guard memvalidasi definisi kebijakan saat Anda membuat atau memperbarui kebijakan. Jika validasi gagal, penjaga artefak akan menolak permintaan dan memberikan pesan error mendetail.

Menghapus kebijakan

Konsol

Untuk menghapus kebijakan penjaga artefak di konsol Google Cloud , ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka Security > Rules.
  2. Di tabel aturan, klik di samping kebijakan yang ingin Anda hapus, lalu pilih Hapus.
  3. Ikuti perintah konfirmasi untuk menghapus kebijakan. Klik Batalkan untuk membatalkan.

gcloud CLI

Untuk menghapus kebijakan menggunakan gcloud CLI, jalankan perintah berikut:

gcloud alpha scc artifact-guard policies delete \
    (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \
    [--etag=ETAG]

Ganti kode berikut:

ETAG: Tag entity opsional yang digunakan untuk kontrol konkurensi. Jika Anda memberikan nilai, permintaan hanya akan dilanjutkan jika etag resource cocok.

File YAML

Saat Anda menggunakan gcloud CLI untuk membuat atau mengelola kebijakan perlindungan artefak, file YAML 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

Pemecahan masalah

Bagian ini menguraikan kolom kebijakan penjaga artefak dan kesalahan umum beserta solusinya.

Kolom kebijakan umum

Nama Deskripsi Wajib Batasan Nilai Contoh
Induk Menentukan cakupan penerapan kebijakan. Ya Hanya kebijakan di lokasi global yang didukung.
  • organizations/123/locations/global
  • projects/123/locations/global
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 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 Jika ditetapkan, harus berupa bilangan non-negatif. 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-12345
gracePeriodExpirationTime: 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: nginx
version: 1.0
- name: python
version: 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: npm
version: 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.
  • organizations/123/locations/global/connectors/connector-1
  • projects/123/locations/global/connectors/connector-1
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 Maksimum 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 Maksimum 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 berjalan di lingkungan GKE Anda. Saat Anda menerapkan kebijakan ke cakupan ini, temuan kerentanan Security Command Center akan menyertakan 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 tingkat 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:

```none // Ditambahkan ke 'message Finding' SCC 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

Jika Anda menerima error FAILED_PRECONDITION, berarti Anda mencoba menghapus kebijakan yang aktif. Untuk menghapus kebijakan, Anda harus mengubah statusnya menjadi Inactive terlebih dahulu.

Error yang biasa terjadi

Tabel berikut menguraikan beberapa error umum dan cara mengatasinya.

Petunjuk Pesan Error Penyebab Resolusi
orang tua wajib diisi Kolom orang tua tidak ada dalam permintaan. Berikan induk yang valid dalam salah satu format berikut:
  • organizations/{org_id}/locations/global
  • parents/{project_number}/locations/global
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 ID CVE 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.
package ... cannot be allowed and restricted 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:
  • organizations/{org_id}/locations/global/connectors/{connector_id}
  • projects/{project_number}/locations/{location}/connectors/{connector_id}
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 Google Cloud yang valid.
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. Contohnya meliputi, 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 yang 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 melampaui 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 hilangkan 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 Google Cloud Dasbor Status untuk mengetahui apakah ada insiden yang sedang berlangsung atau hubungi Google Cloud Dukungan.