Autorizzazione binaria per Google Distributed Cloud è una Google Cloud funzionalità che estende l'applicazione ospitata e in fase di deployment di Autorizzazione binaria ai cluster on-premise. Il caso d'uso principale di Autorizzazione binaria su Google Distributed Cloud è la protezione dei carichi di lavoro, ma Autorizzazione binaria funziona con tutti i tipi di cluster. Segui i passaggi descritti in questa guida per applicare le regole di applicazione di un criterio di Autorizzazione binaria configurato nel tuo Google Cloud progetto ai tuoi cluster. Per saperne di più sui criteri e sulle regole di Autorizzazione binaria, consulta la panoramica di Autorizzazione binaria.
Prerequisiti
Prima di poter abilitare l'applicazione dei criteri di Autorizzazione binaria per un cluster, assicurati di aver soddisfatto i seguenti criteri di prerequisito:
Registra il cluster in un parco risorse: un cluster creato con
bmctl, il cluster viene registrato nel Google Cloud progetto che specifichi in nel campogkeConnect.projectIDnel file di configurazione del cluster. Questo progetto è denominato progetto host del parco risorse. Per saperne di più sui parchi risorse, inclusi casi d'uso, best practice ed esempi, consulta la documentazione sulla gestione dei parchi risorse.Abilita l'API Autorizzazione binaria nel tuo Google Cloud progetto: abilita il servizio Autorizzazione binaria nel progetto host del parco risorse.
Aggiungi il ruolo di valutatore dei criteri di Autorizzazione binaria al progetto host del parco risorse: per concedere il ruolo di valutatore dei criteri di Autorizzazione binaria (
roles/binaryauthorization.policyEvaluator) al service account Kubernetes nel progetto host del parco risorse, esegui il seguente comando:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \ --role="roles/binaryauthorization.policyEvaluator"Se il cluster è in esecuzione dietro un server proxy, assicurati che il server proxy consenta le connessioni all'API Autorizzazione binaria (
binaryauthorization.googleapis.com). Questa API fornisce la convalida e il controllo del deployment basati su criteri per le immagini di cui è stato eseguito il deployment nel cluster. Per saperne di più sull'utilizzo di una configurazione proxy, consulta Installazione dietro un proxy.
Una volta soddisfatti i prerequisiti, puoi abilitare (o disabilitare) il criterio di Autorizzazione binaria quando crei un nuovo cluster o aggiorni un cluster esistente.
Abilitare il criterio di Autorizzazione binaria durante la creazione del cluster
Puoi abilitare l'applicazione dei criteri di Autorizzazione binaria con bmctl o gcloud CLI.
bmctl
Per abilitare Autorizzazione binaria quando crei un cluster con bmctl:
Prima di creare il cluster, aggiungi
spec.binaryAuthorization.evaluationModeal file di configurazione del cluster, come mostrato nell'esempio seguente:... --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-basic namespace: cluster-user-basic spec: type: user ... binaryAuthorization: evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"I valori consentiti per
evaluationModesono:PROJECT_SINGLETON_POLICY_ENFORCE: applica le regole specificate nel criteriodi Autorizzazione binaria, noto anche comecriterio singleton del progetto , al tuo Google Cloud progetto per controllare il deployment delle immagini container nel cluster.DISABLE: disabilita l'utilizzo di Autorizzazione binaria per il cluster. Questo è il valore predefinito. Se omettibinaryAuthorization, la funzionalità è disabilitata.
Apporta eventuali altre modifiche necessarie nel file di configurazione del cluster, quindi esegui il comando
bmctl create cluster.
Per saperne di più sulla creazione di cluster, consulta la panoramica sulla creazione di cluster.
gcloud CLI
Per creare un cluster utente e abilitare Autorizzazione binaria, aggiungi il flag
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCEquando esegui il comandogcloud container bare-metal clusters create.Viene creato un cluster utente che applica le regole specificate nel criterio di Autorizzazione binaria, noto anche come criterio singleton del progetto. Questo criterio è associato al tuo Google Cloud progetto e specifica le regole per controllare il deployment delle immagini container. Per saperne di più sull'utilizzo di gcloud CLI per creare un cluster utente, consulta Creare un cluster utente utilizzando i client API GKE On-Prem. Per saperne di più sui criteri e sulle regole di Autorizzazione binaria, consulta la panoramica di Autorizzazione binaria.
Abilitare o disabilitare il criterio di Autorizzazione binaria per un cluster esistente
Se hai un cluster esistente versione 1.16 o successive, puoi abilitare o disabilitare Autorizzazione binaria in qualsiasi momento utilizzando bmctl o gcloud CLI.
bmctl
Per abilitare l'opzione:
Modifica il file di configurazione del cluster per aggiungere i campi
binaryAuthorization:... --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-basic namespace: cluster-user-basic spec: type: user ... binaryAuthorization: evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"Aggiorna il cluster:
bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIGSostituisci quanto segue:
CLUSTER_NAME: il nome del cluster da aggiornare.CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster.
Attendi che il deployment denominato
binauthz-module-deploymentnello spazio dei nomibinauthz-systemdiventi pronto.Quando il deployment è pronto, Autorizzazione binaria applica le regole specificate nel criterio di Autorizzazione binaria, noto anche come criterio singleton del progetto. Questo criterio è associato al tuo Google Cloud progetto e specifica le regole per controllare il deployment delle immagini container. Per saperne di più sull'utilizzo di
bmctlper aggiornare un cluster, consulta Aggiornare i cluster. Per saperne di più sui criteri e sulle regole di Autorizzazione binaria, consulta la panoramica di Autorizzazione binaria.
Per disabilitare l'opzione:
Questa funzionalità può essere disattivata impostando
evaluationModesuDISABLEDo rimuovendo la sezionebinaryAuthorizationdalla specifica del cluster. Una volta apportata questa modifica, attendi alcuni minuti finché non viene rimosso il deployment denominatobinauthz-module-deploymentnello spazio dei nomibinauthz-system.
gcloud CLI
Per abilitare Autorizzazione binaria per un cluster esistente, aggiungi il flag
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCEquando esegui il comandogcloud container bare-metal clusters update.Viene aggiornato un cluster utente in modo che Autorizzazione binaria applichi le regole specificate nel criterio di Autorizzazione binaria, noto anche come criterio singleton del progetto. Questo criterio è associato al tuo Google Cloud progetto e specifica le regole per controllare il deployment delle immagini container. Per saperne di più sull'utilizzo di gcloud CLI per aggiornare un cluster utente, consulta gcloud container bare-metal clusters update nella documentazione di riferimento di gcloud CLI. Per saperne di più sui criteri e sulle regole di Autorizzazione binaria, consulta la panoramica di Autorizzazione binaria.
Per disabilitare Autorizzazione binaria per un cluster esistente, esegui il comando
gcloud container bare-metal clusters updatecon il flag--binauthz-evaluation-mode=DISABLED.
Risoluzione dei problemi
Se non completi tutti i prerequisiti, potresti non
vedere alcuna indicazione precoce di un problema. Se Autorizzazione binaria non risponde più alle richieste di creazione dei pod, controlla status.conditions per ReplicaSet. Un messaggio simile al seguente indica che si è verificato un problema con la configurazione di Autorizzazione binaria:
failed to validate Binary Authorization policy (1) Ensure the Binary Authorization API is enabled for your Google Cloud project: gcloud services enable binaryauthorization.googleapis.com --project=PROJECT_ID (2) Ensure an IAM policy binding is in place granting binaryauthorization.policyEvaluator role to the binauthz-system/binauthz-agent Kubernetes service account: gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \ --role=roles/binaryauthorization.policyEvaluator