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 Google Cloud Console. Questo passaggio fa parte della configurazione della 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 alla struttura YAML utilizzata nelle interazioni gcloud
con il servizio. Per maggiori informazioni, consulta la pagina Riferimento YAML dei criteri.
Per configurare un criterio è necessario:
- Esporta un file JSON dei criteri
- (Facoltativo) Aggiungi altre immagini esenti
- Impostare la regola predefinita
- (Facoltativo) Aggiungi regole specifiche per il cluster
- Importa il file JSON del criterio
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 quando configuri il criterio.
Imposta il progetto predefinito
Imposta il progetto Google Cloud predefinito se non lo hai già fatto:
PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID}
dove PROJECT_ID è l'ID del tuo progetto.
Esporta il criterio
Questa sezione si applica a GKE, Anthos cluster su VMware, Cloud Run e Anthos Service Mesh.
Esporta il criterio in un file JSON sul tuo 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", "admissionWhitelistPatterns": [ { "namePattern": "gcr.io/google_containers/*" }, { "namePattern": "gcr.io/google-containers/*" }, { "namePattern": "k8s.gcr.io/**" }, { "namePattern": "gcr.io/stackdriver-agents/*" } ], "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_ALLOW", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } }
L'elenco predefinito di admissionWhitelistPatterns
nell'esportazione dei criteri potrebbe mostrare percorsi delle immagini diversi da quelli mostrati in questa guida.
Gestisci immagini esenti
Questa sezione si applica a GKE, Anthos cluster su VMware, Cloud Run e Anthos Service Mesh.
Un'immagine esente è un'immagine container che è esente dalle regole dei criteri. Autorizzazione binaria consente sempre il deployment delle immagini esenti.
Specifica le immagini esenti elencando i percorsi del registro in
admissionWhitelistPatterns
. Il percorso può fare riferimento a Container Registry o a un altro registro di immagini. L'autore dell'applicazione elabora le immagini esenti in admissionWhitelistPatterns
dopo le immagini esentate dalla modalità di valutazione dei criteri di sistema.
Per aggiungere un'immagine esente, aggiungi un nodo namePattern
in un
elenco admissionWhitelistPatterns
nel file JSON del criterio:
{ "name": "projects/PROJECT_ID/policy", "admissionWhitelistPatterns": [ { "namePattern": "MATCHING_PATTERN" } ], ... }
dove MATCHING_PATTERN è il percorso di una singola immagine nel tuo registro tramite corrispondenza esatta o a qualsiasi immagine corrispondente a un pattern utilizzando il simbolo del carattere jolly (*
, **
).
Cloud Run
Questa sezione si applica a Cloud Run.
Non puoi direttamente specificare i nomi delle immagini che contengono un tag. Ad esempio, non puoi specificare IMAGE_PATH
:latest.
Se vuoi specificare i nomi delle immagini che contengono tag, devi utilizzare un caratteri jolly come segue:
*
per tutte le versioni di una singola immagine, ad esempious-docker.pkg.dev/myproject/container/hello@*
**
per tutte le immagini in 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 ai cluster GKE e Anthos su VMware.
La modalità di valutazione dei criteri di sistema è un'impostazione dei criteri che fa sì che Autorizzazione binaria valuti un criterio di sistema prima di valutare il criterio che hai configurato. Google gestisce il criterio di sistema, che esenta un elenco di immagini di sistema gestite da Google che GKE utilizza. Le immagini elencate nel criterio di sistema non sono bloccate dall'applicazione dei criteri. Se non abiliti l'impostazione, devi gestire l'elenco di immagini esenti autonomamente. Scopri come gestire le immagini esenti.
Puoi visualizzare i contenuti dei criteri di sistema utilizzando il seguente comando:
gcloud alpha container binauthz policy export-system-policy
Per abilitare la modalità di valutazione dei criteri di sistema, aggiungi il seguente nodo di primo livello al file JSON del criterio:
"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 un'area geografica specifica come segue:
gcloud alpha container binauthz policy export-system-policy \
--location=REGION > /tmp/policy.yaml
Sostituisci REGION con l'area geografica associata al criterio di sistema che vuoi esportare (o"globale"). Alcuni esempi sono: asia-east1
,
europe-west1
, us-central1
.
Se ometti --location
o specifichi --location=global
, il comando genera un criterio di sistema da un'area geografica nell'ultimo gruppo di aree geografiche per ricevere 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, Anthos cluster su VMware, Cloud Run e Anthos Service Mesh.
Una regola è la parte di un criterio che definisce i vincoli che le immagini container devono superare prima di poter essere sottoposte a deployment. A ogni richiesta di ammissione è associato un cluster GKE. Se una richiesta non corrisponde a una regola specifica del cluster, viene utilizzata la regola predefinita.
La regola predefinita è definita nel nodo defaultAdmissionRule
nel criterio. Per scoprire di più sulle parti di questa regola, consulta la pagina ADMISSION_RULE nella documentazione YAML Riferimento. Per esempi di regole predefinite, consulta i criteri di esempio.
Per impostare la regola predefinita, modifica il nodo defaultAdmissionRule
nel file JSON del criterio in base alle necessità:
"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 container.
- ENFORCEMENT_MODE specifica l'azione che viene intrapresa se un'immagine container non è conforme ai vincoli definiti nella regola.
- ATTESTOR specifica gli attestatori (se richiesti) che devono firmare un'immagine container prima che possa essere eseguito il deployment. Utilizza il percorso completo dell'attestatore nel formato
projects/PROJECT_ID/attestors/ATTESTOR_NAME
.
Se la regola controlla se tutti gli attestatori richiesti hanno firmato un'immagine container, devi creare gli attestatori prima di completare questo passaggio.
Imposta regole specifiche per il cluster (facoltativo)
Questa sezione si applica ai cluster GKE e Anthos su VMware.
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 propria regola, viene utilizzata la regola predefinita. Le regole specifiche dei cluster sono una parte facoltativa di un criterio.
Le regole specifiche del cluster sono definite in nodi clusterAdmissionRules
nel file JSON del criterio. Per scoprire di più sulle parti di questa regola, consulta la pagina ADMISSION_RULE nella documentazione YAML Riferimento. Per un esempio, consulta Utilizzare una regola specifica del cluster in Criteri di esempio.
Per aggiungere una regola specifica del cluster:
Nel file JSON del criterio, 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 nel formato location.name
e le altre proprietà sono descritte nella precedente sezione Impostare la regola predefinita. Consulta Criteri di esempio per un esempio di regola specifica per cluster.
Se la regola controlla se tutti gli attestatori richiesti hanno firmato un'immagine container, devi creare gli attestatori prima di completare questo passaggio.
Importa il file JSON del criterio
Questa sezione si applica a GKE, Anthos cluster su VMware, Cloud Run e Anthos Service Mesh.
Importa il file JSON del criterio in Autorizzazione binaria inserendo 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"