Break-Glass verwenden (GKE, Distributed Cloud)

Diese Seite enthält Anweisungen zur Verwendung des Break-Glass-Features mit der Binärautorisierung.

Hinweis

In diesem Leitfaden wird davon ausgegangen, dass Sie die Binärautorisierung eingerichtet haben.

Übersicht

Mit Break-Glass stellen Sie ein Container-Image bereit, das von der Binärautorisierung blockiert wird.

Break-Glass bietet eine Ausstiegsmöglichkeit für den Notfall, mit der Sie die Richtlinienerzwingung für Binärautorisierungen überschreiben können, um von der Richtlinie nicht zugelassene Images bereitzustellen.

Dieses Feature wird gemäß den Empfehlungen in der Kubernetes-Spezifikation für den Admission-Controller implementiert.

Wenn Sie zum Bereitstellen eines Images Break-Glass verwenden, wird automatisch ein Ausnahmezugriffsereignis in Cloud-Audit-Logs protokolliert, unabhängig davon, ob die Bereitstellung die Richtlinie erfüllt oder verletzt. In Cloud-Audit-Logs können Sie eine Warnung oder ein anderes nachgelagertes Ereignis manuell prüfen oder automatisch auslösen.

Zum Aktivieren von Break-Glass fügen Sie der Pod-Spezifikation ein label-Feld mit dem Richtlinien-Flag break-glass hinzu.

Break-Glass-Ereignis demonstrieren

In diesem Abschnitt erfahren Sie, wie Sie mit Break-Glass Images bereitstellen, einschließlich Images, die gegen die Richtlinie zur Binärautorisierung verstoßen.

Richtlinie für die Binärautorisierung aktualisieren, um alle Deployment-Anfragen abzulehnen

So aktualisieren Sie die Richtlinie, um die Bereitstellung aller Images zu verbieten:

Google Cloud Console

  1. Rufen Sie in der Google Cloud Console die Seite "Binärautorisierung" auf.

    Zur Binärautorisierung

  2. Klicken Sie auf Richtlinie bearbeiten.

  3. Notieren Sie sich den ursprünglichen Auswertungsmodus auf der Seite Richtlinie bearbeiten in der Projektstandardregel. Klicken Sie dann auf Alle Images nicht zulassen.

  4. Klicken Sie auf Richtlinie speichern.

gcloud

  1. Führen Sie den folgenden Befehl aus, um die vorhandene Richtlinie im aktuellen Projekt zu speichern:

    gcloud container binauthz policy export > SAVE_POLICY_YAML
    

    Ersetzen Sie SAVE_POLICY_YAML durch den Pfad der Exportdatei, z. B. /tmp/save_policy.yaml.

  2. Richtliniendatei erstellen

    cat > TEST_POLICY_YAML << EOM
    admissionWhitelistPatterns:
    defaultAdmissionRule:
      enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
      evaluationMode: ALWAYS_DENY
    globalPolicyEvaluationMode: DISABLE
    EOM
    

    Ersetzen Sie TEST_POLICY_YAML durch einen Dateipfad, z. B. /tmp/policy.yaml.

  3. Importieren Sie die Richtlinie:

    gcloud container binauthz policy import TEST_POLICY_YAML
    

    Ersetzen Sie TEST_POLICY_YAML durch einen Dateipfad, z. B. /tmp/policy.yaml.

Standardmäßig werden alle Images jetzt nicht mehr bereitgestellt.

Versuch, ein Image bereitzustellen

In diesem Abschnitt versuchen Sie, ein Image bereitzustellen. Die Standardregel der Richtlinie ist so konfiguriert, dass alle Images nicht bereitgestellt werden können, sodass die Bereitstellungsanfrage fehlschlägt.

  1. Erstellen Sie eine Konfigurationsdatei im YAML-Format. Diese Datei enthält alle grundlegenden Informationen, die zum Erstellen des Pods erforderlich sind:

    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. Erstellen Sie den Pod mit kubectl:

    kubectl create -f /tmp/create_pod.yaml
    

    Sie sehen eine Fehlermeldung, die darauf hinweist, dass das Image von Ihrer Richtlinie blockiert wurde. Der Fehler sieht in etwa so aus:

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

Break-Glass aktivieren und noch einmal bereitstellen

In diesem Abschnitt aktivieren Sie Break-Glass. Obwohl Break-Glass nur für die Binärautorisierung gilt, müssen Sie das label-Feld in der Pod-Spezifikation aktualisieren, um es zu aktivieren.

Führen Sie folgende Befehle aus, um Break-Glass zu aktivieren:

  1. Erstellen Sie eine Konfigurationsdatei im YAML-Format.

    Mit dem folgenden Befehl wird die Datei mit dem Label break-glass und anderen Informationen erstellt, die zum Erstellen des Pods erforderlich sind:

    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
    
  2. Erstellen Sie den Pod mit kubectl:

    kubectl create -f /tmp/create_pod.yaml
    

    Schauen Sie sich die Ausgabe an: pod/pod-name created

In Cloud-Audit-Logs nach dem Break-Glass-Logeintrag suchen

Sehen Sie sich Break-Glass-Ereignisse in Cloud-Audit-Logs an.

Ältere PodSpecs, die annotations: alpha.image-policy.k8s.io/break-glass angeben, lösen auch Break-Glass aus und erzeugen Logeinträge. Die Verwendung dieser Annotation wird nicht mehr empfohlen, wird aber weiterhin unterstützt, um die Abwärtskompatibilität zu gewährleisten.

Bereinigen

So löschen Sie den Pod und deaktivieren Break-Glass:

  1. Löschen Sie den Pod:

      kubectl delete -f /tmp/create_pod.yaml
      

    Prüfen Sie, ob Sie eine Ausgabe wie pod <var>pod-name</var> deleted erhalten haben.

  2. Entfernen Sie den Block label aus der Pod-Spezifikation.

  3. Setzen Sie Ihre Richtlinie zurück:

    Google Cloud Console

    1. Rufen Sie in der Google Cloud Console die Seite "Binärautorisierung" auf.

      Zur Binärautorisierung

    2. Klicken Sie auf Richtlinie bearbeiten.

    3. Setzen Sie auf der Seite Richtlinie bearbeiten unter Projektstandardregel den Auswertungsmodus auf die vorherige Einstellung zurück.

    4. Klicken Sie auf Richtlinie speichern.

    gcloud

    1. Importieren Sie die ursprüngliche Richtlinie noch einmal.

        gcloud container binauthz policy import SAVE_POLICY_YAML
      

      Ersetzen Sie dabei SAVE_POLICY_YAML durch den Pfad zu der Datei, die Sie zuvor in dieser Anleitung erstellt haben.

    Ihre Richtlinie wurde zurückgesetzt.

Nächste Schritte