Questa pagina fornisce le istruzioni per configurare un criterio di autorizzazione binaria utilizzando l'API REST. In alternativa, puoi eseguire queste attività anche utilizzando Google Cloud CLI o la console Google Cloud. Questo passaggio fa parte della configurazione di Autorizzazione binaria.
Panoramica
Un criterio è un insieme di regole che regolano il deployment di una o più immagini container.
Quando configuri un criterio utilizzando l'API REST, compili i valori in un formato JSON la cui struttura è identica a quella YAML utilizzata nelle interazioni con il servizio gcloud
. Per ulteriori informazioni, consulta
Riferimento YAML per i criteri.
Per configurare un criterio, devi:
- Esportare un file JSON delle norme
- (Facoltativo) Aggiungi altre immagini esenti
- Impostare la regola predefinita
- (Facoltativo) Aggiungi eventuali regole specifiche per il cluster
- Importa il file JSON delle norme
La maggior parte dei criteri reali controlla se tutti gli attestatori richiesti hanno verificato che un'immagine container è pronta per il deployment. In questo caso, devi anche creare attestatori durante la configurazione del criterio.
Impostare il progetto predefinito
Se non lo hai già fatto, imposta il progetto Google Cloud predefinito:
PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID}
dove PROJECT_ID è l'ID del tuo progetto.
Esportare il criterio
Questa sezione si applica a GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Esporta i criteri in un file JSON sul sistema locale:
curl \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy" \ -o "/tmp/policy.json"
Per impostazione predefinita, il file ha i seguenti contenuti:
{ "name": "projects/PROJECT_ID/policy", "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_ALLOW", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } }
Gestire le immagini esenti
Questa sezione si applica a GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Un'immagine esente è un'immagine container esente dalle regole dei criteri. Autorizzazione binaria consente sempre di eseguire il deployment delle immagini esenti.
Specifica le immagini esenti elencando i relativi percorsi del registry in
admissionWhitelistPatterns
. Il percorso può fare riferimento a Container Registry o a un altro registry di immagini. L'agente di applicazione elabora le immagini esenti in admissionWhitelistPatterns
dopo le immagini esenti dalla modalità di valutazione delle norme di sistema.
Per aggiungere un'immagine esente, aggiungi un nodo namePattern
in un elenco
admissionWhitelistPatterns
nel file JSON dei criteri:
{ "name": "projects/PROJECT_ID/policy", "admissionWhitelistPatterns": [ { "namePattern": "MATCHING_PATTERN" } ], ... }
dove MATCHING_PATTERN è il percorso di una singola immagine nel registry
per corrispondenza esatta o di qualsiasi immagine corrispondente a un pattern utilizzando il simbolo di carattere jolly
(*
, **
).
Cloud Run
Questa sezione si applica a Cloud Run.
Non puoi specificare direttamente i nomi delle immagini che contengono un tag. Ad esempio, non puoi specificare
IMAGE_PATH
:latest.
Se vuoi specificare nomi di immagini che contengono tag, devi specificare il nome dell'immagine utilizzando un carattere jolly come segue:
*
per tutte le versioni di un'unica immagine; ad esempio,us-docker.pkg.dev/myproject/container/hello@*
**
per tutte le immagini di un progetto, ad esempious-docker.pkg.dev/myproject/**
Puoi utilizzare i nomi dei percorsi per specificare un digest nel formato
IMAGE_PATH
@DIGEST
.
Modalità di valutazione dei criteri di sistema
Questa sezione si applica a GKE e Distributed Cloud.
La modalità di valutazione dei criteri di sistema è un'impostazione dei criteri che consente ad Autorizzazione binaria di valutare un criterio di sistema prima di valutare il criterio configurato. Google gestisce il criterio di sistema, che esenta un elenco di immagini di sistema gestite da Google utilizzate da GKE. Le immagini elencate nelle norme di sistema non vengono bloccate dall'applicazione delle norme. Se non attivi l'impostazione, devi gestire autonomamente l'elenco delle immagini esenti. Scopri come gestire le immagini esenti.
Puoi visualizzare i contenuti del criterio di sistema utilizzando il seguente comando:
gcloud alpha container binauthz policy export-system-policy
Per attivare la modalità di valutazione delle norme di sistema, aggiungi il seguente nodo di primo livello al file JSON delle norme:
"globalPolicyEvaluationMode": "ENABLE"
Per disattivare la modalità di valutazione dei criteri di sistema, aggiungi quanto segue:
"globalPolicyEvaluationMode": "DISABLE"
Puoi esportare il criterio di sistema associato a una regione specifica come segue:
gcloud alpha container binauthz policy export-system-policy \
--location=REGION > /tmp/policy.yaml
Sostituisci REGION con la regione associata al criterio
di sistema che vuoi esportare (o "globale"). Esempi: asia-east1
,
europe-west1
, us-central1
.
Se ometti --location
o specifichi --location=global
, il comando genera un criterio di sistema da una regione nell'ultimo gruppo di regioni che riceve gli aggiornamenti. Poiché la maggior parte delle modifiche ai criteri di sistema sono aggiunte, l'output mostra l'insieme di immagini di sistema attualmente consentite in tutte le regioni.
Impostare la regola predefinita
Questa sezione si applica a GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Una regola è la parte di un criterio che definisce i vincoli che le immagini container devono soddisfare prima di poter essere implementate. A ogni richiesta di ammissione è associato un cluster GKE. Se una richiesta non corrisponde a una regola specifica per il cluster, viene utilizzata la regola predefinita.
La regola predefinita è definita nel nodo defaultAdmissionRule
nel criterio. Per ulteriori informazioni sulle parti di questa regola, consulta
ADMISSION_RULE nel Riferimento YAML delle norme. Per esempi di regole predefinite, consulta
Norme di esempio.
Per impostare la regola predefinita, modifica il nodo defaultAdmissionRule
nel file JSON del criterio come richiesto:
"defaultAdmissionRule": { "evaluationMode": "EVAL_MODE", "enforcementMode": "ENFORCEMENT_MODE" requireAttestationsBy: [ ATTESTOR, ... ] }
dove:
- EVAL_MODE specifica il tipo di vincolo valutato da Autorizzazione binaria prima di consentire il deployment di un'immagine contenitore.
- ENFORCEMENT_MODE specifica l'azione intrapresa se un'immagine del container non è conforme ai limiti definiti nella regola.
- ATTESTOR specifica
gli attestatori (se richiesti) che devono firmare un'immagine container prima che possa essere eseguita
il deployment. Utilizza il percorso completo dell'attestatore nel formato
projects/PROJECT_ID/attestors/ATTESTOR_NAME
.
Se la regola verifica se tutti gli attestatori richiesti hanno firmato un'immagine contenitore, devi creare gli attestatori prima di completare questo passaggio.
Imposta regole specifiche per il cluster (facoltative)
Questa sezione si applica a GKE e Distributed Cloud.
Un cluster può anche avere una o più regole specifiche per il cluster. Questo tipo di regola si applica solo al cluster GKE specificato. Se un cluster non ha una regola propria, viene utilizzata la regola predefinita. Le regole specifiche per il cluster sono una parte facoltativa di un criterio.
Le regole specifiche per il cluster sono definite nei nodi clusterAdmissionRules
nel file JSON delle norme. Per ulteriori informazioni sulle parti di questa regola, consulta
ADMISSION_RULE nel Riferimento YAML delle norme. Per un esempio, consulta
Utilizzare una regola specifica per il cluster
in Criteri di esempio.
Per aggiungere una regola specifica per il cluster:
Nel file JSON dei criteri, aggiungi un nodo clusterAdmissionRules
:
"clusterAdmissionRules": { "us-central1-a.test-cluster": { "evaluationMode": "REQUIRE_ATTESTATION", "requireAttestationsBy": [ "ATTESTOR", ... ], "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } },
dove CLUSTER_SPECIFIER è l'ID risorsa del cluster a cui si applica la regola.
- Per GKE, i cluster collegati a GKE e GKE su AWS, il formato è
CLUSTER_LOCATION.CLUSTER_NAME
, ad esempious-central1-a.test-cluster
. - Per Google Distributed Cloud e Google Distributed Cloud,
il formato è
FLEET_MEMBERSHIP_LOCATION.FLEET_MEMBERSHIP_ID
, ad esempioglobal.test-membership
.
Le altre proprietà sono descritte in Impostare la regola predefinita , nella sezione precedente di questa guida. Consulta Criteri di esempio per un esempio di regola specifica per il cluster.
Se la regola verifica se tutti gli attestatori richiesti hanno firmato un'immagine contenitore, devi creare gli attestatori prima di completare questo passaggio.
Importa il file JSON delle norme
Questa sezione si applica a GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Importa di nuovo il file JSON dei criteri in Autorizzazione binaria quanto segue:
curl -X PUT \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ --data-binary @/tmp/policy.json \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"