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
Rufen Sie in der Google Cloud Console die Seite "Binärautorisierung" auf.
Klicken Sie auf Richtlinie bearbeiten.
Notieren Sie sich den ursprünglichen Auswertungsmodus auf der Seite Richtlinie bearbeiten in der Projektstandardregel. Klicken Sie dann auf Alle Images nicht zulassen.
Klicken Sie auf Richtlinie speichern.
gcloud
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
.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
.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.
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
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:
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
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:
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.Entfernen Sie den Block
label
aus der Pod-Spezifikation.Setzen Sie Ihre Richtlinie zurück:
Google Cloud Console
Rufen Sie in der Google Cloud Console die Seite "Binärautorisierung" auf.
Klicken Sie auf Richtlinie bearbeiten.
Setzen Sie auf der Seite Richtlinie bearbeiten unter Projektstandardregel den Auswertungsmodus auf die vorherige Einstellung zurück.
Klicken Sie auf Richtlinie speichern.
gcloud
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
- Sehen Sie sich Break-Glass-Ereignisse in Cloud-Audit-Logs an.