Questa pagina fornisce 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 configurando Autorizzazione binaria.
Panoramica
Un criterio è un insieme di regole che regolano il di una o più immagini container.
Quando configuri un criterio utilizzando l'API REST, i valori vengono inseriti in un file JSON
la cui struttura è identica alla struttura YAML utilizzata in gcloud
interazioni con il servizio. Per ulteriori informazioni, vedi
Riferimento YAML per i criteri.
Per configurare un criterio è necessario:
- Esporta un file JSON dei criteri
- Aggiungi altre immagini esenti (facoltativo)
- Impostare la regola predefinita
- Aggiungi eventuali regole specifiche per il cluster (facoltativo)
- Importa il file JSON dei criteri
La maggior parte dei criteri reali controlla se tutti gli attestatori richiesti hanno verificato che un'immagine del contenitore è pronta per il deployment. In questo caso, devi anche crea attestatori quando configuri il criterio.
Imposta 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 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", "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_ALLOW", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } }
Gestisci immagini esenti
Questa sezione riguarda GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Un'immagine esente è un'immagine container che esente da regole dei criteri. Autorizzazione binaria consente sempre immagini esenti di cui eseguire il deployment.
Puoi specificare le immagini esenti elencando i relativi percorsi del registro in
admissionWhitelistPatterns
. Il percorso può fare riferimento a Container Registry o a un altro registry di immagini. La
l'applicazione forzata elabora le immagini esenti in admissionWhitelistPatterns
dopo le immagini
esente dalla modalità di valutazione dei criteri di sistema.
Per aggiungere un'immagine esente, aggiungi un nodo namePattern
in un
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 registro
per corrispondenza esatta o qualsiasi immagine corrispondente a un pattern utilizzando il carattere jolly
(*
, **
).
Cloud Run
Questa sezione riguarda Cloud Run.
Non puoi specificare direttamente i nomi delle immagini che contengono un tag. Ad esempio, non puoi specificare
IMAGE_PATH
:più recente.
Se vuoi indicare nomi immagine che contengono tag, devi specificare il nome 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 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 riguarda GKE e Distributed Cloud.
Modalità di valutazione dei criteri di sistema è un'impostazione di criteri che fa sì che Autorizzazione binaria valuti un sistema prima di valutare il criterio che configuri. Google gestisce criterio di sistema, che esclude un elenco di immagini di sistema gestite da Google che utilizzate da GKE. Le immagini elencate nel criterio di sistema non sono è bloccata dall'applicazione forzata dei criteri. Se non attivi l'impostazione, devi gestire 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 abilitare la modalità di valutazione dei criteri di sistema, aggiungi il seguente nodo di primo livello alla file JSON dei criteri:
"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, che 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
e us-central1
.
Se ometti --location
o specifichi --location=global
, il comando restituisce una
criterio di sistema da una regione nell'ultimo gruppo di regioni per ricevere
aggiornamenti. Poiché la maggior parte delle modifiche al criterio 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 riguarda 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 passare prima di poterne eseguire il deployment. Ogni ingresso a un cluster GKE associato. Se una richiesta non corrisponde a una regola specifica per il cluster, viene utilizzata la regola predefinita.
La regola predefinita è definita nel
defaultAdmissionRule
nodo in
il criterio. Per ulteriori informazioni sulle parti di questa regola, consulta
REGOLA_AMMISSIONE nel Riferimento YAML delle norme. Per esempi di regole predefinite, consulta
Esempi di norme.
Per impostare la regola predefinita, modifica il nodo defaultAdmissionRule
nel criterio
JSON 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 dell'immagine container di cui eseguire il deployment.
- ENFORCEMENT_MODE specifica l'azione che viene eseguita se l'immagine container non è conforme i vincoli definiti nella regola.
- ATTESTOR specifica
Gli attestatori (se richiesti) che devono firmare un'immagine container prima di poter
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 container, devi creare attestatori prima per completare questo passaggio.
Imposta regole specifiche per il cluster (facoltativo)
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 si applica solo al cluster GKE specificato. Se un cluster non ha una regola propria, viene utilizzata la regola predefinita. Regole specifiche per il cluster sono una parte facoltativa di una norma.
Le regole specifiche per i cluster sono definite
clusterAdmissionRules
nodi in
il file JSON dei criteri. Per ulteriori informazioni sulle parti di questa regola, consulta
REGOLA_AMMISSIONE nel Riferimento YAML delle norme. Per un esempio, vedi
Usa una regola specifica per il cluster
in Esempi di criteri.
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 in cui la regola sia applicata.
- Per GKE, i cluster collegati a GKE
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
, per ad esempioglobal.test-membership
.
Le altre proprietà sono descritte in Impostare la regola predefinita , in precedenza in questa guida. Consulta Esempi di norme per un esempio di una regola specifica per il cluster.
Se la regola verifica se tutti gli attestatori richiesti hanno firmato un container, devi creare attestatori prima per completare questo passaggio.
Importa il file JSON dei criteri
Questa sezione riguarda GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Importa di nuovo il file JSON del criterio in Autorizzazione binaria inserendo il valore seguenti:
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"