Concetti di Autorizzazione binaria

Questa pagina contiene informazioni sui concetti relativi ad Autorizzazione binaria.

Criteri

Un criterio di Autorizzazione binaria, noto anche come criterio progetto-singleton, è un insieme di regole che regolano il deployment delle immagini container.

La convalida continua (CV) utilizza un tipo diverso di criterio, chiamato criterio della piattaforma.

Una norma è composta dalle seguenti parti:

Puoi configurare un criterio in uno dei seguenti modi:

  • Console Google Cloud
  • Comandi gcloud

Quando utilizzi i comandi gcloud, esporti e modifichi la definizione del criterio in formato YAML prima di importarla nuovamente nel tuo progetto. Il formato YAML riflette la struttura interna di un criterio nell'archiviazione di Autorizzazione binaria. Per ulteriori informazioni su questo formato, consulta la pagina Riferimento YAML per i criteri.

Ogni progetto Google Cloud può avere esattamente un criterio. Devi configurare il criterio nel progetto in cui esegui la piattaforma di deployment. In una configurazione per un singolo progetto, il criterio e tutte le risorse subordinate (attaccatori e attestations) risiedono nello stesso progetto. Per stabilire la separazione dei compiti, puoi utilizzare una configurazione multiprogetto. In questa configurazione, la piattaforma di deployment può essere eseguita in un progetto, gli attestatori possono risiedere in un altro progetto e le attestazioni possono trovarsi in un altro progetto.

Per configurare e utilizzare Autorizzazione binaria sulle piattaforme supportate, consulta Configurazione in base alla piattaforma.

Guarda un esempio di configurazione con più progetti per GKE.

Regole

Quando configuri un criterio, ne definisci le regole. Le regole definiscono i vincoli che le immagini devono soddisfare prima di poterne eseguire il deployment. Un criterio ha una regola predefinita e può avere regole specifiche, a seconda della piattaforma. Per saperne di più, consulta Tipi di regole supportate per piattaforma.

Ogni regola può essere configurata con una modalità di valutazione e una modalità di applicazione. Ad esempio, una regola può richiedere che un'immagine abbia un'attestazione firmata prima di poter eseguire il deployment.

Regola predefinita

Ogni criterio ha una regola predefinita. Questa regola si applica a tutte le richieste di deployment che non corrispondono a una regola specifica. In un file YAML dei criteri, la regola predefinita è specificata nel nodo defaultAdmissionRule.

Per ulteriori informazioni sulla configurazione della regola predefinita, consulta l'argomento Configurazione di un criterio.

Regole specifiche

È possibile aggiungere una o più regole specifiche a un criterio. Questo tipo di regola si applica alle immagini di cui deve essere eseguito il deployment in identità, account di servizio o cluster specifici. Il supporto di regole specifiche varia a seconda della piattaforma. Per saperne di più, consulta Tipi di regole supportate per piattaforma.

In un file YAML dei criteri, ogni regola specifica del cluster viene specificata in un nodo clusterAdmissionRule.

Tipi di regole supportate per piattaforma

La tabella seguente mostra i tipi di regole supportati per ciascuna piattaforma di deployment.

Piattaforma Regola predefinita Regola specifica
GKE Supportato Cluster
Spazi dei nomi Kubernetes
Account di servizio Kubernetes
Cloud Run Supportato Funzionalità non supportata
Cluster collegati a GKE Supportato Cluster
Spazi dei nomi Kubernetes
Account di servizio Kubernetes
GKE su AWS Supportato Cluster
Spazi dei nomi Kubernetes
Account di servizio Kubernetes
GKE su Bare Metal Supportato Cluster
Spazi dei nomi Kubernetes
Account di servizio Kubernetes
GKE su VMware Supportato Cluster
Spazi dei nomi Kubernetes
Account di servizio Kubernetes
Cloud Service Mesh Supportato Identità dei servizi Cloud Service Mesh

Modalità di valutazione

Ogni regola ha una modalità di valutazione che specifica il tipo di vincolo applicato da Autorizzazione binaria per la regola. La modalità di valutazione per una regola viene specificata utilizzando la proprietà evaluationMode nel file YAML del criterio.

