Questa pagina fornisce le istruzioni per configurare un'Autorizzazione binaria policy utilizzando Google Cloud CLI. In alternativa, puoi anche eseguire queste attività utilizzando Console Google Cloud o API REST. Questo passaggio fa parte configurando 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 aggiornarlo come descritto più avanti in questa guida. Per ulteriori informazioni sulle norme YAML, consulta la pagina Riferimento YAML per i criteri.
Prima di iniziare
- Abilita Autorizzazione binaria.
- Crea un cluster.
- Se intendi utilizzare le attestazioni, ti consigliamo di creare gli attestatori prima di configurare il criterio. Puoi creare attestatori utilizzando uno strumento a riga di comando o tramite la console Google Cloud.
Imposta l'ID progetto sul progetto in cui hai attivato l'autorizzazione di codice:
PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID}
Esporta il file YAML del criterio
Questa sezione si applica a GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Per aggiornare il criterio, esportalo prima in un file YAML locale, come segue:
gcloud container binauthz policy export > /tmp/policy.yaml
Per impostazione predefinita, i contenuti dei file sono simili ai seguenti:
defaultAdmissionRule: enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG evaluationMode: ALWAYS_ALLOW globalPolicyEvaluationMode: ENABLE 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.
Per aggiungere un'immagine esente alla lista consentita, aggiungi quanto segue al file delle norme:
admissionWhitelistPatterns: - namePattern: EXEMPT_IMAGE_PATH
Sostituisci EXEMPT_IMAGE_PATH
con il percorso dell'immagine da esentare. Per escludere altre immagini, aggiungi altre voci - namePattern
. Scopri di più su admissionWhitelistPatterns
.
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 soddisfare prima di poterne eseguire il deployment. La regola predefinita definisce i vincoli che si applicano a tutte le immagini non esenti che non dispongono di una propria regola specifica per il cluster. Ogni criterio deve avere una regola predefinita.
La regola predefinita è definita nel
defaultAdmissionRule
nodo in
il file YAML dei criteri. Per ulteriori informazioni sulle parti di questa regola, consulta
REGOLA_AMMISSIONE nel Riferimento YAML delle norme. Per esempi di regole predefinite, consulta
Norme di esempio.
Per impostare la regola predefinita, modifica il nodo defaultAdmissionRule
nella
policy.yaml
file come richiesto:
defaultAdmissionRule: evaluationMode: EVALUATION_MODE enforcementMode: ENFORCEMENT_MODE requireAttestationsBy: - ATTESTOR - ...
Sostituisci quanto segue:
EVALUATION_MODE: il evaluation mode specifica il tipo di vincolo che l'applicazione forzata di Autorizzazione binaria applica al momento del deployment nel tempo. Sostituisci EVALUATION_MODE con uno dei seguenti opzioni:
ALWAYS_ALLOW
: consente il deployment di tutte le immagini.ALWAYS_DENY
: non consente il deployment di tutte le immagini.REQUIRE_ATTESTATION
: consente di eseguire il deployment di un'immagine se ha una o più attestazioni che possono essere verificate da tutti gli attestatori che aggiungi a questa regola. Al momento del deployment, l'autore dell'applicazione verifica mediante gli attestatori che aggiungi all'ATTESTOR in questa regola. Per ulteriori informazioni sulla creazione di attestatori, consulta Creazione di attestatori. Se specifichiREQUIRE_ATTESTATION
, devi aggiungere anche un bloccorequireAttestationsBy
contenente almeno un attestatore. Per scoprire come creare gli attestatori, consulta Creare attestatori.
ENFORCEMENT_MODE: il modalità di applicazione specifica il modo in cui reagisce il responsabile quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con uno dei seguenti:
ENFORCED_BLOCK_AND_AUDIT_LOG
: blocca le immagini che violano la regola e registrare le informazioni sulla violazione a Cloud Audit Logs (impostazione predefinita).DRYRUN_AUDIT_LOG_ONLY
: consenti il deployment di tutte le immagini tranne l'applicazione dei log informazioni, incluse quelle sulle violazioni, a Cloud Audit Logs.
ATTESTOR: se imposti
EVALUATION_MODE
suREQUIRE_ATTESTATION
, devi aggiungere anche un blocco requireAttesationsBy. Nel blocco, elenchi uno o più attestatori in base all'ID risorsa. La l'ID risorsa ha il formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Per ulteriori informazioni sulla creazione di attestatori, consulta Creazione di attestatori.
Gestisci immagini esenti
Questa sezione si applica a GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Un'immagine esente è un'immagine esente dalle regole delle norme. L'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 fa riferimento a
Container Registry o a un altro registry di immagini. Alle ore
data e ora del deployment, Autorizzazione binaria esenta l'elenco di immagini specificate
admissionWhitelistPatterns
dopo le immagini specificate dal
criterio di sistema.
Per aggiungere un'immagine esente, aggiungi un nodo namePattern
in un
admissionWhitelistPatterns
elenco nel file policy.yaml
:
admissionWhitelistPatterns: - namePattern: MATCHING_PATTERN
Sostituisci MATCHING_PATTERN con il percorso di una singola immagine nel
nel registro di sistema in base alla corrispondenza esatta o a 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 specificareIMAGE_PATH
:latest.
Se vuoi specificare nomi di immagini contenenti 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 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 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 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 la seguente riga a
il 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 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 sistema
che vuoi esportare (o "globale"). Esempi: asia-east1
,
europe-west1
, 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.
Imposta regole specifiche per il cluster (facoltativo)
Questa sezione riguarda GKE e Distributed Cloud.
Un cluster può anche avere uno o più regole specifiche per il cluster. Questo tipo di si applica alle immagini di cui deve essere eseguito il deployment in di cluster GKE. Le regole specifiche per il cluster sono un componente facoltativo di un criterio.
Le regole specifiche del cluster sono definite nei nodi clusterAdmissionRules
nel file YAML dei criteri. Per ulteriori informazioni sulle parti di questa regola, consulta
REGOLA_AMMISSIONE 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 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. Formatta la regola come segue:
Per GKE, i cluster collegati a GKE GKE su AWS, il formato è
CLUSTER_LOCATION.CLUSTER_NAME
—per ad esempious-central1-a.test-cluster
.Per il software Google Distributed Cloud (cluster GKE on bare metal) o VMware), 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. Per un esempio di regola specifica per un cluster, vedi Esempi di norme.
EVALUATION_MODE: la modalità di valutazione specifica il tipo di vincolo applicato dall'applicazione forzata di 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 di eseguire il deployment di un'immagine se ha una o più attestazioni che possono essere verificate da tutti gli attestatori che aggiungi a questa regola. Al momento del deployment, l'applicazione verifica la dichiarazione utilizzando gli attestatori che aggiungi all'elenco ATTESTOR in questa regola. Per ulteriori informazioni sulla creazione di attestatori, consulta Creazione di attestatori. Se specifichiREQUIRE_ATTESTATION
, devi aggiungere anche un bloccorequireAttestationsBy
contenente almeno un attestatore. Per scoprire di più sulla creazione di attestatori, consulta Creare attestatori.
ENFORCEMENT_MODE: il modalità di applicazione specifica il modo in cui reagisce il responsabile quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con una delle seguenti opzioni:
ENFORCED_BLOCK_AND_AUDIT_LOG
: blocca le immagini che violano la regola e registrare le informazioni sulla violazione a Cloud Audit Logs (impostazione predefinita).DRYRUN_AUDIT_LOG_ONLY
: consenti il deployment di tutte le immagini tranne l'applicazione dei log informazioni, incluse quelle sulle violazioni, a Cloud Audit Logs.
ATTESTOR: se imposti
EVALUATION_MODE
suREQUIRE_ATTESTATION
, devi aggiungere anche un valore requireAttesationsBy bloccare. Nel blocco vengono elencati uno o più attestatori, per ID risorsa. L'ID risorsa ha il formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Per ulteriori informazioni sulla creazione di attestatori, consulta Creazione di attestatori.
Imposta regole specifiche (facoltativo)
Puoi creare regole con ambito a livello di identità di servizio mesh, un account di servizio Kubernetes o uno spazio dei nomi Kubernetes.
Impostare una regola per l'identità di un servizio Cloud Service Mesh
Per impostare una regola per l'identità di un servizio Cloud Service Mesh, 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: il servizio Cloud Service Mesh identità a cui applicare questa regola. L'identità del servizio ha il formato seguente: PROJECT_ID.svc.id.goog/ns/NAMESPACE/sa/SERVICE_ACCOUNT. Nell'ID identità di servizio, sostituisci quanto segue:
- PROJECT_ID: l'ID progetto in cui definisci di Kubernetes.
- NAMESPACE: lo spazio dei nomi Kubernetes.
- SERVICE_ACCOUNT: l'account di servizio.
EVALUATION_MODE: il evaluation mode specifica il tipo di vincolo che l'applicazione forzata di Autorizzazione binaria applica al momento del deployment nel tempo. Sostituisci EVALUATION_MODE con uno dei seguenti opzioni:
ALWAYS_ALLOW
: consente il deployment di tutte le immagini.ALWAYS_DENY
: non consente il deployment di tutte le immagini.REQUIRE_ATTESTATION
: consente di eseguire il deployment di un'immagine se ha una o più attestazioni che possono essere verificate da tutti gli attestatori che aggiungi a questa regola. Al momento del deployment, l'autore dell'applicazione verifica mediante gli attestatori che aggiungi all'ATTESTOR in questa regola. Per scoprire di più sulla creazione di attestatori, consulta Creare attestatori. Se specifichiREQUIRE_ATTESTATION
, devi aggiungere anche un bloccorequireAttestationsBy
contenente almeno un attestatore. Per scoprire come creare gli attestatori, consulta Creare attestatori.
ENFORCEMENT_MODE: il modalità di applicazione specifica il modo in cui reagisce il responsabile quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con una delle seguenti opzioni:
ENFORCED_BLOCK_AND_AUDIT_LOG
: blocca le immagini che violano la regola e registrare le informazioni sulla violazione a Cloud Audit Logs (impostazione predefinita).DRYRUN_AUDIT_LOG_ONLY
: consenti il deployment di tutte le immagini, ma registra le informazioni sull'applicazione delle norme, incluse quelle sulle violazioni, in Cloud Audit Logs.
ATTESTOR: se imposti
EVALUATION_MODE
suREQUIRE_ATTESTATION
, devi aggiungere anche un blocco requireAttesationsBy. Nel blocco, elenchi uno o più attestatori in base all'ID risorsa. La l'ID risorsa ha il formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Per ulteriori informazioni 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 a cui applicare la regola. Questo ID account di servizio ha il formato: NAMESPACE:SERVICE_ACCOUNT. Nel servizio sostituisci quanto segue:
- NAMESPACE: lo spazio dei nomi Kubernetes.
- SERVICE_ACCOUNT: il nome dell'account di servizio.
EVALUATION_MODE: il evaluation mode specifica il tipo di vincolo che l'applicazione forzata di Autorizzazione binaria applica al momento del deployment nel tempo. 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 una o più attestazioni che possono essere verificate da tutti gli attestatori che aggiungi a questa regola. Al momento del deployment, l'applicazione verifica la dichiarazione utilizzando gli attestatori che aggiungi all'elenco ATTESTOR in questa regola. Per scoprire come creare attestatori, consulta Creare attestatori. Se specifichiREQUIRE_ATTESTATION
, devi aggiungere anche un bloccorequireAttestationsBy
contenente almeno un attestatore. Per scoprire come creare gli attestatori, consulta Creare attestatori.
ENFORCEMENT_MODE: il modalità di applicazione specifica il modo in cui reagisce il responsabile quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con una delle seguenti opzioni:
ENFORCED_BLOCK_AND_AUDIT_LOG
: blocca le immagini che violano la regola e registrare le informazioni sulla violazione a Cloud Audit Logs (impostazione predefinita).DRYRUN_AUDIT_LOG_ONLY
: consenti il deployment di tutte le immagini, ma registra le informazioni sull'applicazione delle norme, incluse quelle sulle violazioni, in Cloud Audit Logs.
ATTESTOR: se imposti
EVALUATION_MODE
suREQUIRE_ATTESTATION
, devi aggiungere anche un valore requireAttesationsBy bloccare. Nel blocco vengono elencati uno o più attestatori, per ID risorsa. La l'ID risorsa ha il formato:projects/PROJECT_ID/attestors/ATTESTOR_NAME
.Per scoprire di più sulla creazione degli attestatori, consulta Creare gli 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 a cui applicare la regola.
EVALUATION_MODE: la modalità di valutazione specifica il tipo di vincolo applicato dall'applicazione forzata di 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 una o più attestazioni che possono essere verificate da tutti gli attestatori che aggiungi a questa regola. Al momento del deployment, l'applicazione verifica la dichiarazione utilizzando gli attestatori che aggiungi all'elenco ATTESTOR in questa regola. Per ulteriori informazioni sulla creazione di attestatori, consulta Creazione di attestatori. Se specifichiREQUIRE_ATTESTATION
, devi aggiungere anche un bloccorequireAttestationsBy
contenente almeno un attestatore. Per ulteriori informazioni sulla creazione di attestatori, consulta Creazione di attestatori.
ENFORCEMENT_MODE: il modalità di applicazione specifica il modo in cui reagisce il responsabile quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con uno dei seguenti:
ENFORCED_BLOCK_AND_AUDIT_LOG
: blocca le immagini che violano la regola e registrare le informazioni sulla violazione a Cloud Audit Logs (impostazione predefinita).DRYRUN_AUDIT_LOG_ONLY
: consenti il deployment di tutte le immagini, ma registra le informazioni sull'applicazione delle norme, incluse quelle sulle violazioni, in Cloud Audit Logs.
ATTESTOR: se imposti
EVALUATION_MODE
suREQUIRE_ATTESTATION
, devi aggiungere anche un valore requireAttesationsBy bloccare. Nel blocco vengono elencati 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 degli attestatori, consulta Creare gli attestatori.
Importa il file YAML dei criteri
Questa sezione si applica a GKE, Distributed Cloud, Cloud Run e Cloud Service Mesh.
Importa di nuovo 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. - Utilizza le attestazioni.
- Esegui il deployment di un'immagine GKE.