Erzwingung der Richtlinie zur Binärautorisierung einrichten

Die Binärautorisierung für Google Distributed Cloud ist eine Google Cloud Funktion die die gehostete Erzwingung der Binärautorisierung zur Bereitstellungszeit auf Ihre lokalen Nutzercluster erweitert. Der primäre Anwendungsfall für die Binärautorisierung in Google Distributed Cloud ist die Sicherung von Arbeitslasten in Ihren Nutzerclustern. 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 zur Binärautorisierung finden Sie unter Überblick über die Binärautorisierung.

Vorbereitung

Bevor Sie die Erzwingung der Richtlinie zur Binärautorisierung für einen Nutzercluster aktivieren können, müssen Sie die folgenden Voraussetzungen erfüllen:

  • Cluster in einer Flotte registrieren: Bei einem mit gkectl erstellten Cluster wird der Cluster in dem Google Cloud Projekt registriert, das Sie im Feld gkeConnect.projectID in der Clusterkonfigurationsdatei angeben. Dieses Projekt wird als das Flotten-Host Projekt 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ärautorisierungsdienst in Ihrem Flotten-Hostprojekt.

  • Fügen Sie Ihrem Flotten-Hostprojekt die Rolle „Evaluator für die Binärautorisierungsrichtlinie“ hinzu: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 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 bei der Clustererstellung aktivieren

Sie können die Erzwingung der Richtlinie zur Binärautorisierung entweder mit gkectl oder der gcloud CLI aktivieren.

gkectl

So aktivieren Sie die Binärautorisierung, wenn Sie einen Cluster mit gkectl erstellen:

  1. Fügen Sie vor dem Erstellen des Clusters binaryAuthorization.evaluationMode der Konfigurationsdatei des Nutzerclusters 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 zur 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.

    • disabled: Deaktivieren Sie die Verwendung der Binärautorisierung für Ihren Cluster. Dies ist der Standardwert. Wenn Sie binaryAuthorization weglassen, ist die Funktion deaktiviert.

  2. 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 unter Google Distributed Cloud installieren – Übersicht.

Richtlinie zur Binärautorisierung 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:

    1. Bearbeiten Sie die Clusterkonfigurationsdatei, um die Felder binaryAuthorization hinzuzufügen:

      ...
      binaryAuthorization:
        evaluationMode: "project_singleton_policy_enforce"
      
    2. 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 Administratorclusters
      • USER_CLUSTER_CONFIG_FILE: Pfad Ihrer Nutzercluster-Konfigurationsdatei.
    3. Warten Sie, bis die Bereitstellung mit dem Namen binauthz-module-deployment im Namespace binauthz-system bereit ist.

      Wenn die Bereitstellung bereit ist, erzwingt die Binärautorisierung die Regeln in der Richtlinie zur Binärautorisierung, auch als Projekt-Singleton-Richtlinie bezeichnet, angegebenen Regeln. Diese Richtlinie ist mit Ihrem Google Cloud Projekt verknüpft und enthält Regeln zur Steuerung der Bereitstellung von Container-Images. Weitere Informationen zum Aktualisieren eines Clusters mit gkectl finden Sie unter Cluster aktualisieren. Weitere Informationen zu Richtlinien und Regeln zur Binärautorisierung finden Sie unter Überblick über die Binärautorisierung.

  • So deaktivieren Sie die Funktion:

    1. Bearbeiten Sie die Clusterkonfigurationsdatei und entfernen Sie entweder den Abschnitt binaryAuthorization oder legen Sie evaluationMode auf disabled fest.

      ...
      binaryAuthorization:
        evaluationMode: "disabled"
      
    2. 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 Namespace binauthz-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