Utilizzare il deployment di emergenza (GKE, Distributed Cloud)

Questa pagina fornisce istruzioni sull'utilizzo di breakglass con Autorizzazione binaria.

Prima di iniziare

Questa guida presuppone che tu abbia configurato Autorizzazione binaria.

Panoramica

Utilizzi breakglass per eseguire il deployment di un'immagine container bloccata da Autorizzazione binaria.

Il deployment di emergenza fornisce una scappatoia di emergenza che ti consente di ignorare l'applicazione dei criteri di Autorizzazione binaria per consentire il deployment delle immagini, anche di quelle che non sarebbero consentite dai criteri.

Questa funzionalità è implementata in modo coerente con i consigli nella specifica del controller di ammissione di Kubernetes.

Quando utilizzi Break-Glass per eseguire il deployment di un'immagine, un evento Break-Glass viene registrato automaticamente in Cloud Audit Logs, indipendentemente dal fatto che il deployment soddisfi o violi la policy. In Cloud Audit Logs, puoi eseguire manualmente l'audit o attivare automaticamente un avviso o un altro evento downstream.

Per attivare l'accesso di emergenza, aggiungi un campo label alla specifica del pod con un flag di policy break-glass.

Mostrare un evento di emergenza

Questa sezione mostra come utilizzare Breakglass per eseguire il deployment di immagini, incluse quelle che violano le norme di autorizzazione binaria.

Aggiorna 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, segui questi passaggi:

Console Google Cloud

  1. Vai alla pagina Autorizzazione binaria nella console Google Cloud .

    Vai all'autorizzazione binaria

  2. Fai clic su Modifica policy.

  3. 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.

  4. Fai clic su Salva policy.

gcloud

  1. Per salvare la policy 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.

  2. Creare 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.

  3. Importa la policy:

    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 deployment di un'immagine

In questa sezione tenti di eseguire il deployment di un'immagine. La regola predefinita del criterio è configurata per impedire il deployment di tutte le immagini, pertanto la richiesta di deployment non va a buon fine.

  1. 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
    EOM
    
  2. Crea il pod utilizzando kubectl:

    kubectl create -f /tmp/create_pod.yaml
    

    Viene visualizzato un 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`.

Abilitare il deployment di emergenza e riprovare

In questa sezione attivi la procedura di emergenza. Sebbene la procedura di emergenza sia specifica per Autorizzazione binarian, devi aggiornare il campo label nella specifica del pod per abilitarla.

Per abilitare Break-Glass, esegui i seguenti comandi:

  1. Crea un file di configurazione in formato YAML.

    Il comando seguente 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: us-docker.pkg.dev/google-samples/containers/gke/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    
  2. 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 emergenza in Cloud Audit Logs

Visualizza gli eventi di emergenza in Cloud Audit Logs.

Le PodSpec precedenti che specificano annotations: alpha.image-policy.k8s.io/break-glass attivano anche 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 procedura di emergenza:

  1. Elimina il pod:

      kubectl delete -f /tmp/create_pod.yaml
      

    Verifica di aver ricevuto un output simile a pod <var>pod-name</var> deleted.

  2. Rimuovi il blocco label dalla specifica del pod.

  3. Reimposta la policy:

    Console Google Cloud

    1. Vai alla pagina Autorizzazione binaria nella console Google Cloud .

      Vai all'autorizzazione binaria

    2. Fai clic su Modifica policy.

    3. Nella pagina Modifica criterio, in Regola predefinita del progetto, reimposta la modalità di valutazione all'impostazione precedente.

    4. Fai clic su Salva policy.

    gcloud

    1. 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