Questa pagina fornisce istruzioni su come utilizzare la funzionalità di emergenza con Autorizzazione binaria.
Prima di iniziare
Questa guida presuppone che tu abbia configurato l'autorizzazione binaria.
Panoramica
Utilizzi breakglass per eseguire il deployment di un'immagine container bloccata da Autorizzazione binaria.
La funzionalità di emergenza consente di ignorare l'applicazione dei criteri di Autorizzazione binaria per consentire il deployment delle immagini, anche quelle vietate dai criteri.
Questa funzionalità è implementata in conformità con i consigli riportati nella specifica del controller di ammissione di Kubernetes.
Quando utilizzi il comando breakglass per eseguire il deployment di un'immagine, un evento breakglass viene registrato automaticamente in Cloud Audit Logs, indipendentemente dal fatto che il deployment soddisfi o violi il criterio. In Cloud Audit Logs, puoi eseguire manualmente un controllo o attivare automaticamente un avviso o un altro evento a valle.
Per attivare la funzionalità di emergenza, aggiungi un campo label
alla specifica del pod con un flag di criterio break-glass
.
Dimostrare un evento di emergenza
Questa sezione mostra come utilizzare la funzionalità di emergenza per eseguire il deployment di immagini, incluse quelle che violano i criteri di Autorizzazione binaria.
Aggiorna la policy di Autorizzazione binaria per rifiutare tutte le richieste di deployment
Per aggiornare il criterio in modo da non consentire il deployment di tutte le immagini, svolgi i seguenti passaggi:
Console Google Cloud
Vai alla pagina Autorizzazione binaria nella console Google Cloud.
Fai clic su Modifica criterio.
Nella pagina Modifica criterio, 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 criterio.
gcloud
Per salvare il criterio 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 criteri:
cat > TEST_POLICY_YAML << EOM admissionWhitelistPatterns: defaultAdmissionRule: enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG evaluationMode: ALWAYS_DENY globalPolicyEvaluationMode: DISABLE EOM
Sostituisci TEST_POLICY_YAML con il percorso di un file, ad esempio
/tmp/policy.yaml
.Importa il criterio:
gcloud container binauthz policy import TEST_POLICY_YAML
Sostituisci TEST_POLICY_YAML con il percorso di un file, ad esempio
/tmp/policy.yaml
.
Per impostazione predefinita, il deployment di tutte le immagini è ora bloccato.
Tentativo di eseguire il deployment di un'immagine
In questa sezione, tenterai di eseguire il deployment di un'immagine. La regola predefinita del criterio è configurata per non consentire il deployment di tutte le immagini, pertanto 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: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4 EOM
Crea il pod utilizzando
kubectl
:kubectl create -f /tmp/create_pod.yaml
Viene visualizzato un messaggio di errore che indica che l'immagine è stata bloccata dalle tue norme. 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`.
Attiva il deployment di emergenza e esegui nuovamente il deployment
In questa sezione attivi la funzionalità di emergenza. Anche se la funzionalità breakglass è specifica per Autorizzazione binaria, devi aggiornare il campo label
nella specifica del pod per attivarla.
Per attivare la funzionalità di emergenza, esegui i seguenti comandi:
Crea un file di configurazione in formato YAML.
Il seguente comando crea il file contenente l'etichetta
break-glass
e 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: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4 EOM
Crea il pod utilizzando
kubectl
:kubectl create -f /tmp/create_pod.yaml
Nota l'output:
pod/pod-name created
Trovare la voce di log di emergenza in Cloud Audit Logs
Visualizza gli eventi di emergenza in Cloud Audit Logs.
Anche le specifiche Pod precedenti che specificano annotations: alpha.image-policy.k8s.io/break-glass
attivano il breakglass e producono voci di log. L'utilizzo di questa annotazione non è più consigliato, ma è ancora supportato per mantenere la compatibilità con le versioni precedenti.
Esegui la pulizia
Per eliminare il pod e disattivare la funzionalità di emergenza, segui questi passaggi:
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
label
dalla specifica del pod.Reimposta le norme:
Console Google Cloud
Vai alla pagina Autorizzazione binaria nella console Google Cloud.
Fai clic su Modifica criterio.
Nella pagina Modifica criterio, in Regola predefinita del progetto, reimposta la modalità di valutazione sull'impostazione precedente.
Fai clic su Salva criterio.
gcloud
Reimporta le norme originali.
gcloud container binauthz policy import SAVE_POLICY_YAML
Sostituisci SAVE_POLICY_YAML con il percorso del file che hai creato in precedenza in questa guida.
Le tue norme vengono reimpostate.
Passaggi successivi
- Visualizza gli eventi di emergenza in Cloud Audit Logs.