Questo documento descrive come creare e gestire i criteri di protezione degli artefatti. Per una panoramica del servizio, consulta la panoramica di protezione artefatti.
Prima di iniziare
Prima di poter creare una policy di protezione degli artefatti, devi attivare la protezione degli artefatti in Security Command Center e ottenere il ruolo Identity and Access Management (IAM) richiesto.
Inoltre, acquisisci familiarità con i limiti di protezione artefatti.
Se prevedi di utilizzare gcloud CLI per gestire policy o connettori CI/CD, consulta i prerequisiti di gcloud CLI.
Abilita protezione artefatti
Segui i passaggi descritti in Configurare i servizi Security Command Center per attivare la protezione artefatti.
Ruolo richiesto
Per ottenere le autorizzazioni necessarie per utilizzare la protezione artefatti, chiedi all'amministratore di concederti il seguente ruolo IAM (Identity and Access Management) nel tuo progetto o nella tua organizzazione:
- Artifact Scan Guard Evaluation Admin (
roles/artifactscanguard.policyEvaluator)
Questo ruolo può essere concesso utilizzando la console Google Cloud o eseguendo il seguente comando gcloud CLI:
progetto
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role="roles/artifactscanguard.policyEvaluator"
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.SERVICE_ACCOUNT_EMAIL: l'indirizzo email del tuo account di servizio.
organizzazione
gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
--member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role="roles/artifactscanguard.policyEvaluator"
Sostituisci quanto segue:
ORGANIZATION_ID: l'ID organizzazione.SERVICE_ACCOUNT_EMAIL: l'indirizzo email del tuo account di servizio.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Per altri ruoli di protezione artefatti, consulta Ruoli e autorizzazioni di protezione artefatti.
Prerequisiti di gcloud CLI
Per gestire le policy o i connettori CI/CD utilizzando gcloud CLI, assicurati che il tuo ambiente soddisfi i seguenti requisiti:
- La versione di gcloud CLI è 559.0.0 o successive.
- Il tuo progetto è impostato come progetto di configurazione.
Per aggiornare gcloud CLI e impostare il tuo progetto, esegui questi comandi:
gcloud components update --version=559.0.0
gcloud config set project PROJECT_ID
Sostituisci PROJECT_ID con l'ID progetto.
Crea un criterio
Console
Per creare una policy di protezione artefatti nella console Google Cloud :
- Nella console Google Cloud , vai a Sicurezza > Regole e fai clic su Crea policy di protezione degli artefatti o Crea policy.
- Inserisci un ID norma e una descrizione per la norma, quindi fai clic su Continua.
- Seleziona ambiti e azioni delle policy:
- Piattaforma CI/CD
- Seleziona connettori: seleziona i connettori da associare a questa policy. Lo scanner valuta questa policy per ogni build CI/CD associata ai connettori selezionati.
- Azione relativa alle norme: seleziona l'azione da intraprendere quando
le norme vengono violate.
- Blocca le build che non rispettano la policy: se la policy non viene rispettata, la build viene bloccata.
- Accetta build con avvisi: le pipeline di build connesse mostrano i risultati della valutazione delle norme dello scanner CI/CD.
- Registro
- Container Analysis Projects: questa impostazione si applica solo alle organizzazioni, non ai progetti. Aggiungi i Google Cloud progetti in cui vuoi applicare questa policy.
- Repository Artifact Registry: seleziona i repository a cui vuoi applicare questa policy. Questi devono essere repository Artifact Registry validi. Se lasciato vuoto, protezione artefatti applica il criterio a tutti i repository.
- Azione relativa alle norme: seleziona l'azione da intraprendere quando
le norme vengono violate.
- Solo controllo: Protezione artefatti valuta la policy e registra eventuali violazioni a scopo di controllo senza bloccare la risorsa.
- Controllo dell'ammissione: se si verifica una violazione
durante la valutazione delle policy, il controllo dell'ammissione impedisce
il deployment della risorsa.
- Imposta le policy di Autorizzazione binaria in modalità dry run: per saperne di più sulla modalità dry run, consulta Attivare la modalità dry run.
- Progetti di autorizzazione binaria: questa impostazione si applica solo alle organizzazioni, non ai progetti. Aggiungi i Google Cloud progetti in cui vuoi applicare il controllo dell'ammissione.
- Cluster GKE: se lasciato vuoto, il controllo dell'ammissione si applica a tutti i cluster GKE.
- Esegui l'override delle policy di Autorizzazione binaria: seleziona questa casella di controllo per aggiornare la policy di Autorizzazione binaria per il controllo di ammissione.
- Runtime
- Progetti runtime: questa impostazione si applica solo alle organizzazioni, non ai progetti. Aggiungi progetti di runtime che contengono cluster GKE.
- Cluster GKE: seleziona i cluster GKE in cui vuoi applicare questa policy. Se viene lasciato vuoto, protezione artefatti applica il criterio a tutti i cluster GKE nei progetti selezionati.
- Piattaforma CI/CD
- Definisci la regola della policy. Una regola dei criteri è un insieme di criteri che
determina quali vulnerabilità e pacchetti sono consentiti nel tuo
ambiente. Una regola dei criteri include quanto segue:
- Soglia di gravità: imposta il livello di gravità minimo
affinché una vulnerabilità venga inclusa nella valutazione delle norme.
Le vulnerabilità devono soddisfare o superare questa soglia per essere incluse.
Ad esempio, se configuri la regola su Media, nell'analisi vengono incluse tutte le vulnerabilità Medie, Alte e Critiche.
- Soglia del conteggio delle vulnerabilità: imposta il numero massimo
di vulnerabilità consentite dopo l'applicazione di altri filtri dei criteri. La norma viene violata solo se il conteggio di queste vulnerabilità specifiche
filtrate supera il limite.
Ad esempio, se imposti una soglia di gravità Alta, escludi le vulnerabilità con correzioni non disponibili e imposti una soglia di conteggio di cinque, una build non riesce se contiene più di cinque vulnerabilità correggibili classificate come Alta o Critica.
- Stato della vulnerabilità: specifica se includere solo le vulnerabilità per le quali è disponibile una correzione. Ciò consente la correzione con priorità prendendo di mira tutte le vulnerabilità o solo quelle correggibili.
- Eccezioni e limitazioni: queste sezioni ti consentono di
creare permessi o blocchi specifici che sostituiscono le norme
generali.
- CVE esenti: specifica le CVE ritenute accettabili nel tuo ambiente per una durata specificata. Questa opzione è utile per implementare soluzioni temporanee. Puoi impostare una data di scadenza per queste eccezioni. Dopo questa data, la vulnerabilità non è più consentita e causa l'esito negativo della policy.
- CVE limitate: specifica le CVE da bloccare sempre, indipendentemente dalla loro classificazione di gravità. Ciò è particolarmente utile per indicare le vulnerabilità che presentano un rischio unico per la tua applicazione o infrastruttura specifica.
- Pacchetti consentiti: elenca i pacchetti considerati sicuri. È possibile definire la versione del pacchetto; in caso contrario, sono consentite tutte le versioni.
- Pacchetti limitati: elenca i pacchetti da limitare. I pacchetti limitati causano il mancato rispetto delle norme. È possibile definire la versione del pacchetto; in caso contrario, tutte le versioni sono limitate.
- Soglia di gravità: imposta il livello di gravità minimo
affinché una vulnerabilità venga inclusa nella valutazione delle norme.
Le vulnerabilità devono soddisfare o superare questa soglia per essere incluse.
- Fai clic su Crea.
Le policy di protezione artefatti disponibili sono elencate nella tabella nella pagina Regole.
gcloud CLI
Per creare una policy utilizzando gcloud CLI, esegui questo comando:
gcloud alpha scc artifact-guard policies create \ (POLICY_ID --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \ --policy-file-path=PATH_TO_FILE
Sostituisci quanto segue:
- POLICY_ID: Un identificatore per la policy (ad esempio,
my-policy). - LOCATION: la posizione di Security Command Center in cui sono archiviati i dati. È supportato solo
global. - ORGANIZATION_ID: l'ID organizzazione.
- PROJECT_NUMBER: il numero di progetto numerico.
- PATH_TO_FILE: il percorso locale del documento YAML contenente la definizione della policy. Per informazioni dettagliate sulla struttura del file YAML, consulta la sezione File YAML di questo documento.
Aggiornamento di un criterio
Console
Per aggiornare una policy di protezione artefatti nella console Google Cloud :
- Nella console Google Cloud , vai a Sicurezza > Regole.
- Nella tabella delle regole, fai clic sul nome della norma da modificare.
- Nella pagina dei dettagli della policy, fai clic su Modifica o modifica i campi che vuoi aggiornare, ad esempio ambito, regole di vulnerabilità o stato di attivazione.
- Fai clic su Salva o Aggiorna.
gcloud CLI
Per visualizzare le policy esistenti e aggiornarle utilizzando gcloud CLI, utilizza i seguenti comandi:
Elenca le policy
gcloud alpha scc artifact-guard policies list PARENT
Sostituisci quanto segue:
PARENT: Un'organizzazione o un progetto. I formati accettabili per la risorsa padre includono:organizations/ORGANIZATION_ID/locations/LOCATIONprojects/PROJECT_NUMBER/locations/LOCATION
Descrivere una policy
gcloud alpha scc artifact-guard policies describe \ (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER))
Sostituisci quanto segue:
POLICY: l'identificatore completo della policy, in uno dei seguenti formati:organizations/ORGANIZATION_ID/locations/LOCATION/policies/POLICY_IDprojects/PROJECT_NUMBER/locations/LOCATION/policies/POLICY_IDPOLICY_ID --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)
Aggiornamento di un criterio
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 è un flag facoltativo. Quando questo flag è
incluso, viene creata una nuova policy se quella specificata non esiste.
Sostituisci quanto segue:
UPDATE-MASK: un elenco separato da virgole dei campi da aggiornare. Una stringa vuota o* indica un aggiornamento completo delle norme. I campi validi per la maschera di aggiornamento
includono i seguenti:
display_namedescriptionscopeenablement_statevulnerability_policyannotations
Convalida delle norme
Artifact Guard convalida le definizioni delle policy quando crei o aggiorni le policy. Se la convalida non va a buon fine, la protezione artefatti rifiuta la richiesta e fornisce un messaggio di errore dettagliato.
Eliminare una policy
Console
Per eliminare una policy di protezione artefatti nella console Google Cloud :
- Nella console Google Cloud , vai a Sicurezza > Regole.
- Nella tabella delle regole, fai clic su accanto alla norma che vuoi eliminare e seleziona Elimina.
- Segui le istruzioni di conferma per eliminare la norma. Fai clic su Annulla per interrompere.
gcloud CLI
Per eliminare una policy utilizzando gcloud CLI, esegui il seguente comando:
gcloud alpha scc artifact-guard policies delete \ (POLICY --location=LOCATION (--organization=ORGANIZATION_ID | --project=PROJECT_NUMBER)) \ [--etag=ETAG]
Sostituisci quanto segue:
ETAG: un tag di entità facoltativo utilizzato per controllo della contemporaneità. Se fornisci un valore, la richiesta procede solo se iletag
della risorsa corrisponde.
File YAML
Quando utilizzi gcloud CLI per creare o gestire una policy di protezione artefatti, il file YAML deve seguire questo modello:
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>
Di seguito è riportato un file di policy di protezione artefatti di esempio:
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
Risoluzione dei problemi
Questa sezione descrive i campi delle norme di protezione artefatti e gli errori comuni con le relative soluzioni.
Campi delle norme generali
| Nome | Descrizione | Obbligatorio | Vincoli | Valori di esempio |
|---|---|---|---|---|
| Principale | Definisce l'ambito di applicazione della policy. | Sì | Sono supportate solo le policy nella località global. |
|
| ID policy | Un identificatore univoco del criterio. | Sì | Fino a 100 caratteri. Deve iniziare con una lettera, terminare con un carattere alfanumerico e contenere solo lettere, numeri, trattini o trattini bassi. | my-policy-1 |
| Nome visualizzato | Un nome leggibile per la policy. | No | Fino a 63 caratteri. È consigliabile che sia univoco. | My vulnerability policy |
| Descrizione | Una descrizione della norma. | No | Fino a 2048 caratteri. | Checks for critical vulnerabilities. |
| Tipo di policy | Il tipo di policy da definire. | Sì | È supportato solo vulnerability_policy. |
vulnerability_policy |
| Stato di abilitazione | Lo stato di abilitazione della policy. | Sì | Deve essere ACTIVE o INACTIVE. |
ACTIVE |
Norme relative alle vulnerabilità
| Nome | Descrizione | Multivalore | Vincoli | Valori di esempio |
|---|---|---|---|---|
| maximumAllowedVulnerabilities | Numero massimo di vulnerabilità consentite prima della violazione della policy. | No | Se impostato, deve essere un numero non negativo. | 10 |
| maxAllowedSeverity | Gravità massima delle vulnerabilità consentite dalla policy. | No | Deve essere LOW, MEDIUM, HIGH
o CRITICAL. |
|
| exemptedCves | Elenco delle CVE esenti da questa policy. | Sì | Fino a 100 voci. Ogni ID deve essere nel formato CVE-YYYY-NNNN.
La scadenza del periodo di tolleranza, se fornita, deve essere un timestamp valido. Non può
sovrapporsi a restrictedCves. |
- id: CVE-2024-12345gracePeriodExpirationTime: 2027-01-01T00:00:00Z- id: CVE-2025-4000 |
| restrictedCves | Elenco delle CVE esplicitamente non consentite da questa policy. | Sì | Fino a 100 voci. Ogni ID deve essere nel formato CVE-YYYY-NNNN.
Non può sovrapporsi a exemptedCves. |
- CVE-2024-54321- CVE-2025-5001 |
| allowedPackages | Elenco dei pacchetti consentiti, che potrebbero ignorare altre regole. | Sì | Fino a 100 voci. I nomi dei pacchetti non possono essere vuoti. Non può essere in conflitto con
restrictedPackages. |
- name: nginxversion: 1.0- name: pythonversion: 3.12.4 |
| restrictedPackages | Elenco dei pacchetti esplicitamente non consentiti. | Sì | Fino a 100 voci. I nomi dei pacchetti non possono essere vuoti. Non può essere in conflitto con
allowedPackages. |
- name: npmversion: 9.0.0 |
| excludeUnfixable | Se escludere le vulnerabilità per le quali non è disponibile alcuna correzione. | No | Valore booleano. Il valore predefinito è false. |
true |
| exemptionDaysPostDisclosure | Numero di giorni per esentare le vulnerabilità dopo la data di divulgazione. | No | Se impostato, deve essere un numero non negativo. Il valore predefinito è 0. |
30 |
Ambito delle policy
Ambito della pipeline
| Nome | Descrizione | Obbligatorio | Vincoli | Valori di esempio |
|---|---|---|---|---|
| connectorIds | Elenco degli ID connettore a cui si applica la norma durante la scansione della pipeline CI/CD. | Sì | Minimo 1 voce, massimo 100 voci. La tua organizzazione o il tuo progetto deve essere integrato nella scansione CI/CD. Ogni ID deve seguire il formato corretto, appartenere alla tua organizzazione o al tuo progetto e puntare a un connettore esistente. |
|
| enforcementAction | Azione da intraprendere in caso di violazione delle norme. | Sì | Deve essere AUDIT_ONLY o BLOCK_BUILD. |
BLOCK_BUILD |
Ambito del registro
| Nome | Descrizione | Obbligatorio | Vincoli | Valori di esempio |
|---|---|---|---|---|
| projectIds | Elenco degli ID progetto a cui si applica la policy. | No | Minimo 1 voce. Ogni ID deve essere un ID progetto Google Cloud valido. | projects/123, projects/456 |
| garRepositoryNamePatterns | Elenco dei Google Cloud pattern dei nomi dei repository Artifact Registry. | No | Massimo 100 voci. Deve essere un pattern di repository Google Cloud Artifact Registry valido. | us-west1-docker.pkg.dev/my-project/my-repo, gcr.io/team-a/* |
| imageNamePatterns | Pattern di espressioni regolari per i nomi completi delle immagini. | No | Massimo 100 voci. Deve essere un'espressione regolare valida. | 'my-repo/service-a:.*', 'my-repo/service-b:v1..*' |
| enforcementAction | L'azione da intraprendere in caso di violazione delle norme. | Sì | Deve essere AUDIT_ONLY o ADMISSION_CONTROL. |
ADMISSION_CONTROL |
| admissionControl | Dettagli di configurazione per il controllo dell'ammissione. | No | Deve essere presente se enforcementAction è ADMISSION_CONTROL. |
Ambito di runtime
L'ambito di runtime consente a Protezione artefatti di monitorare le immagini container in esecuzione nell'ambiente GKE. Quando applichi una policy a questo ambito, i risultati delle vulnerabilità di Security Command Center includono i metadati della policy per le immagini di cui è stato eseguito il deployment nei progetti o nei cluster specificati.
| Nome | Descrizione | Obbligatorio | Vincoli | Valori di esempio |
|---|---|---|---|---|
| projectIds | Elenco degli ID progetto in cui sono stati deployati i cluster GKE ed è abilitata la valutazione delle vulnerabilità. | Sì | Deve essere selezionato a livello di organizzazione. | projects/my-gke-deployment-123 |
| gkeClusterNames | Cluster GKE specifici per i quali deve essere valutata la policy. | No | Può essere selezionato a livello di organizzazione o progetto. | projects/prod-env/locations/us-central1/clusters/main-cluster |
Se un'immagine container in esecuzione in un cluster GKE monitorato viola una policy, i metadati ArtifactGuardPolicies vengono aggiunti al messaggio del risultato di vulnerabilità di Security Command Center, come segue:
```none // 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 } ```
Provvedimento
Per le azioni BLOCK_BUILD e BLOCK_DEPLOYMENT, la valutazione delle norme restituisce
un'azione di applicazione consigliata. Tuttavia, devi configurare l'applicazione effettiva nella configurazione della pipeline utilizzando questo consiglio.
Eliminazione del criterio
Se ricevi l'errore FAILED_PRECONDITION, significa che stai tentando di eliminare
una policy attiva. Per eliminare la policy, devi prima impostare il relativo stato su
Inactive.
Errori comuni
La tabella seguente illustra alcuni errori comuni e come risolverli.
| Suggerimento per il messaggio di errore | Causa | Risoluzione |
|---|---|---|
| parent è obbligatorio | Il campo principale non è presente nella richiesta. | Fornisci un partner principale valido in uno dei seguenti formati:
|
| è necessaria la definizione delle norme | L'oggetto policy non è presente nella richiesta. | Fornisci un oggetto policy valido nella richiesta. |
| Il nome visualizzato ha una lunghezza massima di… | Il nome visualizzato supera i 63 caratteri. | Abbrevia il nome visualizzato a un massimo di 63 caratteri. |
| description has a maximum length of… | La descrizione supera i 2048 caratteri. | Abbrevia la descrizione a un massimo di 2048 caratteri. |
| Il tipo di policy è obbligatorio | Il tipo di policy (ad esempio vulnerabilityPolicy) non è presente
nella richiesta. |
Aggiungi un vulnerabilityPolicy o un altro tipo di norma alla tua
norma. |
| enablement state is invalid | È stato utilizzato uno stato di attivazione non valido o deprecato. | Utilizza ACTIVE o INACTIVE. |
| L'ambito è obbligatorio | Non è stato definito alcun ambito (pipeline, registro o runtime). | Aggiungi almeno un ambito valido alla tua policy. |
| Il nome CVE deve essere nel formato… | Un ID CVE in exemptedCves o restrictedCves non è valido. |
Assicurati che tutti gli ID CVE seguano il formato CVE-YYYY-NNNN. |
| CVE … cannot be exempted and restricted | Lo stesso ID CVE esiste sia in exemptedCves che in restrictedCves. |
Rimuovi la CVE da uno degli elenchi. |
| Il nome del pacchetto non può essere vuoto | Un pacchetto in allowedPackages o restrictedPackages
ha un nome vuoto. |
Fornisci un nome per tutti i pacchetti. |
| package … cannot be allowed and restricted | Lo stesso pacchetto è elencato sia in allowedPackages sia in
restrictedPackages. |
Rimuovi il pacchetto da uno degli elenchi. |
| Gli ID connettore sono obbligatori | Il campo connectorIds non è presente in un ambito della pipeline. |
Fornisci almeno un ID connettore. |
| L'ID connettore deve essere nel formato… | Il formato di un ID connettore non è corretto. | Assicurati che gli ID siano in uno dei seguenti formati:
|
| connector ID … does not exist | L'ID connettore specificato non esiste. | Verifica che il connettore esista o rimuovilo dall'elenco. |
| Il pattern del nome del repository GAR deve essere… | In un ambito del registry è stato fornito un pattern di repository non valido. | Assicurati che i pattern corrispondano ai formati validi Google Cloud dei repository Artifact Registry. |
| project ID must be a valid GCP project ID… | È stato fornito un ID progetto non valido in un ambito Registry o Runtime. | Fornisci ID progetto Google Cloud validi. |
| deve essere specificata l'azione di applicazione | enforcementAction non è presente in un ambito Pipeline o Runtime. |
Imposta l'azione di applicazione. Alcuni esempi includono AUDIT_ONLY,
BLOCK_BUILD (solo pipeline) o BLOCK_DEPLOYMENT (solo runtime). |
| Il numero di policy per organizzazione supera il limite… | Hai raggiunto il numero massimo di policy (1000) per la tua organizzazione. | Elimina le norme inutilizzate prima di crearne di nuove. |
| number of vulnerability policies … exceeds the limit… | Hai raggiunto il numero massimo di policy sulle vulnerabilità (500). | Elimina le policy sulle vulnerabilità inutilizzate prima di crearne di nuove. |
| number of policies per pipeline exceeds the limit… | Un connettore è associato a più di 100 policy. | Riduci il numero di policy associate al connettore. |
| number of policy revisions … exceeds the limit… | Hai aggiornato una norma più di 100 volte in 7 giorni. | Attendi o riduci la frequenza di aggiornamento. |
Problemi operativi comuni
Oltre agli errori di convalida dei contenuti delle norme, possono sorgere problemi con il piano di controlloGoogle Cloud sottostante. Questi problemi possono influire sulle richieste API, sulle operazioni di lunga durata e sugli stati delle risorse, in genere visualizzati come codici di errore specifici o comportamenti insoliti.
| Problema | Sintomo/i | Come risolvere i problemi |
|---|---|---|
| Modifica simultanea | UpdatePolicy o DeletePolicy non riesce con un
codice di errore ABORTED e un messaggio
"Provided etag is out of date". |
Risoluzione dei problemi: questo si verifica quando etag
nella tua richiesta non corrisponde alla versione corrente del server delle norme,
a indicare una modifica apportata da un'altra richiesta.Soluzione: leggi di nuovo le norme per ottenere l'ultimo ETag, quindi riprova a inviare la richiesta con il nuovo ETag. |
| Richiesta convalidata ma non eseguita | Una richiesta CreatePolicy, UpdatePolicy o DeletePolicy
viene restituita correttamente, ma non osservi alcuna modifica alla risorsa. |
Risoluzione dei problemi: in genere questo si verifica quando nella richiesta è impostato validate_only: true. Questo flag indica al servizio di eseguire tutte le
convalide senza apportare modifiche.Risoluzione: imposta validate_only su
false o ometti il campo nella richiesta. |
| L'aggiornamento crea un nuovo criterio | Una richiesta UpdatePolicy crea una policy anziché
restituire un errore "non trovato" quando la policy non esiste. |
Risoluzione dei problemi: questo è il comportamento previsto quando
allow_missing: true è incluso in un UpdatePolicyRequest.Risoluzione: se vuoi aggiornare solo una policy esistente, imposta allow_missing su false o ometti il campo. |
| Autorizzazione negata o API non abilitata | Le richieste non vanno a buon fine con PERMISSION_DENIED o un messaggio di errore
come "Artifact Guard API has not been used in the project before or it is
disabled." |
Risoluzione dei problemi: l'API potrebbe essere disabilitata o il
chiamante potrebbe non disporre di autorizzazioni sufficienti. Risoluzione: nel tuo progetto Google Cloud , attiva l'API Artifact Guard ( artifactscanguard.googleapis.com).
Verifica che l'utente o il account di servizio che esegue l'operazione disponga dei ruoli IAM necessari. |
| Timeout operazione | Una richiesta che restituisce un'operazione a lunga esecuzione (LRO) richiede troppo tempo
per essere completata o non va a buon fine con DEADLINE_EXCEEDED. |
Risoluzione dei problemi: questo potrebbe indicare un rallentamento o un problema temporaneo nel servizio di backend. Risoluzione: esegui il polling dello stato dell'operazione a lunga esecuzione. Se l'operazione non riesce o scade il timeout, riprova dopo qualche istante. Se il problema persiste, controlla la dashboard dello stato diGoogle Cloud per eventuali incidenti in corso o contatta l' Google Cloud assistenza. |