Binärautorisierung für Google Distributed Cloud ist ein Google Cloud-Feature, das die Erzwingung der Binärautorisierung bei der Bereitstellung auf Ihre lokalen Cluster ausweitet. Der primäre Anwendungsfall für die Binärautorisierung in Google Distributed Cloud ist die Sicherung von Arbeitslasten. Sie funktioniert jedoch mit allen Clustertypen. Führen Sie die Schritte in dieser Anleitung aus, um die Erzwingungsregeln einer in Ihrem Google Cloud-Projekt konfigurierten Richtlinie für die Binärautorisierung auf Ihre Cluster anzuwenden. Weitere Informationen zu Richtlinien und Regeln für die Binärautorisierung finden Sie in der Übersicht zur Binärautorisierung.
Vorbereitung
Bevor Sie die Erzwingung der Richtlinien für die Binärautorisierung für einen Cluster aktivieren können, müssen die folgenden Voraussetzungen erfüllt sein:
Cluster bei einer Flotte registrieren: Der Cluster wird mit
bmctl
erstellt und bei dem Google Cloud-Projekt registriert, das Sie in der Clusterkonfigurationsdatei im FeldgkeConnect.projectID
angeben. Dieses Projekt wird als Flotten-Hostprojekt bezeichnet. Weitere Informationen zu Flotten, einschließlich Anwendungsfällen, Best Practices und Beispielen, finden Sie in der Dokumentation zur Flottenverwaltung.Binary Authorization API in Ihrem Google Cloud-Projekt aktivieren:Aktivieren Sie den Dienst zur Binärautorisierung im Flotten-Hostprojekt.
Fügen Sie dem Flotten-Hostprojekt die Rolle „Bewerter von Richtlinien für Binärautorisierungen“ hinzu: Führen Sie den folgenden Befehl aus, um dem Kubernetes-Dienstkonto in Ihrem Flotten-Hostprojekt die Rolle „Bewerter von Richtlinien für Binärautorisierungen“ (
roles/binaryauthorization.policyEvaluator
) zu gewähren:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \ --role="roles/binaryauthorization.policyEvaluator"
Wenn der Cluster hinter einem Proxyserver ausgeführt wird, muss der Proxyserver Verbindungen zur Binary Authorization API (
binaryauthorization.googleapis.com
) zulassen. Diese API ermöglicht eine richtlinienbasierte Validierung und Steuerung der Bereitstellung von Images, die in Ihrem Cluster bereitgestellt werden. Weitere Informationen zur Verwendung einer Proxykonfiguration finden Sie unter Installation hinter einem Proxy.
Wenn die Voraussetzungen erfüllt sind, können Sie die Richtlinie zur Binärautorisierung aktivieren (oder deaktivieren), wenn Sie einen neuen Cluster erstellen oder einen vorhandenen aktualisieren.
Richtlinie zur Binärautorisierung während der Clustererstellung aktivieren
Sie können die Richtlinienerzwingung für die Binärautorisierung entweder mit bmctl
oder über die gcloud CLI aktivieren.
bmctl
So aktivieren Sie die Binärautorisierung beim Erstellen eines Clusters mit bmctl
:
Bevor Sie den Cluster erstellen, fügen Sie der Clusterkonfigurationsdatei
spec.binaryAuthorization.evaluationMode
hinzu, wie im folgenden Beispiel gezeigt:... --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-basic namespace: cluster-user-basic spec: type: user ... binaryAuthorization: evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
Zulässige Werte für
evaluationMode
sind:PROJECT_SINGLETON_POLICY_ENFORCE
: Erzwingen Sie die in der Richtlinie für die Binärautorisierung angegebenen Regeln in Ihrem Google Cloud-Projekt, um die Bereitstellung von Container-Images im Cluster zu steuern. Diese Richtlinie wird auch als Projekt-Singleton-Richtlinie bezeichnet.DISABLE
: Deaktivieren Sie die Verwendung der Binärautorisierung für Ihren Cluster. Dies ist der Standardwert. Wenn SiebinaryAuthorization
weglassen, wird die Funktion deaktiviert.
Nehmen Sie alle anderen erforderlichen Änderungen an der Clusterkonfigurationsdatei vor und führen Sie dann den Befehl
bmctl create cluster
aus.
Weitere Informationen zum Erstellen von Clustern finden Sie unter Clustererstellung – Übersicht.
gcloud-CLI
Fügen Sie beim Ausführen des Befehls
gcloud container bare-metal clusters create
das Flag--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
hinzu, um einen Nutzercluster zu erstellen und die Binärautorisierung zu aktivieren.Dadurch wird ein Nutzercluster erstellt, der die in der Richtlinie für die Binärautorisierung angegebenen Regeln erzwingt. Diese wird auch als Projekt-Singleton-Richtlinie bezeichnet. Diese Richtlinie ist mit Ihrem Google Cloud-Projekt verknüpft und legt Regeln fest, die die Bereitstellung von Container-Images steuern. Weitere Informationen zum Erstellen eines Nutzerclusters mithilfe der gcloud CLI finden Sie unter Nutzercluster mit GKE On-Prem API-Clients erstellen. Weitere Informationen zu Richtlinien und Regeln für die Binärautorisierung finden Sie in der Übersicht zur Binärautorisierung.
Richtlinie zur Binärautorisierung für einen vorhandenen Cluster aktivieren oder deaktivieren
Wenn Sie bereits einen Cluster der Version 1.16 oder höher haben, können Sie die Binärautorisierung jederzeit über bmctl
oder die gcloud CLI aktivieren oder deaktivieren.
bmctl
So aktivieren Sie die Funktion:
Bearbeiten Sie die Clusterkonfigurationsdatei und fügen Sie die Felder
binaryAuthorization
hinzu:... --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-basic namespace: cluster-user-basic spec: type: user ... binaryAuthorization: evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
Aktualisieren Sie den Cluster:
bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIG
Ersetzen Sie Folgendes:
CLUSTER_NAME
: der Name des Clusters, der aktualisiert werden soll.CLUSTER_KUBECONFIG
: der Pfad zur kubectl-Datei des Clusters.
Warten Sie, bis das Deployment mit dem Namen
binauthz-module-deployment
im Namespacebinauthz-system
bereit ist.Wenn das Deployment bereit ist, erzwingt die Binärautorisierung die in der Richtlinie für die Binärautorisierung angegebenen Regeln. Diese wird auch als Projekt-Singleton-Richtlinie bezeichnet. Diese Richtlinie ist mit Ihrem Google Cloud-Projekt verknüpft und legt Regeln fest, die die Bereitstellung von Container-Images steuern. Weitere Informationen zur Verwendung von
bmctl
zum Aktualisieren eines Clusters finden Sie unter Cluster aktualisieren. Weitere Informationen zu Richtlinien und Regeln für die Binärautorisierung finden Sie in der Übersicht zur Binärautorisierung.
So deaktivieren Sie die Funktion:
Dieses Feature kann deaktiviert werden, indem Sie
evaluationMode
aufDISABLED
setzen oder den AbschnittbinaryAuthorization
aus der Clusterspezifikation entfernen. Warten Sie nach dieser Änderung einige Minuten, bis das Deployment mit dem Namenbinauthz-module-deployment
im Namespacebinauthz-system
entfernt wurde.
gcloud-CLI
Fügen Sie das Flag
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
hinzu, wenn Sie den Befehlgcloud container bare-metal clusters update
ausführen, um die Binärautorisierung für einen vorhandenen Cluster zu aktivieren.Dadurch wird ein Nutzercluster aktualisiert, sodass die Binärautorisierung die in der Richtlinie für die Binärautorisierung angegebenen Regeln erzwingt. Diese wird auch als Projekt-Singleton-Richtlinie bezeichnet. Diese Richtlinie ist mit Ihrem Google Cloud-Projekt verknüpft und legt Regeln für die Bereitstellung von Container-Images fest. Weitere Informationen zum Aktualisieren eines Nutzerclusters mithilfe der gcloud CLI finden Sie in der Referenz zur gcloud CLI unter gcloud container bare-metal clusters update. Weitere Informationen zu Richtlinien und Regeln für die Binärautorisierung finden Sie in der Übersicht zur Binärautorisierung.
Führen Sie den Befehl
gcloud container bare-metal clusters update
mit dem Flag--binauthz-evaluation-mode=DISABLED
aus, um die Binärautorisierung für einen vorhandenen Cluster zu deaktivieren.
Fehlerbehebung
Wenn Sie nicht alle Voraussetzungen erfüllen, sehen Sie möglicherweise nicht frühzeitig auf ein Problem. Wenn die Binärautorisierung nicht auf Anfragen zur Pod-Erstellung antwortet, prüfen Sie status.conditions
auf das Replikatset. Eine Meldung wie die folgende zeigt an, dass ein Problem mit der Konfiguration der Binärautorisierung vorliegt:
failed to validate Binary Authorization policy (1) Ensure the Binary Authorization API is enabled for your Google Cloud project: gcloud services enable binaryauthorization.googleapis.com --project=PROJECT_ID (2) Ensure an IAM policy binding is in place granting binaryauthorization.policyEvaluator role to the binauthz-system/binauthz-agent Kubernetes service account: gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \ --role=roles/binaryauthorization.policyEvaluator