Configurare un criterio utilizzando gcloud CLI

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 di 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 la policy, come descritto più avanti in questa guida. Per ulteriori informazioni sul formato YAML dei criteri, consulta Riferimento YAML per i criteri.

Prima di iniziare

  1. Attiva Autorizzazione binaria.
  2. Crea un cluster.
  3. 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 consoleGoogle Cloud .
  4. Imposta l'ID progetto sul progetto in cui hai attivato Autorizzazione binarian:

    PROJECT_ID=PROJECT_ID
    gcloud config set project ${PROJECT_ID}
    

Esporta il file YAML dei criteri

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 del file sono simili a quanto segue:

defaultAdmissionRule:
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  evaluationMode: ALWAYS_ALLOW
globalPolicyEvaluationMode: ENABLE
name: projects/PROJECT_ID/policy

Per modificare la policy, 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 all'allowlist, aggiungi quanto segue al file delle norme:

admissionWhitelistPatterns:
  - namePattern: EXEMPT_IMAGE_PATH

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

Impostare la regola predefinita

Questa sezione si applica a 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 poter essere sottoposte a deployment. La regola predefinita definisce i vincoli che si applicano a tutte le immagini non esenti che non hanno una propria regola specifica del cluster. Ogni policy deve avere una regola predefinita.

La regola predefinita è definita nel nodo defaultAdmissionRule nel file YAML dei criteri. Per ulteriori informazioni sulle parti di questa regola, consulta ADMISSION_RULE nel riferimento YAML delle norme. Per esempi di regole predefinite, vedi Norme di esempio.

Per impostare la regola predefinita, modifica il nodo defaultAdmissionRule nel file policy.yaml in base alle 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'enforcer 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 l'immagine ha una o più attestazioni che possono essere verificate da tutti gli attestatori che aggiungi a questa regola. Al momento del deployment, l'enforcer 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 specifichi REQUIRE_ATTESTATION, devi aggiungere anche un blocco requireAttestationsBy contenente almeno un attestatore. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
  • ENFORCEMENT_MODE: la modalità di applicazione forzata specifica in che modo l'applicazione forzata risponde quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con uno dei seguenti valori:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: blocca le immagini che violano la regola e registra le informazioni sulla violazione in Cloud Audit Logs (impostazione predefinita).
    • DRYRUN_AUDIT_LOG_ONLY: consente il deployment di tutte le immagini, ma registra le informazioni sull'applicazione, incluse quelle sulle violazioni, in Cloud Audit Logs.
  • ATTESTOR: se imposti EVALUATION_MODE su REQUIRE_ATTESTATION, devi anche aggiungere un blocco requireAttesationsBy. Nel blocco, elenca uno o più autori dell'attestazione in base all'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.

Gestire le 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 il deployment delle immagini esenti.

Specifichi le immagini esenti elencando i relativi percorsi del registro in admissionWhitelistPatterns. Il percorso si riferisce a Container Registry o a un altro registro delle immagini. Al momento del deployment, Autorizzazione binaria esenta l'elenco delle immagini specificate da admissionWhitelistPatterns dopo le immagini specificate dai criteri 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 registro per corrispondenza esatta o con qualsiasi immagine che corrisponda a un pattern utilizzando il carattere jolly (*, **).

Cloud Run

Questa sezione si applica a Cloud Run.

Non puoi specificare direttamente i nomi delle immagini che contengono un tag. Ad esempio, non puoi specificare IMAGE_PATH:latest.

Se vuoi specificare nomi di immagini che contengono tag, devi specificare il nome dell'immagine utilizzando un carattere jolly nel seguente modo:

  • * per tutte le versioni di una singola immagine, ad esempio us-docker.pkg.dev/myproject/container/hello@*
  • ** per tutte le immagini di 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 delle policy di sistema

Questa sezione si applica a GKE e Distributed Cloud.