Esistono tre modalità di valutazione:

  • Consenti tutte le immagini: consente il deployment di tutte le immagini.
  • Non consentire tutte le immagini: non consente il deployment di tutte le immagini.
  • Richiedi attestazioni: richiede a un firmatario di firmare digitalmente il digest dell'immagine e creare un'attestazione prima del deployment. Al momento del deployment, l'applicazione forzata di Autorizzazione binaria utilizza un attestatore per verificare la firma nell'attestazione prima di eseguire il deployment dell'immagine associata.

Modalità di applicazione

Ogni regola ha anche una modalità di applicazione, che specifica l'azione eseguita da GKE quando un'immagine non è conforme alla regola. Una regola può avere le seguenti modalità di applicazione:

  • Blocca e audit log: blocca il deployment di immagini non conformi alla regola e scrive un messaggio nell'audit log per indicare perché non è stato eseguito il deployment dell'immagine.

  • Dry run: solo audit log: la modalità dry run è una modalità di applicazione forzata in un criterio che consente il deployment di immagini non conformi, ma scrive i dettagli del deployment in Cloud Audit Logs. La modalità dry run consente di testare un criterio, ad esempio nel tuo ambiente di produzione, prima che l'applicazione entri in vigore.

La maggior parte delle regole di produzione utilizza la modalità di applicazione forzata di Blocca e audit log. Dry run: solo audit log viene utilizzato principalmente per testare un criterio nel tuo ambiente prima che entri in vigore.

La modalità di applicazione per una regola viene specificata utilizzando la proprietà enforcementMode nel file YAML del criterio.

Consulta Visualizzare gli audit log (GKE, cluster GKE, Cloud Service Mesh) o Visualizzare gli audit log (Cloud Run) per ulteriori informazioni sui messaggi scritti in Cloud Audit Logs?

di una convalida continua

La convalida continua (CV) è una funzionalità di Autorizzazione binaria che controlla periodicamente le immagini associate ai pod in esecuzione per garantire la costante conformità ai criteri.

Scopri di più sul CV.

Immagini esenti

