Die Binärautorisierung für Google Distributed Cloud ist ein Google Cloud Feature das die gehostete Erzwingung der Binärautorisierung zur Bereitstellungszeit 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 Erzwingungs regeln einer in Ihrem Google Cloud Projekt konfigurierten Richtlinie zur Binärautorisierung auf Ihre Cluster anzuwenden. Weitere Informationen zu Richtlinien und Regeln für die Binärautorisierung finden Sie unter Überblick über die Binärautorisierung.
Vorbereitung
Bevor Sie die Erzwingung von Richtlinien zur Binärautorisierung für einen Cluster aktivieren können, müssen die folgenden Voraussetzungen erfüllt sein:
Cluster in einer Flotte registrieren: Ein mit
bmctlerstellter Cluster wird in dem Projekt registriert, das Sie in demgkeConnect.projectIDFeld in der Cluster-Konfigurationsdatei angeben. Google Cloud Dieses Projekt wird als das Flotten-Host Projekt 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 Binärautorisierung-Dienst in Ihrem Flotten-Hostprojekt.
Rolle „Evaluator für die Binärautorisierungsrichtlinie“ zu 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 die Binärautorisierungsrichtlinie“ (
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ärautorisierung API (
binaryauthorization.googleapis.com) zulassen. Diese API bietet eine richtlinienbasierte Bereitstellungsvalidierung und -steuerung für Images, die in Ihrem Cluster bereitgestellt werden. Weitere Informationen zur Verwendung einer Proxykonfiguration finden Sie unter Installation hinter einem Proxy.
Sobald Sie die Voraussetzungen erfüllt haben, können Sie die Richtlinie zur Binärautorisierung aktivieren oder deaktivieren, wenn Sie einen neuen Cluster erstellen oder einen vorhandenen Cluster aktualisieren.
Richtlinie zur Binärautorisierung bei der Clustererstellung aktivieren
Sie können die Erzwingung von Richtlinien zur Binärautorisierung entweder mit bmctl oder der gcloud CLI aktivieren.
bmctl
So aktivieren Sie die Binärautorisierung, wenn Sie einen Cluster mit bmctl erstellen:
Fügen Sie vor dem Erstellen des Clusters
spec.binaryAuthorization.evaluationModeder Cluster-Konfigurationsdatei 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
evaluationModesind:PROJECT_SINGLETON_POLICY_ENFORCE: Erzwingen Sie die in der Binärautorisierung Richtlinie, 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 SiebinaryAuthorizationweglassen, ist das Feature deaktiviert.
Nehmen Sie alle anderen erforderlichen Änderungen in der Cluster-Konfigurationsdatei vor und führen Sie dann den Befehl
bmctl create clusteraus.
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_ENFORCEhinzu, wenn Sie den Befehlgcloud container bare-metal clusters createausführen.Dadurch wird ein Nutzercluster erstellt, der die in der Richtlinie zur Binärautorisierung Richtlinie, auch als Projekt-Singleton Richtlinie bezeichnet, angegebenen Regeln erzwingt. Diese Richtlinie ist mit Ihrem Google Cloud Projekt verknüpft 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.
Richtlinie zur Binärautorisierung 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 bmctl oder der gcloud CLI aktivieren oder deaktivieren.
bmctl
Zum Aktivieren:
Bearbeiten Sie die Cluster-Konfigurationsdatei, um die Felder
binaryAuthorizationhinzuzufü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_KUBECONFIGErsetzen 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
binauthz-module-deploymentim Namespacebinauthz-systembereit ist.Wenn das Deployment bereit ist, erzwingt die Binärautorisierung die Regeln in der Richtlinie zur Binärautorisierung, auch als Projekt-Singleton-Richtlinie bezeichnet. Diese Richtlinie ist mit Ihrem Google Cloud Projekt verknüpft und enthält Regeln für die Bereitstellung von Container-Images. Weitere Informationen zum Aktualisieren eines Clusters mit
bmctlfinden 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:
Sie können dieses Feature deaktivieren, indem Sie
evaluationModeaufDISABLEDsetzen oder den AbschnittbinaryAuthorizationaus der Clusterspezifikation entfernen. Warten Sie nach dieser Änderung einige Minuten, bis das Deploymentbinauthz-module-deploymentim Namespacebinauthz-systementfernt wurde.
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_ENFORCEhinzu, wenn Sie den Befehlgcloud container bare-metal clusters updateausführen.Dadurch wird ein Nutzercluster aktualisiert, sodass die Binärautorisierung die in der Binärautorisierungs-Richtlinie, auch als Projekt-Singleton-Richtlinie bezeichnet, angegebenen Regeln erzwingt. Diese Richtlinie ist mit Ihrem Google Cloud Projekt verknüpft und enthält Regeln für die Bereitstellung von Container Images. Weitere Informationen zum Aktualisieren eines Nutzerclusters mit der gcloud CLI finden Sie unter gcloud container bare-metal clusters update in der gcloud CLI-Referenz. Weitere Informationen zu Richtlinien und Regeln für die Binärautorisierung finden Sie unter Überblick über die Binärautorisierung.
Wenn Sie die Binärautorisierung für einen vorhandenen Cluster deaktivieren möchten, führen Sie den Befehl
gcloud container bare-metal clusters updatemit dem Flag--binauthz-evaluation-mode=DISABLEDaus.
Fehlerbehebung
Wenn Sie nicht alle Voraussetzungen erfüllen, werden Sie möglicherweise nicht
frühzeitig auf ein Problem aufmerksam gemacht. 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 Konfiguration der Binärautorisierung 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