La modalità di valutazione delle norme di sistema è un'impostazione delle norme che fa sì che Autorizzazione binaria valuti un criterio di sistema prima di valutare il criterio che configuri. Google gestisce i criteri di sistema, che esentano un elenco di immagini di sistema gestite da Google utilizzate da GKE. Le immagini elencate nelle norme di sistema non sono bloccate dall'applicazione delle norme. Se non abiliti l'impostazione, devi gestire autonomamente l'elenco delle immagini esenti. Scopri come gestire le immagini esenti.

Puoi visualizzare i contenuti della policy di sistema utilizzando il seguente comando:

gcloud alpha container binauthz policy export-system-policy

Per attivare la modalità di valutazione dei criteri di sistema, aggiungi la seguente riga al file policy.yaml:

globalPolicyEvaluationMode: ENABLE

Per disattivare la modalità di valutazione delle policy di sistema, aggiungi quanto segue:

globalPolicyEvaluationMode: DISABLE

Puoi esportare le norme di sistema associate 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 criterio di sistema che vuoi esportare (o "global"). Esempi: asia-east1, europe-west1, us-central1.

Se ometti --location o specifichi --location=global, il comando restituisce un criterio di sistema di una regione dell'ultimo gruppo di regioni a ricevere aggiornamenti. Poiché la maggior parte delle modifiche alla norma 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 a GKE e Distributed Cloud.

Un cluster può anche avere una o più regole specifiche del cluster. Questo tipo di regola si applica solo alle immagini di cui deve essere eseguito il deployment in cluster GKE specifici. Le regole specifiche per il cluster sono una parte facoltativa di un criterio.

Le regole specifiche del cluster sono definite nei nodi clusterAdmissionRules del file YAML dei criteri. Per ulteriori informazioni sulle parti di questa regola, consulta ADMISSION_RULE nel riferimento YAML delle norme. Per un esempio, vedi 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 nel seguente modo:

    • Per GKE, i cluster collegati a GKE e GKE su AWS, il formato è CLUSTER_LOCATION.CLUSTER_NAME, ad esempio us-central1-a.test-cluster.

    • Per il software Google Distributed Cloud (cluster GKE su bare metal o VMware), il formato è FLEET_MEMBERSHIP_LOCATION.FLEET_MEMBERSHIP_ID, ad esempio global.test-membership.

      Le altre proprietà sono descritte in Impostare la regola predefinita in precedenza in questa guida. Per un esempio di regola specifica per il cluster, vedi Criteri di esempio.

  • EVALUATION_MODE: La modalità di valutazione specifica il tipo di vincolo applicato dall'agente di applicazione 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 l'immagine ha una o più attestazioni che possono essere verificate da tutti gli attestatori che aggiungi a questa regola. Al momento del deployment, l'enforcer 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 specifichi REQUIRE_ATTESTATION, devi aggiungere anche un blocco requireAttestationsBy contenente almeno un attestatore. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
  • ENFORCEMENT_MODE: la modalità di applicazione forzata specifica in che modo l'applicazione forzata risponde quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con uno dei seguenti valori:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: blocca le immagini che violano la regola e registra le informazioni sulla violazione in Cloud Audit Logs (impostazione predefinita).
    • DRYRUN_AUDIT_LOG_ONLY: consente il deployment di tutte le immagini, ma registra le informazioni sull'applicazione, incluse quelle sulle violazioni, in Cloud Audit Logs.
  • ATTESTOR: se imposti EVALUATION_MODE su REQUIRE_ATTESTATION, devi anche aggiungere un blocco requireAttesationsBy. Nel blocco, elenca uno o più autori dell'attestazione in base all'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 con ambito limitato a un'identità di servizio mesh, a un account di servizio Kubernetes o a uno spazio dei nomi Kubernetes.

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