Un'immagine esente è un'immagine esente dalle regole dei criteri. Autorizzazione binaria consente sempre il deployment di immagini esenti. Ogni progetto ha una lista consentita di immagini esenti specificate dal percorso del registro. Le immagini nel percorso gcr.io/google_containers/*, k8s.gcr.io/** e nei percorsi aggiuntivi sono esenti per impostazione predefinita, poiché contengono risorse necessarie per consentire a GKE di avviare un cluster con il criterio predefinito attivo.

Per aggiungere un'immagine esente alla lista consentita, aggiungi quanto segue al file del criterio:

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.

Pattern della lista consentita

Per inserire nella lista consentita tutte le immagini la cui posizione del registro corrisponde al percorso specificato:

gcr.io/example-project/*

Per inserire nella lista consentita tutte le immagini il cui percorso nel registro è una qualsiasi sottodirectory del percorso specificato (ad es. gcr.io/example-project/my-directory/helloworld):

gcr.io/example-project/**

Per inserire un'immagine specifica nella lista consentita:

gcr.io/example-project/helloworld

Per inserire nella lista consentita una versione specifica di un'immagine in base al tag:

gcr.io/example-project/helloworld:latest
gcr.io/example-project/helloworld:my-tag

Per inserire nella lista consentita tutte le versioni e tutti i tag di un'immagine:

gcr.io/example-project/helloworld:*

Per inserire nella lista consentita una versione specifica di un'immagine in base al suo digest:

gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c

Scopri di più sull'utilizzo delle sintesi delle immagini container.

Scopri come gestire le immagini esenti nella console Google Cloud, utilizzando lo strumento a riga di comando o l'API REST.

Immagini di sistema gestite da Google

Attendere tutte le immagini di sistema gestite da Google fa sì che Autorizzazione binaria esenta un elenco di immagini di sistema gestite da Google da un'ulteriore valutazione dei criteri. Se questa impostazione è abilitata, le immagini richieste da GKE non vengono bloccate dall'applicazione dei criteri. Il criterio di sistema viene valutato prima e in aggiunta alla valutazione dei criteri relativi agli utenti.

Puoi abilitare o disabilitare questa impostazione utilizzando la proprietà globalPolicyEvaluationMode nel file YAML del criterio. Puoi visualizzare i contenuti del criterio di sistema utilizzando il seguente comando:

gcloud alpha container binauthz policy export-system-policy

Attestazioni

Un'attestazione è un documento digitale che certifica un'immagine. Durante il deployment, Autorizzazione binaria verifica l'attestazione prima di consentire il deployment dell'immagine.

Il processo di creazione di un'attestazione a volte è chiamato firma di un'immagine. Viene creata un'attestazione dopo la creazione di un'immagine. Ognuna di queste immagini ha un digest univoco a livello globale. Un firmatario firma il digest dell'immagine utilizzando una chiave privata di una coppia di chiavi e utilizza la firma per creare l'attestazione. In fase di deployment, l'autore dell'Autorizzazione binaria utilizza la chiave pubblica dell'attestatore per verificare la firma nell'attestazione. In genere un attestatore corrisponde a un solo firmatario.

Un'attestazione indica che l'immagine associata è stata creata eseguendo correttamente un processo specifico richiesto. Ad esempio, se il firmatario è un rappresentante della funzione di controllo qualità (QA), l'attestazione potrebbe indicare che l'immagine ha superato tutti i test funzionali end-to-end richiesti in un ambiente di gestione temporanea.

Per attivare le attestazioni in Autorizzazione binaria, il criterio evaluationMode è impostato su REQUIRE_ATTESTATION.

Scopri come creare e utilizzare attestatori e attestazioni.

Firmatari

Un firmatario è una persona o un processo automatizzato che crea un'attestazione firmando un descrittore di immagine univoco con una chiave privata. L'attestazione viene verificata al momento del deployment dalla chiave pubblica corrispondente archiviata in un attestatore prima del deployment dell'immagine associata.

Scopri come creare e utilizzare attestatori e attestazioni.

Attestatori

Un attestatore è una risorsa di Google Cloud che Autorizzazione binaria utilizza per verificare l'attestazione al momento del deployment dell'immagine. Gli attestatori contengono la chiave pubblica che corrisponde alla chiave privata utilizzata da un firmatario per firmare il digest dell'immagine e creare l'attestazione. L'applicazione forzata di Autorizzazione binaria utilizza l'attestatore al momento del deployment per limitare le immagini di cui è possibile eseguire il deployment per quelle con un'attestazione verificabile e di accompagnamento creata prima del deployment.

Gli attestatori sono spesso gestiti da personale delle operazioni di sicurezza che gestisce anche le coppie di chiavi pubbliche e private, mentre i firmatari sono in genere ingegneri software o DevOps o il personale addetto alla conformità responsabili della produzione di immagini di cui è possibile eseguire il deployment, firmandole con la chiave privata e creando le attestazioni prima di tentare di eseguirne il deployment.

Gli attestatori hanno:

Quando configuri un criterio che contiene una regola Richiedi attestazioni, devi aggiungere un attestatore per ogni persona o processo che deve verificare che l'immagine sia pronta per il deployment. Puoi aggiungere attestatori utilizzando la console Google Cloud, l'interfaccia gcloud o l'API REST di Autorizzazione binaria.

Scopri come creare e utilizzare attestatori e attestazioni.

Chiavi crittografiche

Autorizzazione binaria utilizza le firme digitali per verificare le immagini al momento del deployment, quando il criterio contiene una regola Richiedi attestazioni.

Viene generata una coppia di chiavi. La chiave privata viene utilizzata dal firmatario per firmare un descrittore di immagine. Viene creata un'attestazione.

Quindi, nel criterio viene creato e archiviato un attestatore. La chiave pubblica che corrisponde alla chiave privata utilizzata per la firma viene caricata e collegata all'attestatore.

Quando si tenta di eseguire il deployment di un'immagine, Autorizzazione binaria utilizza gli attestatori nel criterio per verificare le attestazioni dell'immagine. Se è possibile verificare l'attestazione, viene eseguito il deployment dell'immagine.

Autorizzazione binaria supporta due tipi di chiavi:

Le chiavi PKIX possono essere archiviate localmente, esternamente o in Cloud Key Management Service.

Crea una chiave di crittografia e un attestatore.

Note di Artifact Analysis

Autorizzazione binaria utilizza Artifact Analysis per archiviare i metadati attendibili utilizzati nel processo di autorizzazione. Per ogni attestatore creato, devi creare una nota Artifact Analysis. Ogni attestazione viene archiviata come occorrenza di questa nota.

Quando Autorizzazione binaria valuta una regola che richiede che gli attestatori abbiano verificato un'immagine, controlla lo spazio di archiviazione di Artifact Analysis per verificare se sono presenti le attestazioni richieste.