Erzwingung von Richtlinien für die Binärautorisierung einrichten

Binärautorisierung für Google Distributed Cloud ist ein Google Cloud-Feature, das die Erzwingung der Binärautorisierung bei der Bereitstellung auf Ihre lokalen Nutzercluster ausweitet. Der primäre Anwendungsfall für die Binärautorisierung in Google Distributed Cloud ist das Sichern von Arbeitslasten in Ihren Nutzerclustern. Führen Sie die Schritte in dieser Anleitung aus, um die Erzwingungsregeln einer in Ihrem Google Cloud-Projekt konfigurierten Richtlinie für die Binärautorisierung auf Ihre Nutzercluster anzuwenden. Weitere Informationen zu Richtlinien und Regeln für die Binärautorisierung finden Sie in der Übersicht zur Binärautorisierung.

Vorbereitung

Bevor Sie die Erzwingung der Richtlinien 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: Ein mit gkectl erstellter Cluster wird bei dem Google Cloud-Projekt registriert, das Sie in der Clusterkonfigurationsdatei im Feld gkeConnect.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.

  • Binary Authorization API in Ihrem Google Cloud-Projekt aktivieren:Aktivieren Sie den Dienst zur Binärautorisierung im Flotten-Hostprojekt.

  • Fügen Sie dem Flotten-Hostprojekt die Rolle „Bewerter von Richtlinien für Binärautorisierungen“ hinzu: Führen Sie den folgenden Befehl aus, um dem Kubernetes-Dienstkonto in Ihrem Flotten-Hostprojekt die Rolle „Bewerter von Richtlinien für Binärautorisierungen“ (roles/binaryauthorization.policyEvaluator) zu gewähren:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role="roles/binaryauthorization.policyEvaluator"
    

    Wenn der Cluster hinter einem Proxyserver ausgeführt wird, muss der Proxyserver Verbindungen zur Binary Authorization API (binaryauthorization.googleapis.com) zulassen. Diese API ermöglicht eine richtlinienbasierte Validierung und Steuerung der Bereitstellung von Images, die in Ihrem Cluster bereitgestellt werden. Weitere Informationen finden Sie unter Proxy- und Firewallregeln-Proxy.

Wenn die Voraussetzungen erfüllt sind, können Sie die Richtlinie zur Binärautorisierung aktivieren (oder deaktivieren), wenn Sie einen neuen Cluster erstellen oder einen vorhandenen aktualisieren.

Richtlinie zur Binärautorisierung während der Clustererstellung aktivieren

Sie können die Richtlinienerzwingung für die Binärautorisierung entweder mit gkectl oder über die gcloud CLI aktivieren.

gkectl

So aktivieren Sie die Binärautorisierung beim Erstellen eines Clusters mit gkectl:

  1. 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 in Ihrem Google Cloud-Projekt, um die Bereitstellung von Container-Images im Cluster zu steuern. Diese Richtlinie wird auch als Projekt-Singleton-Richtlinie bezeichnet.

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

  2. Nehmen Sie alle anderen 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 in der Übersicht zur Google Distributed Cloud-Installation.

Richtlinie zur 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:

    1. Bearbeiten Sie die Clusterkonfigurationsdatei und fügen Sie die Felder binaryAuthorization hinzu:

      ...
      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: Pfad der kubeconfig-Datei des Administratorclusters
      • USER_CLUSTER_CONFIG_FILE: der Pfad Ihrer Nutzercluster-Konfigurationsdatei.
    3. Warten Sie, bis das Deployment mit dem Namen binauthz-module-deployment im Namespace binauthz-system bereit ist.

      Wenn das Deployment bereit ist, erzwingt die Binärautorisierung die in der Richtlinie für die Binärautorisierung angegebenen Regeln. Diese wird auch als Projekt-Singleton-Richtlinie bezeichnet. Diese Richtlinie ist mit Ihrem Google Cloud-Projekt verknüpft und legt Regeln fest, 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 für die Binärautorisierung finden Sie in der Übersicht zur Binärautorisierung.

  • So deaktivieren Sie die Funktion:

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

      ...
      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 das Deployment 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