Mengonfigurasi kebijakan perlindungan artefak

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_ID
  • YOUR_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_ID
  • YOUR_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:

  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, lalu klik Lanjutkan.

  3. 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 ListArtifactPoliciesEvaluations dan GetArtifactPoliciesEvaluation.
        • 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.
    • 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.
  4. 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.
  5. 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_name
    • description
    • scope
    • enablement_state
    • vulnerability_policy
    • annotations

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.
  • 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 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-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 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:
  • 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 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:
  • 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 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