Questa pagina fornisce le istruzioni per configurare un criterio di Autorizzazione binaria utilizzando Google Cloud CLI. In alternativa, puoi eseguire queste attività anche utilizzando la Google Cloud Console o l'API REST. Questo passaggio fa parte della configurazione della Autorizzazione binaria.
Per configurare un criterio utilizzando lo strumento a riga di comando, esporta il criterio esistente come file YAML. Dopo aver modificato il file, puoi importarlo per aggiornare il criterio, come descritto più avanti in questa guida. Per ulteriori informazioni sul formato Java, consulta Riferimento YAML per i criteri.
Prima di iniziare
- Attiva Autorizzazione binaria.
- Crea un cluster.
- Se intendi utilizzare le attestazioni, ti consigliamo di creare gli attestatori prima di configurare il criterio. Puoi creare gli attestatori utilizzando uno strumento a riga di comando o tramite la Google Cloud Console.
Imposta l'ID progetto sul progetto in cui hai abilitato Autorizzazione binaria:
PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID}
Esporta il file YAML dei criteri
Questa sezione si applica a GKE, Anthos cluster su VMware, Cloud Run e Anthos Service Mesh.
Per aggiornare il criterio, devi prima esportarlo in un file YAML locale come segue:
gcloud container binauthz policy export > /tmp/policy.yaml
Per impostazione predefinita, i contenuti del file sono simili ai seguenti:
admissionWhitelistPatterns: - namePattern: gcr.io/google_containers/* - namePattern: gcr.io/google-containers/* - namePattern: k8s.gcr.io/** - namePattern: gke.gcr.io/** - namePattern: gcr.io/stackdriver-agents/* globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: EVALUATION_MODE enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG name: projects/PROJECT_ID/policy
Per modificare il criterio, modifica il file e aggiungi o aggiorna le sezioni, come descritto più avanti in questa guida. Dopo aver salvato il file, puoi importare il criterio.
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 soddisfare prima di poter essere sottoposti a deployment. La regola predefinita definisce i vincoli che si applicano a tutte le immagini non esenti che non hanno una propria regola specifica per il cluster. Ogni criterio deve avere una regola predefinita.
La regola predefinita è definita nel nodo defaultAdmissionRule
nel file YAML del 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 policy.yaml
in base alle tue esigenze:
defaultAdmissionRule: evaluationMode: EVALUATION_MODE enforcementMode: ENFORCEMENT_MODE requireAttestationsBy: - ATTESTOR - ...
Sostituisci quanto segue:
EVALUATION_MODE: la modalità di valutazione specifica il tipo di vincolo applicato dall'esecutore dell'Autorizzazione binaria al momento del deployment. Sostituisci EVALUATION_MODE con una delle seguenti opzioni:
ALWAYS_ALLOW
: consente il deployment di tutte le immagini.ALWAYS_DENY
: non consente il deployment di tutte le immagini.REQUIRE_ATTESTATION
: consente il deployment di un'immagine se ha un'attestazione associata. Al momento del deployment, l'esecutore verifica l'attestazione utilizzando gli attestatori che aggiungi all'elenco ATTESTOR in questa regola. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori. Se specifichiREQUIRE_ATTESTATION
, devi anche aggiungere un bloccorequireAttestationsBy
contenente almeno un attestatore. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
ENFORCEMENT_MODE: la modalità di applicazione specifica in che modo l'autore della rivendicazione risponde quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con uno dei seguenti elementi:
ENFORCED_BLOCK_AND_AUDIT_LOG
: blocca le immagini che violano la regola e registra informazioni sulla violazione in Cloud Audit Logs (impostazione predefinita).DRYRUN_AUDIT_LOG_ONLY
: consentire il deployment di tutte le immagini, ma registrare informazioni sull'applicazione forzata, incluse le informazioni sulle violazioni, negli audit log di Cloud.
ATTESTOR: se imposti
EVALUATION_MODE
suREQUIRE_ATTESTATION
, devi aggiungere anche un blocco requireAttesationsBy. Nel blocco, elenchi uno o più attestatori per ID risorsa. L'ID risorsa ha il formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
Gestisci immagini esenti
Questa sezione si applica a GKE, Anthos cluster su VMware, Cloud Run e Anthos Service Mesh.
Un'immagine esente è un'immagine 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 si riferisce a Container Registry o a un altro registro di immagini. Al momento del deployment, Autorizzazione binaria esenta l'elenco di immagini specificate da admissionWhitelistPatterns
dopo le immagini specificate dal criterio di sistema.
Per aggiungere un'immagine esente, aggiungi un nodo namePattern
a un elenco
admissionWhitelistPatterns
nel file policy.yaml
:
admissionWhitelistPatterns: - namePattern: MATCHING_PATTERN
Sostituisci MATCHING_PATTERN con il percorso di una singola immagine nel tuo
registry per corrispondenza esatta o per tutte le immagini che corrispondono 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 la seguente riga al file policy.yaml
:
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.
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 alle immagini di cui deve essere eseguito il deployment solo in cluster GKE specifici. Le regole specifiche dei cluster sono una parte facoltativa di un criterio.
Le regole specifiche del cluster sono definite in nodi clusterAdmissionRules
nel file YAML dei criteri. 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 policy.yaml
, aggiungi un nodo clusterAdmissionRules
:
clusterAdmissionRules: CLUSTER_SPECIFIER: evaluationMode: EVALUATION_MODE enforcementMode: ENFORCEMENT_MODE requireAttestationsBy: - ATTESTOR - ...
Sostituisci quanto segue:
CLUSTER_SPECIFIER: l'ID risorsa del cluster a cui si applica la regola. Per formattare la regola, segui queste indicazioni:
- Per gli utenti di GKE: il formato è il seguente:
LOCATION.NAME
. - Cluster Anthos su utenti VMware: il formato è il seguente:
global.CLUSTER_ID
. Ottieni l'ID risorsa del cluster per un cluster su Cluster Anthos su VMware. Le altre proprietà sono descritte nella sezione Impostare la regola predefinita riportata in precedenza in questa guida. Consulta Criteri di esempio per un esempio di regola specifica per cluster.
- Per gli utenti di GKE: il formato è il seguente:
EVALUATION_MODE: la modalità di valutazione specifica il tipo di vincolo applicato dall'esecutore dell'Autorizzazione binaria al momento del deployment. Sostituisci EVALUATION_MODE con una delle seguenti opzioni:
ALWAYS_ALLOW
: consente il deployment di tutte le immagini.ALWAYS_DENY
: non consente il deployment di tutte le immagini.REQUIRE_ATTESTATION
: consente il deployment di un'immagine se ha un'attestazione associata. Al momento del deployment, l'esecutore verifica l'attestazione utilizzando gli attestatori che aggiungi all'elenco ATTESTOR in questa regola. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori. Se specifichiREQUIRE_ATTESTATION
, devi anche aggiungere un bloccorequireAttestationsBy
contenente almeno un attestatore. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
ENFORCEMENT_MODE: la modalità di applicazione specifica in che modo l'autore della rivendicazione risponde quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con uno dei seguenti elementi:
ENFORCED_BLOCK_AND_AUDIT_LOG
: blocca le immagini che violano la regola e registra informazioni sulla violazione in Cloud Audit Logs (impostazione predefinita).DRYRUN_AUDIT_LOG_ONLY
: consentire il deployment di tutte le immagini, ma registrare informazioni sull'applicazione forzata, incluse le informazioni sulle violazioni, negli audit log di Cloud.
ATTESTOR: se imposti
EVALUATION_MODE
suREQUIRE_ATTESTATION
, devi aggiungere anche un blocco requireAttesationsBy. Nel blocco, elenchi uno o più attestatori per ID risorsa. L'ID risorsa ha il formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
Imposta regole specifiche (facoltativo)
Puoi creare regole il cui ambito è un'identità di servizio mesh, un account di servizio Kubernetes o uno spazio dei nomi Kubernetes.
Imposta una regola per un'identità di servizio Anthos Service Mesh
Per impostare una regola per un'identità di servizio Anthos Service Mesh (anteprima), modifica il file policy.yaml
e aggiungi un blocco istioServiceIdentityAdmissionRules
, ad esempio:
defaultAdmissionRule:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
istioServiceIdentityAdmissionRules:
SERVICE_IDENTITY_ID:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ENFORCEMENT_MODE
requireAttestationsBy:
- <var>ATTESTOR</var>
- ...
name: projects/PROJECT_ID/policy
Sostituisci quanto segue:
SERVICE_IDENTITY_ID: l'identità del servizio Anthos Service Mesh a ambito in cui definire questa regola. L'identità del servizio ha il seguente formato: PROJECT_ID.svc.id.goog/ns/NAMESPACE/sa/SERVICE_ACCOUNT. Nell'ID identità del servizio, sostituisci quanto segue:
- PROJECT_ID: l'ID progetto in cui definisci le tue risorse Kubernetes.
- NAMESPACE: lo spazio dei nomi Kubernetes.
- SERVICE_ACCOUNT: l'account di servizio.
EVALUATION_MODE: la modalità di valutazione specifica il tipo di vincolo applicato dall'esecutore dell'Autorizzazione binaria al momento del deployment. Sostituisci EVALUATION_MODE con una delle seguenti opzioni:
ALWAYS_ALLOW
: consente il deployment di tutte le immagini.ALWAYS_DENY
: non consente il deployment di tutte le immagini.REQUIRE_ATTESTATION
: consente il deployment di un'immagine se ha un'attestazione associata. Al momento del deployment, l'esecutore verifica l'attestazione utilizzando gli attestatori che aggiungi all'elenco ATTESTOR in questa regola. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori. Se specifichiREQUIRE_ATTESTATION
, devi anche aggiungere un bloccorequireAttestationsBy
contenente almeno un attestatore. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
ENFORCEMENT_MODE: la modalità di applicazione specifica in che modo l'autore della rivendicazione risponde quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con uno dei seguenti elementi:
ENFORCED_BLOCK_AND_AUDIT_LOG
: blocca le immagini che violano la regola e registra informazioni sulla violazione in Cloud Audit Logs (impostazione predefinita).DRYRUN_AUDIT_LOG_ONLY
: consentire il deployment di tutte le immagini, ma registrare informazioni sull'applicazione forzata, incluse le informazioni sulle violazioni, negli audit log di Cloud.
ATTESTOR: se imposti
EVALUATION_MODE
suREQUIRE_ATTESTATION
, devi aggiungere anche un blocco requireAttesationsBy. Nel blocco, elenchi uno o più attestatori per ID risorsa. L'ID risorsa ha il formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
Impostare una regola per un account di servizio Kubernetes
Per impostare una regola per un account di servizio Kubernetes, modifica il file policy.yaml
e aggiungi un blocco kubernetesServiceAccountAdmissionRules
, ad esempio:
defaultAdmissionRule:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
kubernetesServiceAccountAdmissionRules:
KUBERNETES_SERVICE_ACCOUNT_ID:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ENFORCEMENT_MODE
requireAttestationsBy:
- <var>ATTESTOR</var>
- ...
name: projects/PROJECT_ID/policy
Sostituisci quanto segue:
KUBERNETES_SERVICE_ACCOUNT_ID: l'account di servizio Kubernetes all'ambito della regola. Questo ID account di servizio ha il formato: NAMESPACE:SERVICE_ACCOUNT. Nell'ID account di servizio, sostituisci quanto segue:
- NAMESPACE: lo spazio dei nomi Kubernetes.
- SERVICE_ACCOUNT: il nome dell'account di servizio.
EVALUATION_MODE: la modalità di valutazione specifica il tipo di vincolo applicato dall'esecutore dell'Autorizzazione binaria al momento del deployment. Sostituisci EVALUATION_MODE con una delle seguenti opzioni:
ALWAYS_ALLOW
: consente il deployment di tutte le immagini.ALWAYS_DENY
: non consente il deployment di tutte le immagini.REQUIRE_ATTESTATION
: consente il deployment di un'immagine se ha un'attestazione associata. Al momento del deployment, l'esecutore verifica l'attestazione utilizzando gli attestatori che aggiungi all'elenco ATTESTOR in questa regola. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori. Se specifichiREQUIRE_ATTESTATION
, devi anche aggiungere un bloccorequireAttestationsBy
contenente almeno un attestatore. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
ENFORCEMENT_MODE: la modalità di applicazione specifica in che modo l'autore della rivendicazione risponde quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con uno dei seguenti elementi:
ENFORCED_BLOCK_AND_AUDIT_LOG
: blocca le immagini che violano la regola e registra informazioni sulla violazione in Cloud Audit Logs (impostazione predefinita).DRYRUN_AUDIT_LOG_ONLY
: consentire il deployment di tutte le immagini, ma registrare informazioni sull'applicazione forzata, incluse le informazioni sulle violazioni, negli audit log di Cloud.
ATTESTOR: se imposti
EVALUATION_MODE
suREQUIRE_ATTESTATION
, devi aggiungere anche un blocco requireAttesationsBy. Nel blocco, elenchi uno o più attestatori per ID risorsa. L'ID risorsa ha il formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
Imposta una regola per uno spazio dei nomi Kubernetes
Per impostare una regola per uno spazio dei nomi Kubernetes, modifica il file policy.yaml
e aggiungi un blocco kubernetesNamespaceAdmissionRules
, ad esempio:
defaultAdmissionRule:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
kubernetesNamespaceAdmissionRules:
KUBERNETES_NAMESPACE:
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
evaluationMode: EVALUATION_MODE
requireAttestationsBy:
- <var>ATTESTOR</var>
- ...
name: projects/PROJECT_ID/policy
Sostituisci quanto segue:
KUBERNETES_NAMESPACE: lo spazio dei nomi Kubernetes nell'ambito di questa regola.
EVALUATION_MODE: la modalità di valutazione specifica il tipo di vincolo applicato dall'esecutore dell'Autorizzazione binaria al momento del deployment. Sostituisci EVALUATION_MODE con una delle seguenti opzioni:
ALWAYS_ALLOW
: consente il deployment di tutte le immagini.ALWAYS_DENY
: non consente il deployment di tutte le immagini.REQUIRE_ATTESTATION
: consente il deployment di un'immagine se ha un'attestazione associata. Al momento del deployment, l'esecutore verifica l'attestazione utilizzando gli attestatori che aggiungi all'elenco ATTESTOR in questa regola. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori. Se specifichiREQUIRE_ATTESTATION
, devi anche aggiungere un bloccorequireAttestationsBy
contenente almeno un attestatore. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
ENFORCEMENT_MODE: la modalità di applicazione specifica in che modo l'autore della rivendicazione risponde quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con uno dei seguenti elementi:
ENFORCED_BLOCK_AND_AUDIT_LOG
: blocca le immagini che violano la regola e registra informazioni sulla violazione in Cloud Audit Logs (impostazione predefinita).DRYRUN_AUDIT_LOG_ONLY
: consentire il deployment di tutte le immagini, ma registrare informazioni sull'applicazione forzata, incluse le informazioni sulle violazioni, negli audit log di Cloud.
ATTESTOR: se imposti
EVALUATION_MODE
suREQUIRE_ATTESTATION
, devi aggiungere anche un blocco requireAttesationsBy. Nel blocco, elenchi uno o più attestatori per ID risorsa. L'ID risorsa ha il formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
Importa il file YAML dei criteri
Questa sezione si applica a GKE, Anthos cluster su VMware, Cloud Run e Anthos Service Mesh.
Importa il file YAML del criterio in Autorizzazione binaria inserendo quanto segue:
gcloud container binauthz policy import /tmp/policy.yaml
Passaggi successivi
- Utilizza l'attestatore
built-by-cloud-build
per eseguire il deployment solo delle immagini create da Cloud Build (anteprima). - Utilizza le attestazioni.
- Esegui il deployment di un'immagine GKE.