Questa pagina fornisce istruzioni sull'utilizzo di breakglass con Autorizzazione binaria.
Prima di iniziare
Questa guida presuppone che tu abbia configurato Autorizzazione binaria.
Panoramica
Utilizza breakglass per eseguire il deployment di un'immagine container bloccata da Autorizzazione binaria.
Breakglass fornisce una via di fuga di emergenza che ti consente di ignorare l'applicazione della policy di Autorizzazione binaria per consentire il deployment delle immagini, anche di quelle che non sarebbero consentite dalla policy.
Questa funzionalità viene implementata in conformità con le raccomandazioni nella specifica del controller di ammissione di Kubernetes.
Quando utilizzi breakglass per eseguire il deployment di un'immagine, viene registrato automaticamente un evento breakglass in Cloud Audit Logs, indipendentemente dal fatto che il deployment soddisfi o violi la policy. In Cloud Audit Logs, puoi eseguire manualmente un audit o attivare automaticamente un avviso o un altro evento downstream.
Per abilitare breakglass, aggiungi un campo label alla specifica del pod con un flag della policy break-glass.
Dimostrare un evento breakglass
Questa sezione mostra come utilizzare breakglass per eseguire il deployment delle immagini, incluse quelle che violano la policy di Autorizzazione binaria.
Aggiornare la policy di Autorizzazione binaria per rifiutare tutte le richieste di deployment
Per aggiornare la policy in modo da impedire il deployment di tutte le immagini:
Google Cloud Console
Vai alla pagina Autorizzazione binaria nella Google Cloud console.
Fai clic su Modifica policy.
Nella pagina Modifica policy, in Regola predefinita del progetto, prendi nota della modalità di valutazione originale, quindi fai clic su Non consentire tutte le immagini.
Fai clic su Salva policy.
gcloud
Per salvare la policy esistente nel progetto corrente, esegui il comando seguente:
gcloud container binauthz policy export > SAVE_POLICY_YAML
Sostituisci SAVE_POLICY_YAML con il percorso del file di esportazione, ad esempio,
/tmp/save_policy.yaml.Crea un file di policy:
cat > TEST_POLICY_YAML << EOM admissionWhitelistPatterns: defaultAdmissionRule: enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG evaluationMode: ALWAYS_DENY globalPolicyEvaluationMode: DISABLE EOM
Sostituisci TEST_POLICY_YAML con un percorso file, ad esempio,
/tmp/policy.yaml.Importa la policy:
gcloud container binauthz policy import TEST_POLICY_YAMLSostituisci TEST_POLICY_YAML con un percorso file, ad esempio,
/tmp/policy.yaml.
Per impostazione predefinita, ora il deployment di tutte le immagini è bloccato.
Tentare di eseguire il deployment di un'immagine
In questa sezione tenterai di eseguire il deployment di un'immagine. La regola predefinita della policy è configurata in modo da impedire il deployment di tutte le immagini, quindi la richiesta di deployment non va a buon fine.
Crea un file di configurazione in formato YAML. Questo file contiene le informazioni di base necessarie per creare il pod:
cat > /tmp/create_pod.yaml << EOM apiVersion: v1 kind: Pod metadata: name: breakglass-pod spec: containers: - name: container-name image: us-docker.pkg.dev/google-samples/containers/gke/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4 EOMCrea il pod utilizzando
kubectl:kubectl create -f /tmp/create_pod.yaml
Viene visualizzato un errore che indica che l'immagine è stata bloccata dalla policy. L'errore è simile al seguente:
Error from server (Forbidden): error when creating "/tmp/create_pod.yaml": pods "breakglass-pod" is forbidden: image policy webhook backend denied one or more images: Image gcr.io/google-samples/hello-app denied by Binary Authorization default admission rule. Denied by always_deny admission rule`.
Abilitare breakglass ed eseguire di nuovo il deployment
In questa sezione abiliterai breakglass. Sebbene breakglass sia specifico per Autorizzazione binaria, devi aggiornare il campo label nella specifica del pod per abilitarlo.
Per abilitare breakglass, esegui i seguenti comandi:
Crea un file di configurazione in formato YAML.
Il comando seguente crea il file contenente l'etichetta
break-glasse altre informazioni necessarie per creare il pod:cat > /tmp/create_pod.yaml << EOM apiVersion: v1 kind: Pod metadata: name: pod-name labels: image-policy.k8s.io/break-glass: "true" spec: containers: - name: container-name image: us-docker.pkg.dev/google-samples/containers/gke/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4 EOMCrea il pod utilizzando
kubectl:kubectl create -f /tmp/create_pod.yaml
Prendi nota dell'output:
pod/pod-name created
Trovare la voce di log di breakglass in Cloud Audit Logs
Visualizza gli eventi breakglass in Cloud Audit Logs.
Anche le PodSpec precedenti che specificano annotations: alpha.image-policy.k8s.io/break-glass attivano breakglass e generano voci di log. L'utilizzo di questa annotazione non è più consigliato, ma è ancora supportato per mantenere la compatibilità con le versioni precedenti.
Libera spazio
Per eliminare il pod e disabilitare breakglass:
Elimina il pod:
kubectl delete -f /tmp/create_pod.yaml
Verifica di aver ricevuto un output simile a
pod <var>pod-name</var> deleted.Rimuovi il blocco
labeldalla specifica del pod.Reimposta la policy:
Google Cloud Console
Vai alla pagina Autorizzazione binaria nella Google Cloud console.
Fai clic su Modifica policy.
Nella pagina Modifica policy, in Regola predefinita del progetto, reimposta la modalità di valutazione sull'impostazione precedente.
Fai clic su Salva policy.
gcloud
Reimporta la policy originale.
gcloud container binauthz policy import SAVE_POLICY_YAMLSostituisci SAVE_POLICY_YAML con il percorso del file che hai creato in precedenza in questa guida.
La policy viene reimpostata.
Passaggi successivi
- Visualizza gli eventi breakglass in Cloud Audit Logs.