Questa pagina fornisce istruzioni sull'utilizzo di deployment di emergenza con Autorizzazione binaria.
Prima di iniziare
Questa guida presuppone che tu abbia configurato Autorizzazione binaria.
Panoramica
Puoi utilizzare il deployment di emergenza per eseguire il deployment di un'immagine container che Autorizzazione binaria blocca.
Il deployment di emergenza fornisce un'uscita di emergenza che consente di eseguire l'override dell'applicazione del criterio di Autorizzazione binaria per consentire il deployment delle immagini, anche quelle non consentite dal criterio.
Questa funzionalità è implementata in modo coerente con i suggerimenti della specifica del controller di ammissione Kubernetes.
Quando utilizzi il deployment di emergenza per eseguire il deployment di un'immagine, un evento di deployment di emergenza viene automaticamente registrato in Cloud Audit Logs, indipendentemente dal fatto che il deployment soddisfi o violi il criterio. In Cloud Audit Logs puoi controllare manualmente o attivare automaticamente un avviso o un altro evento downstream.
Per abilitare il deployment di emergenza, aggiungi un campo label
alla specifica del pod con un flag del criterio break-glass
.
Dimostrare un evento di emergenza
Questa sezione mostra come utilizzare il deployment di emergenza per eseguire il deployment delle immagini, incluse quelle che violano il criterio di Autorizzazione binaria.
Aggiorna il criterio 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, segui questi 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 questo comando:
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 un percorso file, ad esempio
/tmp/policy.yaml
.Importa la norma:
gcloud container binauthz policy import TEST_POLICY_YAML
Sostituisci TEST_POLICY_YAML con un percorso 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 proverai a eseguire il deployment di un'immagine. La regola predefinita del criterio è configurata in modo da non consentire il deployment di tutte le immagini, quindi la richiesta di deployment non va a buon fine.
Creare 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
Visualizzi un errore che indica che l'immagine è stata bloccata in base alle norme in vigore. 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`.
Abilita deployment di emergenza ed esegui di nuovo il deployment
In questa sezione abiliti il deployment di emergenza. Sebbene il deployment di emergenza sia specifico per Autorizzazione binaria, devi aggiornare il campo label
nella specifica del pod per abilitarlo.
Per abilitare i deployment di emergenza, esegui questi comandi:
Creare 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
Per tutte le versioni precedenti del master di Kubernetes, puoi abilitare il deployment di emergenza aggiungendo
alpha.image-policy.k8s.io/break-glass
al nodoannotations
, come segue:cat > /tmp/create_pod.yaml << EOM apiVersion: v1 kind: Pod metadata: name: pod-name annotations: alpha.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
Prendi nota dell'output:
pod/pod-name created
Trovare la voce di log di deployment di emergenza in Cloud Audit Logs
Visualizza gli eventi per deployment di emergenza in Audit log di Cloud.
Esegui la pulizia
Per eliminare il pod e disabilitare il deployment di emergenza:
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
oannotations
dalla specifica del pod.Reimposta il criterio:
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 all'impostazione precedente.
Fai clic su Salva criterio.
gcloud
Reimporta la norma originale.
gcloud container binauthz policy import SAVE_POLICY_YAML
Sostituisci SAVE_POLICY_YAML con il percorso del file creato in precedenza in questa guida.
Il criterio è stato reimpostato.
Passaggi successivi
- Visualizza gli eventi per deployment di emergenza in Audit log di Cloud.