Questa pagina contiene informazioni sui concetti relativi all'autorizzazione binaria.
Criteri
Un criterio di Autorizzazione binaria, noto anche come criterio singleton del progetto, è un insieme di regole che regolano il deployment delle immagini container.
Convalida continua (CV), utilizza un tipo diverso di criterio, chiamato criterio della piattaforma.
Un criterio è composto dalle seguenti parti:
- Regole di deployment
- Elenco di immagini esenti
Puoi configurare un criterio utilizzando uno dei seguenti elementi:
- Console Google Cloud
gcloud
comandi
Quando utilizzi i comandi gcloud
, esporti e modifichi una definizione del criterio in formato YAML prima di importarla nuovamente nel progetto. Il formato YAML riflette la struttura interna di un criterio nello spazio di archiviazione di Autorizzazione binaria.
Per ulteriori informazioni su questo formato, consulta
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 a progetto singolo, il criterio e tutte le risorse subordinate, ovvero attestatori e attestazioni, si trovano nello stesso progetto. Per stabilire la separazione dei compiti, puoi utilizzare una configurazione con più progetti. In questa configurazione, la piattaforma di deployment può essere eseguita in un progetto, gli attestatori possono trovarsi in un altro progetto e le attestazioni in un altro ancora.
Per configurare e utilizzare Autorizzazione binaria sulle piattaforme supportate, consulta Configurazione per piattaforma.
Consulta un esempio di configurazione di più progetti per GKE.
Regole
Quando configuri un regolamento, ne definisci le regole. Le regole definiscono vincoli che le immagini devono soddisfare prima di poter essere implementate. Un criterio ha una regola predefinita e può avere regole specifiche, a seconda della piattaforma. Per ulteriori informazioni, consulta Tipi di regole supportati 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 attestato firmato prima di poter essere implementata.
Regola predefinita
Ogni criterio ha una regola predefinita. Questa regola si applica a qualsiasi richiesta di dispiegamento
che non corrisponde 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 Configurare un criterio.
Regole specifiche
A un criterio è possibile aggiungere una o più regole specifiche. Questo tipo di norma si applica alle immagini da implementare in cluster, account di servizio o identità specifici. Il supporto di regole specifiche varia in base alla piattaforma. Per ulteriori informazioni, consulta Tipi di regole supportati per piattaforma.
In un file YAML delle norme, ogni regola specifica per il cluster è specificata in un
clusterAdmissionRule
nodo.
Tipi di regole supportati per piattaforma
La tabella seguente mostra i tipi di regole supportati per ogni piattaforma di deployment.
Piattaforma | Regola predefinita | Regola specifica |
---|---|---|
GKE | Supportato | Cluster Spazi dei nomi Kubernetes Service account Kubernetes |
Cloud Run | Supportato | Non supportata |
Cluster collegati a GKE | Supportato | Cluster Spazi dei nomi Kubernetes Service account Kubernetes |
GKE su AWS | Supportato | Cluster Spazi dei nomi Kubernetes Service account Kubernetes |
Google Distributed Cloud | Supportato | Cluster Spazi dei nomi Kubernetes Service account Kubernetes |
Google Distributed Cloud | Supportato | Cluster Spazi dei nomi Kubernetes Service account Kubernetes |
Cloud Service Mesh | Supportato | Identità di servizio 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 di 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 alcuna immagine:impedisce il deployment di tutte le immagini.
- Richiedi attestazioni:richiede a un firmatario di firmare digitalmente il digest dell'immagine e di 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 intrapresa da GKE quando un'immagine non è conforme alla regola. Una regola può avere le seguenti modalità di applicazione:
Blocca e log di controllo: blocca il deployment delle immagini non conformi alla regola e scrive un messaggio nel log di controllo per indicare il motivo per cui l'immagine non è stata dispiata.
Prova: solo log di controllo: la modalità di prova è una modalità di applicazione forzata in un criterio che consente di eseguire il deployment di immagini non conformi, ma scrive i dettagli sul deployment in Cloud Audit Logs. La modalità di prova ti consente di testare un criterio, ad esempio nell'ambiente di produzione, prima che l'applicazione venga effettivamente applicata.
La maggior parte delle regole di produzione utilizza la modalità di applicazione Blocca e log di controllo. Simulazione: solo log di controllo viene utilizzato principalmente per testare un criterio nel tuo ambiente prima che venga applicato.
La modalità di applicazione di una regola viene specificata utilizzando la proprietà
enforcementMode
nel
file YAML del criterio.
Per ulteriori informazioni sui messaggi scritti negli audit log di Cloud, consulta Visualizzare gli audit log (GKE, Google Distributed Cloud, Cloud Service Mesh) o Visualizzare gli audit log (Cloud Run).
Convalida continua
La convalida continua (CV) è una funzionalità di Autorizzazione binaria che controlla periodicamente le immagini associate ai pod in esecuzione per verificare la conformità continua ai criteri.
Immagini esenti
Un'immagine esente è un'immagine esente dalle regole delle norme.
Autorizzazione binaria consente sempre il deployment delle immagini esenti. Ogni progetto ha una lista consentita di immagini esenti specificata dal percorso del registry. Le immagini nel percorsogcr.io/google_containers/*
, k8s.gcr.io/**
e in percorsi aggiuntivi sono esenti per impostazione predefinita, in quanto contengono le risorse necessarie per consentire a GKE di avviare correttamente un cluster con il criterio predefinito attivo.
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 esentare 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 nel registry corrisponde al percorso specificato:
gcr.io/example-project/*
Per inserire nella lista consentita tutte le immagini la cui posizione nel Registro di sistema è una sottodirectory del percorso specificato (ad es. gcr.io/example-project/my-directory/helloworld
):
gcr.io/example-project/**
Per inserire nella lista consentita un'immagine specifica:
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/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 relativo digest:
gcr.io/example-project/helloworld@sha256:77b0b75136b9bd0fd36fb50f4c92ae0dbdbbe164ab67885e736fa4374e0cbb8c
Scopri di più sull'utilizzo dei digest 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
L'opzione Accetta tutte le immagini di sistema gestite da Google consente all'Autorizzazione binaria di esentare un elenco di immagini di sistema gestite da Google da un'ulteriore valutazione dei criteri. Quando questa impostazione è attivata, 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 dell'utente.
Puoi attivare o disattivare questa impostazione utilizzando la proprietà
globalPolicyEvaluationMode
nel file YAML dei criteri. 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.
La procedura di creazione di un'attestazione è talvolta chiamata firma di un'immagine. Un'attestazione viene creata dopo la compilazione di un'immagine. Ogni immagine di questo tipo 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. Al momento del deployment, l'applicazione di Autorizzazione binaria utilizza la chiave pubblica dell'attestatore per verificare la firma nell'attestazione. In genere, un attestatore corrisponde esattamente a un firmatario.
Un'attestazione indica che l'immagine associata è stata creata tramite l'esecuzione corretta di una procedura specifica richiesta. Ad esempio, se la firma è stata apposta da 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 staging.
Per abilitare le attestazioni in Autorizzazione binaria, evaluationMode
del criterio è 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 immagini univoco con una chiave privata. L'attestazione viene verificata al momento del deployment tramite la 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 Google Cloud utilizzata da Autorizzazione binaria per verificare la 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'implementatore di Autorizzazione binaria utilizza l'attestatore al momento del deployment per limitare le immagini di cui è consentito il deployment a quelle con un'attestazione verificabile associata creata prima del deployment.
Gli attestatori sono spesso gestiti dal personale addetto alle operazioni di sicurezza che gestisce anche le coppie di chiavi pubbliche e private, mentre i firmatari sono in genere ingegneri software o personale di QA o conformità DevOps responsabile della produzione di immagini di cui è possibile eseguire il deployment, della loro firma con la chiave privata e della creazione delle attestazioni prima di tentare di eseguirne il deployment.
Gli attestatori hanno:
- Una nota di Artifact Analysis corrispondente
- Una o più chiavi pubbliche crittografiche che corrispondono alla chiave privata utilizzata dal firmatario per creare un'attestazione.
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 immagini. Viene creata un'attestazione.
Viene quindi creato e archiviato nel criterio un attestatore. La chiave pubblica corrispondente alla chiave privata utilizzata per la firma viene caricata e collegata all'attestatore.
Quando viene eseguito un tentativo di deployment di un'immagine, Autorizzazione binaria utilizza gli attestatori nel criterio per verificare le attestazioni dell'immagine. Se l'attestazione può essere verificata, l'immagine viene dispiata.
L'autorizzazione binaria supporta due tipi di chiavi:
- Infrastruttura a chiave pubblica (X.509) (PKIX)
- PGP
Le chiavi PKIX possono essere archiviate localmente, esternamente o in Cloud Key Management Service.
Crea una chiave crittografica e un attestatore.
Note di Artifact Analysis
Autorizzazione binaria utilizza Artifact Analysis per archiviare i metadati attendibili utilizzati nella procedura di autorizzazione. Per ogni attestatore che crei, devi creare una nota di 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.