Die Binärautorisierung für Google Distributed Cloud ist eine Google Cloud Funktion, die die gehostete Erzwingung der Binärautorisierung zum Zeitpunkt der Bereitstellung auf Ihre lokalen Cluster erweitert. Der primäre Anwendungsfall für die Binärautorisierung in Google Distributed Cloud ist die Sicherung von Arbeitslasten. Die Binärautorisierung funktioniert jedoch mit allen Clustertypen. Folgen Sie der Anleitung in diesem Leitfaden, 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 unter Übersicht über die Binärautorisierung.
Vorbereitung
Bevor Sie die Erzwingung von Binärautorisierungsrichtlinien für einen Cluster aktivieren können, müssen Sie die folgenden Voraussetzungen erfüllen:
Cluster in einer Flotte registrieren:Wenn ein Cluster mit
bmctl
erstellt wird, wird er im Google Cloud -Projekt registriert, das Sie im FeldgkeConnect.projectID
in der Clusterkonfigurationsdatei angeben. Dieses Projekt wird als Flotten-Hostprojekt bezeichnet. Weitere Informationen zu Flotten, darunter Anwendungsfälle, Best Practices und Beispiele, finden Sie in der Dokumentation zur Flottenverwaltung.Aktivieren Sie die Binary Authorization API in Ihrem Google Cloud -Projekt:Aktivieren Sie den Binärautorisierung-Dienst in Ihrem Flotten-Hostprojekt.
Rolle „Evaluator für Richtlinien für Binärautorisierungen“ Ihrem Flotten-Hostprojekt hinzufügen:Führen Sie den folgenden Befehl aus, um dem Kubernetes-Dienstkonto in Ihrem Flotten-Hostprojekt die Rolle „Evaluator für Richtlinien für Binärautorisierungen“ (
roles/binaryauthorization.policyEvaluator
) zuzuweisen:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \ --role="roles/binaryauthorization.policyEvaluator"
Wenn Ihr Cluster hinter einem Proxyserver ausgeführt wird, muss der Proxyserver Verbindungen zur Binärautorisierungs-API (
binaryauthorization.googleapis.com
) zulassen. Diese API bietet richtlinienbasierte Bereitstellungsvalidierung und ‑steuerung für Images, die in Ihrem Cluster bereitgestellt werden. Weitere Informationen zur Verwendung einer Proxykonfiguration finden Sie unter Hinter einem Proxy installieren.
Sobald Sie die Voraussetzungen erfüllen, können Sie die Binärautorisierungsrichtlinie aktivieren (oder deaktivieren), wenn Sie einen neuen Cluster erstellen oder einen vorhandenen Cluster aktualisieren.
Richtlinie zur Binärautorisierung beim Erstellen des Clusters aktivieren
Sie können die Erzwingung der Binärautorisierungsrichtlinie entweder mit bmctl
oder der gcloud CLI aktivieren.
bmctl
So aktivieren Sie die Binärautorisierung, wenn Sie einen Cluster mit bmctl
erstellen:
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 zur Binärautorisierung, auch als Projekt-Singleton-Richtlinie bezeichnet, angegebenen Regeln für Ihr Google Cloud -Projekt, um die Bereitstellung von Container-Images in Ihrem Cluster zu steuern.DISABLE
: Deaktivieren Sie die Verwendung der Binärautorisierung für Ihren Cluster. Dies ist der Standardwert. Wenn SiebinaryAuthorization
weglassen, ist die Funktion deaktiviert.
Nehmen Sie alle anderen erforderlichen Änderungen in der Clusterkonfigurationsdatei vor und führen Sie dann den Befehl
bmctl create cluster
aus.
Weitere Informationen zum Erstellen von Clustern finden Sie unter Cluster erstellen – Übersicht.
gcloud-CLI
Wenn Sie einen Nutzercluster erstellen und die Binärautorisierung aktivieren möchten, fügen Sie das Flag
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
hinzu, wenn Sie den Befehlgcloud container bare-metal clusters create
ausführen.Dadurch wird ein Nutzercluster erstellt, in dem die in der Richtlinie zur Binärautorisierung, auch als Projekt-Singleton-Richtlinie bezeichnet, angegebenen Regeln erzwungen werden. Diese Richtlinie ist Ihrem Google Cloud Projekt zugeordnet und enthält Regeln für die Bereitstellung von Container-Images. Weitere Informationen zum Erstellen eines Nutzerclusters mit 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 unter Überblick über die Binärautorisierung.
Binärautorisierungsrichtlinie für einen vorhandenen Cluster aktivieren oder deaktivieren
Wenn Sie einen Cluster der Version 1.16 oder höher haben, können Sie die Binärautorisierung jederzeit mit der bmctl
oder der gcloud CLI aktivieren oder deaktivieren.
bmctl
Zum Aktivieren:
Bearbeiten Sie die Clusterkonfigurationsdatei, um die Felder
binaryAuthorization
hinzuzufügen:... --- 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 kubeconfig-Datei des Clusters.
Warten Sie, bis das Deployment mit dem Namen
binauthz-module-deployment
im Namespacebinauthz-system
bereit ist.Wenn die Bereitstellung abgeschlossen ist, erzwingt die Binärautorisierung die in der Richtlinie zur Binärautorisierung, auch als Projekt-Singleton-Richtlinie bezeichnet, angegebenen Regeln. Diese Richtlinie ist IhremGoogle Cloud -Projekt zugeordnet und enthält Regeln für die Bereitstellung von Container-Images. Weitere Informationen zum Aktualisieren eines Clusters mit
bmctl
finden Sie unter Cluster aktualisieren. Weitere Informationen zu Richtlinien und Regeln für die Binärautorisierung finden Sie unter Überblick über die Binärautorisierung.
So deaktivieren Sie die Funktion:
Diese Funktion kann deaktiviert werden, indem Sie
evaluationMode
aufDISABLED
setzen oder den AbschnittbinaryAuthorization
aus der Clusterspezifikation entfernen. Warten Sie nach dieser Änderung einige Minuten, bis die Bereitstellung mit dem Namenbinauthz-module-deployment
im Namespacebinauthz-system
entfernt wird.
gcloud-CLI
Wenn Sie die Binärautorisierung für einen vorhandenen Cluster aktivieren möchten, fügen Sie das Flag
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
hinzu, wenn Sie den Befehlgcloud container bare-metal clusters update
ausführen.Dadurch wird ein Nutzercluster so aktualisiert, dass die Binärautorisierung die in der Richtlinie zur Binärautorisierung, auch als Projekt-Singleton-Richtlinie bezeichnet, angegebenen Regeln erzwingt. Diese Richtlinie ist IhremGoogle Cloud -Projekt zugeordnet und enthält Regeln für die Bereitstellung von Container-Images. Weitere Informationen zur Verwendung der gcloud CLI zum Aktualisieren eines Nutzerclusters finden Sie in der gcloud CLI-Referenz unter gcloud container bare-metal clusters update. Weitere Informationen zu Richtlinien und Regeln für die Binärautorisierung finden Sie unter Überblick über die 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, wird möglicherweise kein Hinweis auf ein Problem angezeigt. Wenn die Binärautorisierung nicht mehr auf Anfragen zur Pod-Erstellung reagiert, prüfen Sie status.conditions
für das ReplicaSet. Eine Meldung wie die folgende weist auf ein Problem mit der Binärautorisierung-Konfiguration hin:
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