Die Binärautorisierung für Google Distributed Cloud ist eine Google Cloud Funktion, mit der die gehostete, bei der Bereitstellung erzwungene Binärautorisierung auf Ihre lokalen Nutzercluster ausgeweitet wird. Der primäre Anwendungsfall für die Binärautorisierung in Google Distributed Cloud besteht darin, Arbeitslasten in Ihren Nutzerclustern zu schützen. Folgen Sie der Anleitung in diesem Leitfaden, um die Erzwingungsregeln einer in Ihrem Google Cloud-Projekt konfigurierten Richtlinie zur Binärautorisierung auf Ihre Nutzercluster 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 der Binärautorisierungsrichtlinie für einen Nutzercluster aktivieren können, müssen Sie die folgenden Voraussetzungen erfüllen:
Cluster bei einer Flotte registrieren:Ein mit
gkectl
erstellter Cluster wird bei dem Google Cloud -Projekt registriert, das Sie im FeldgkeConnect.projectID
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 Binary Authorization-Dienst in Ihrem Flotten-Hostprojekt.
Rolle „Bewerter für Richtlinien für Binärautorisierungen“ zum Flotten-Hostprojekt hinzufügen:Führen Sie den folgenden Befehl aus, um dem Kubernetes-Dienstkonto in Ihrem Flotten-Hostprojekt die Rolle „Bewerter 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 eine richtlinienbasierte Bereitstellungsüberprüfung und ‑steuerung für Images, die in Ihrem Cluster bereitgestellt werden. Weitere Informationen finden Sie unter Proxy- und Firewallregeln.
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 während der Clustererstellung aktivieren
Sie können die Erzwingung der Binärautorisierungsrichtlinie entweder mit gkectl
oder der gcloud CLI aktivieren.
gkectl
So aktivieren Sie die Binärautorisierung, wenn Sie einen Cluster mit gkectl
erstellen:
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
: Sie erzwingen die in der Richtlinie zur Binärautorisierung, auch als Projekt-Singleton-Richtlinie bezeichnet, festgelegten Regeln in Ihrem Google Cloud-Projekt, um die Bereitstellung von Container-Images in Ihrem Cluster zu steuern.disabled
: 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 erforderlichen Änderungen an der Clusterkonfigurationsdatei vor und führen Sie dann den Befehl
gkectl create cluster
aus.
Weitere Informationen zum Erstellen von Clustern finden Sie unter Google Distributed Cloud – Installation – Übersicht.
Binärautorisierungsrichtlinie für einen vorhandenen Cluster aktivieren oder deaktivieren
Wenn Sie einen Cluster der Version 1.28 oder höher haben, können Sie die Binärautorisierung jederzeit mit gkectl
oder der gcloud CLI aktivieren oder deaktivieren.
gkectl
Zum Aktivieren:
Bearbeiten Sie die Clusterkonfigurationsdatei, um die
binaryAuthorization
-Felder hinzuzufügen:... 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
: Pfad Ihrer Nutzercluster-Konfigurationsdatei.
Warten Sie, bis die Bereitstellung mit dem Namen
binauthz-module-deployment
im Namespacebinauthz-system
bereit ist.Wenn die Bereitstellung bereit ist, erzwingt die Binärautorisierung die in der Richtlinie für die Binärautorisierung angegebenen Regeln, 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
gkectl
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:
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 die Bereitstellung 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 Binärautorisierungs-Konfiguration 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