Utilizzare deployment di emergenza (GKE)

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina fornisce istruzioni sull'uso del vetro di emergenza con Autorizzazione binaria.

Prima di iniziare

Questa guida presuppone che tu abbia configurato l'Autorizzazione binaria.

Panoramica

Puoi utilizzare breakglass per eseguire il deployment di un'immagine container che viene bloccata da Autorizzazione binaria.

Breakglass offre un riquadro di uscita di emergenza che consente di ignorare l'applicazione dei criteri di autorizzazione binaria per consentire il deployment delle immagini, anche quelle che non sarebbero consentite dal criterio.

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

Quando utilizzi il deployment di emergenza per il deployment di un'immagine, un evento di emergenza viene automaticamente registrato a 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 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 cui eseguire il deployment

Per aggiornare il criterio e impedire il deployment di tutte le immagini, procedi nel seguente modo:

console Google Cloud

  1. Vai alla pagina Autorizzazione binaria in Google Cloud Console.

    Vai ad Autorizzazione binaria

  2. Fai clic su Modifica criterio.

  3. Nella pagina Modifica criterio, in Regola predefinita di progetto, annota la modalità di valutazione originale, quindi fai clic su Non consentire tutte le immagini.

  4. Fai clic su Salva criterio.

gcloud

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

  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 il criterio:

    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 è bloccato.

Prova a eseguire il deployment di un'immagine

In questa sezione tenti di eseguire il deployment di un'immagine. La regola predefinita del criterio è configurata in modo da impedire il deployment di tutte le immagini, pertanto la richiesta di deployment non riesce.

  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: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    
  2. Crea il pod utilizzando kubectl:

    kubectl create -f /tmp/create_pod.yaml
    

    È stato visualizzato un errore che indica che l'immagine è stata bloccata dai criteri. 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

In questa sezione attivi il deployment di emergenza. Anche se il emergenza è specifico per Autorizzazione binaria, devi aggiornare il campo label nella specifica del pod per abilitarlo.

Per abilitare il deployment di emergenza, esegui questi 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: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
    EOM
    

    Per tutte le versioni precedenti di Kubernetes, puoi abilitare il deployment di emergenza aggiungendo alpha.image-policy.k8s.io/break-glass al nodo annotations, 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
    
  2. Crea il pod utilizzando kubectl:

    kubectl create -f /tmp/create_pod.yaml
    

    Osserva l'output: pod/pod-name created

Individua la voce di log di emergenza in Cloud Audit Logs

Visualizza gli eventi di emergenza in Cloud Audit Logs.

Esegui la pulizia

Per eliminare il pod e disattivare il deployment di emergenza, procedi nel seguente modo:

  1. Elimina il pod:

      kubectl delete -f /tmp/create_pod.yaml
      

    Verifica di aver ricevuto l'output, ad esempio pod <var>pod-name</var> deleted.

  2. Rimuovi il blocco label o annotations dalla specifica del pod.

  3. Reimposta il criterio:

    console Google Cloud

    1. Vai alla pagina Autorizzazione binaria in Google Cloud Console.

      Vai ad Autorizzazione binaria

    2. Fai clic su Modifica criterio.

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

    4. Fai clic su Salva criterio.

    gcloud

    1. Reimporta il criterio 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