Per impostare una regola per un'identità di 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: l'identità del servizio Cloud Service Mesh a cui limitare l'ambito di questa regola. L'identità di 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: il account di servizio.
  • EVALUATION_MODE: La modalità di valutazione specifica il tipo di vincolo applicato dall'agente di applicazione 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 l'immagine ha una o più attestazioni che possono essere verificate da tutti gli attestatori che aggiungi a questa regola. Al momento del deployment, l'enforcer 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 specifichi REQUIRE_ATTESTATION, devi aggiungere anche un blocco requireAttestationsBy contenente almeno un attestatore. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
  • ENFORCEMENT_MODE: la modalità di applicazione forzata specifica in che modo l'applicazione forzata risponde quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con uno dei seguenti valori:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: blocca le immagini che violano la regola e registra le informazioni sulla violazione in Cloud Audit Logs (impostazione predefinita).
    • DRYRUN_AUDIT_LOG_ONLY: consente il deployment di tutte le immagini, ma registra le informazioni sull'applicazione, incluse quelle sulle violazioni, in Cloud Audit Logs.
  • ATTESTOR: se imposti EVALUATION_MODE su REQUIRE_ATTESTATION, devi anche aggiungere un blocco requireAttesationsBy. Nel blocco, elenca uno o più autori dell'attestazione in base all'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: Il account di servizio Kubernetes a cui limitare l'ambito della regola. Questo ID account di servizio ha il formato: NAMESPACE:SERVICE_ACCOUNT. Nell'ID service account, 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'agente di applicazione 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 l'immagine ha una o più attestazioni che possono essere verificate da tutti gli attestatori che aggiungi a questa regola. Al momento del deployment, l'enforcer 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 specifichi REQUIRE_ATTESTATION, devi aggiungere anche un blocco requireAttestationsBy contenente almeno un attestatore. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
  • ENFORCEMENT_MODE: la modalità di applicazione forzata specifica in che modo l'applicazione forzata risponde quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con uno dei seguenti valori:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: blocca le immagini che violano la regola e registra le informazioni sulla violazione in Cloud Audit Logs (impostazione predefinita).
    • DRYRUN_AUDIT_LOG_ONLY: consente il deployment di tutte le immagini, ma registra le informazioni sull'applicazione, incluse quelle sulle violazioni, in Cloud Audit Logs.
  • ATTESTOR: se imposti EVALUATION_MODE su REQUIRE_ATTESTATION, devi anche aggiungere un blocco requireAttesationsBy. Nel blocco, elenca uno o più autori dell'attestazione in base all'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 a cui limitare questa regola.

  • EVALUATION_MODE: La modalità di valutazione specifica il tipo di vincolo applicato dall'enforcer 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 l'immagine ha una o più attestazioni che possono essere verificate da tutti gli attestatori che aggiungi a questa regola. Al momento del deployment, l'enforcer 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 specifichi REQUIRE_ATTESTATION, devi aggiungere anche un blocco requireAttestationsBy contenente almeno un attestatore. Per scoprire di più sulla creazione di attestatori, consulta Creazione di attestatori.
  • ENFORCEMENT_MODE: la modalità di applicazione forzata specifica in che modo l'applicazione forzata risponde quando un'immagine viola una regola. Sostituisci ENFORCEMENT_MODE con uno dei seguenti valori:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: blocca le immagini che violano la regola e registra le informazioni sulla violazione in Cloud Audit Logs (impostazione predefinita).
    • DRYRUN_AUDIT_LOG_ONLY: consente il deployment di tutte le immagini, ma registra le informazioni sull'applicazione, incluse quelle sulle violazioni, in Cloud Audit Logs.
  • ATTESTOR: se imposti EVALUATION_MODE su REQUIRE_ATTESTATION, devi anche aggiungere un blocco requireAttesationsBy. Nel blocco, elenca uno o più autori dell'attestazione in base all'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, Distributed Cloud, Cloud Run e Cloud Service Mesh.

Importa di nuovo il file YAML dei criteri in Autorizzazione binaria inserendo quanto segue:

gcloud container binauthz policy import /tmp/policy.yaml

Passaggi successivi