Configura un criterio utilizzando gcloud CLI

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 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

  1. Abilita Autorizzazione binaria.
  2. Crea un cluster.
  3. Se intendi utilizzare attestazioni, ti consigliamo di creare attendi prima di configurare . Puoi creare attestatori utilizzando un strumento a riga di comando o tramite Console Google Cloud.
  4. 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 del criterio

Questa sezione riguarda GKE, i cluster GKE, Cloud Run 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 sezioni, come descritto più avanti in questa guida. Dopo aver salvato il file, puoi importa il criterio.

Per aggiungere un'immagine esente alla lista consentita, aggiungi l'elemento al file dei criteri:

admissionWhitelistPatterns:
  - namePattern: EXEMPT_IMAGE_PATH

Sostituisci EXEMPT_IMAGE_PATH con il percorso dell'immagine da escludere. Per escludere altre immagini, aggiungi altre voci - namePattern. Scopri di più su admissionWhitelistPatterns.

Impostare la regola predefinita

Questa sezione riguarda GKE, i cluster GKE, Cloud Run 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 Tutte le immagini non esenti che non hanno una propria una 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 sugli elementi di questa regola, consulta ADMISSION_RULE nel file YAML dei criteri Riferimento. Per esempi di regole predefinite, consulta Esempi di norme.

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 applicato dall'applicazione forzata di Autorizzazione binaria 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 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 specifichi REQUIRE_ATTESTATION, devi aggiungere anche un blocco requireAttestationsBy 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 tranne l'applicazione dei log informazioni, incluse quelle sulle violazioni, a Cloud Audit Logs.
  • ATTESTOR: se imposti EVALUATION_MODE su REQUIRE_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 ulteriori informazioni sulla creazione di attestatori, consulta Creazione di attestatori.

Gestisci immagini esenti

Questa sezione riguarda GKE, i cluster GKE, Cloud Run Cloud Service Mesh.

Un'immagine esente è un'immagine esente da delle norme. Autorizzazione binaria consente sempre di utilizzare le immagini esenti di cui è stato eseguito il deployment.

Puoi specificare le immagini esenti elencando i relativi percorsi del registro in admissionWhitelistPatterns. Il percorso si riferisce Container Registry o un altro registro 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 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 una singola immagine; ad esempio us-docker.pkg.dev/myproject/container/hello@*
  • ** per tutte le immagini in un progetto; ad esempio us-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 cluster GKE.

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 la seguente riga a il file policy.yaml:

globalPolicyEvaluationMode: ENABLE

Per disabilitare 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 che 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 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.

Imposta regole specifiche per il cluster (facoltativo)

Questa sezione riguarda GKE e cluster GKE.

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 i cluster sono di una norma.

Le regole specifiche per i cluster sono definite clusterAdmissionRules nodi in il file YAML dei criteri. Per ulteriori informazioni sugli elementi di questa regola, consulta ADMISSION_RULE nel file YAML dei criteri Riferimento. 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 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 in cui la regola sia applicata. La regola deve essere formattata nel seguente modo:

    • Per GKE, i cluster collegati a GKE GKE su AWS, il formato è CLUSTER_LOCATION.CLUSTER_NAME, ad esempio us-central1-a.test-cluster.
    • Per Google Distributed Cloud e Google Distributed Cloud, il formato è FLEET_MEMBERSHIP_LOCATION.FLEET_MEMBERSHIP_ID, per ad esempio global.test-membership.

      Le altre proprietà sono descritte in Impostare la regola predefinita in precedenza. Consulta Esempi di norme per un esempio di una regola specifica per il cluster.

  • EVALUATION_MODE: il evaluation mode specifica il tipo di vincolo applicato dall'applicazione forzata di Autorizzazione binaria 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 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 specifichi REQUIRE_ATTESTATION, devi aggiungere anche un blocco requireAttestationsBy 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 tranne l'applicazione dei log informazioni, incluse quelle sulle violazioni, a Cloud Audit Logs.
  • ATTESTOR: se imposti EVALUATION_MODE su REQUIRE_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 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.

Imposta una regola per un'identità di servizio Cloud Service Mesh

Per impostare una regola per Cloud Service Mesh (anteprima) di servizio, modifica il file policy.yaml e aggiungi 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à del 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 applicato dall'applicazione forzata di Autorizzazione binaria 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 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 specifichi REQUIRE_ATTESTATION, devi aggiungere anche un blocco requireAttestationsBy 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 tranne l'applicazione dei log informazioni, incluse quelle sulle violazioni, a Cloud Audit Logs.
  • ATTESTOR: se imposti EVALUATION_MODE su REQUIRE_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 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 applicato dall'applicazione forzata di Autorizzazione binaria 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 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 specifichi REQUIRE_ATTESTATION, devi aggiungere anche un blocco requireAttestationsBy 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 tranne l'applicazione dei log informazioni, incluse quelle sulle violazioni, a Cloud Audit Logs.
  • ATTESTOR: se imposti EVALUATION_MODE su REQUIRE_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 ulteriori informazioni 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 uno 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 da definire per l'ambito a cui applicare questa regola.

  • EVALUATION_MODE: il evaluation mode specifica il tipo di vincolo applicato dall'applicazione forzata di Autorizzazione binaria 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 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 specifichi REQUIRE_ATTESTATION, devi aggiungere anche un blocco requireAttestationsBy 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 tranne l'applicazione dei log informazioni, incluse quelle sulle violazioni, a Cloud Audit Logs.
  • ATTESTOR: se imposti EVALUATION_MODE su REQUIRE_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 ulteriori informazioni sulla creazione di attestatori, consulta Creazione di attestatori.

Importa il file YAML del criterio

Questa sezione riguarda GKE, i cluster GKE, Cloud Run Cloud Service Mesh.

Importa di nuovo il file YAML del criterio in Autorizzazione binaria inserendo il seguenti:

gcloud container binauthz policy import /tmp/policy.yaml

Passaggi successivi