Die Binärautorisierung für GKE on VMware ist ein Google Cloud-Feature, mit dem die gehostete Binärautorisierung, die beim Deployment erfolgt, auf Ihre lokalen Nutzercluster erweitert wird. Der primäre Anwendungsfall für die Binärautorisierung in GKE on VMware besteht darin, Arbeitslasten in Ihren Nutzerclustern zu sichern. Folgen Sie den Schritten in dieser Anleitung, um die Erzwingungsregeln einer Richtlinie für die Binärautorisierung, die in Ihrem Google Cloud-Projekt konfiguriert ist, auf Ihre Nutzercluster anzuwenden. Weitere Informationen zu Richtlinien und Regeln der Binärautorisierung finden Sie in der Übersicht zur Binärautorisierung.
Vorbereitung
Bevor Sie die Erzwingung der Richtlinie für die Binärautorisierung für einen Nutzercluster aktivieren können, müssen die folgenden Voraussetzungen erfüllt sein:
Cluster bei einer Flotte registrieren: Bei einem Cluster, der mit
gkectl
erstellt wurde, wird der Cluster 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.Aktivieren Sie die Binary Authorization API in Ihrem Google Cloud-Projekt:Aktivieren Sie den Dienst für die Binärautorisierung in Ihrem Flotten-Hostprojekt.
Fügen Sie Ihrem Flotten-Hostprojekt die Rolle „Binärautorisierung Policy Evaluator“ hinzu: Führen Sie den folgenden Befehl aus, um dem Kubernetes-Dienstkonto in Ihrem Flottenhostprojekt die Rolle „Binary Authorization Policy Evaluator“ (
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 Binary Authorization API (
binaryauthorization.googleapis.com
) zulassen. Diese API bietet eine richtlinienbasierte Bereitstellungsprüfung und -steuerung für Images, die in Ihrem Cluster bereitgestellt werden. Weitere Informationen finden Sie unter Proxy- und Firewallregeln-Proxy.
Wenn Sie die Voraussetzungen erfüllen, können Sie die Richtlinie für die Binärautorisierung aktivieren oder deaktivieren, wenn Sie einen neuen Cluster erstellen oder einen vorhandenen Cluster aktualisieren.
Richtlinie für die Binärautorisierung beim Erstellen des Clusters aktivieren
Sie können die Richtlinienerzwingung für die Binärautorisierung mit gkectl
oder der gcloud CLI aktivieren.
gkectl
So aktivieren Sie die Binärautorisierung beim Erstellen eines Clusters mit gkectl
:
Bevor Sie den Cluster erstellen, fügen Sie der Konfigurationsdatei des Nutzerclusters
binaryAuthorization.evaluationMode
hinzu, wie im folgenden Beispiel gezeigt:... 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, die auch als Projekt-Singleton-Richtlinie bezeichnet werden, in Ihrem Google Cloud-Projekt, um die Bereitstellung von Container-Images in Ihrem Cluster zu steuern.disabled
: deaktiviert 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 in der Clusterkonfigurationsdatei vor und führen Sie dann den Befehl
gkectl create cluster
aus.
Weitere Informationen zum Erstellen von Clustern finden Sie in der Übersicht zur GKE on VMware-Installation.
Richtlinie für die Binärautorisierung für einen vorhandenen Cluster aktivieren oder deaktivieren
Wenn Sie bereits einen Cluster der Version 1.28 oder höher haben, können Sie die Binärautorisierung jederzeit über gkectl
oder die gcloud CLI aktivieren oder deaktivieren.
gkectl
So aktivieren Sie die Funktion:
Fügen Sie der Clusterkonfigurationsdatei die Felder
binaryAuthorization
hinzu:... binaryAuthorization: evaluationMode: "project_singleton_policy_enforce"
Aktualisieren Sie den Cluster:
gkectl update cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE \ --force
Ersetzen Sie Folgendes:
ADMIN_CLUSTER_KUBECONFIG
: der Pfad der kubeconfig-Datei des AdministratorclustersUSER_CLUSTER_CONFIG_FILE
: der Pfad zur Konfigurationsdatei des Nutzerclusters.
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, die auch als Projekt-Singleton-Richtlinie bezeichnet werden. Diese Richtlinie ist mit Ihrem Google Cloud-Projekt verknüpft und definiert Regeln, die die Bereitstellung von Container-Images steuern. Weitere Informationen zur Verwendung von
gkectl
zum Aktualisieren eines Clusters finden Sie unter Cluster aktualisieren. Weitere Informationen zu Richtlinien und Regeln der Binärautorisierung finden Sie in der Übersicht zur Binärautorisierung.
So deaktivieren Sie die Funktion:
Bearbeiten Sie die Clusterkonfigurationsdatei und entfernen Sie entweder den Abschnitt
binaryAuthorization
oder setzen SieevaluationMode
aufdisabled
.... binaryAuthorization: evaluationMode: "disabled"
Aktualisieren Sie den Cluster:
gkectl update cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE \ --force
Warten Sie nach dieser Änderung einige Minuten, bis das Deployment mit dem Namen
binauthz-module-deployment
im Namespacebinauthz-system
entfernt wurde.
Fehlerbehebung
Wenn Sie nicht alle Voraussetzungen erfüllen, wird möglicherweise eine Meldung wie die folgende angezeigt, die auf ein Problem mit der Konfiguration der Binärautorisierung hinweist:
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