Erzwingung der Richtlinie zur Binärautorisierung einrichten

Die Binärautorisierung für Google Distributed Cloud ist eine Google Cloud Funktion, mit der die gehostete Erzwingung der Binärautorisierung zur Bereitstellungszeit auf Ihre lokalen Cluster ausgeweitet wird. Der primäre Anwendungsfall der Binärautorisierung in Google Distributed Cloud besteht darin, Arbeitslasten zu schützen. Die Binärautorisierung funktioniert jedoch mit allen Clustertypen. Folgen Sie der Anleitung in diesem Leitfaden, um die Erzwingungsregeln 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 der Binärautorisierungsrichtlinie für einen Cluster aktivieren können, müssen Sie die folgenden Voraussetzungen erfüllen:

  • Cluster bei einer Flotte registrieren:Ein mit bmctl erstellter Cluster wird bei dem Google Cloud -Projekt registriert, das Sie im Feld gkeConnect.projectID in 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 zur Verwendung einer Proxykonfiguration finden Sie unter Hinter einem Proxy installieren.

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 bmctl oder der gcloud CLI aktivieren.

bmctl

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

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

    • DISABLE: 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 erforderlichen Änderungen an der Clusterkonfigurationsdatei vor und führen Sie dann den Befehl bmctl create cluster aus.

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_ENFORCE hinzu, wenn Sie den Befehl gcloud container bare-metal clusters create ausführen.

    Dadurch wird ein Nutzercluster erstellt, in dem die in der Richtlinie zur Binärautorisierung angegebenen Regeln erzwungen werden, 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 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.

Binärautorisierungsrichtlinie 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:

    1. Bearbeiten Sie die Clusterkonfigurationsdatei, um die binaryAuthorization-Felder hinzuzufü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"
      
    2. Aktualisieren Sie den Cluster:

      bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIG
      

      Ersetzen Sie Folgendes:

      • CLUSTER_NAME: der Name des Clusters, der aktualisiert werden soll.
      • CLUSTER_KUBECONFIG: Pfad zur Kubeconfig-Datei des Clusters.
    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 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 bmctl 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:

    Diese Funktion kann deaktiviert werden, indem Sie evaluationMode auf DISABLED festlegen oder den Abschnitt binaryAuthorization aus der Clusterspezifikation entfernen. Warten Sie nach dieser Änderung einige Minuten, bis die Bereitstellung mit dem Namen binauthz-module-deployment im Namespace binauthz-system entfernt 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_ENFORCE hinzu, wenn Sie den Befehl gcloud container bare-metal clusters update ausführen.

    Dadurch wird ein Nutzercluster aktualisiert, sodass die Binärautorisierung die in der Richtlinie zur Binärautorisierung, 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 in der gcloud CLI-Referenz unter gcloud container bare-metal clusters update. Weitere Informationen zu Richtlinien und Regeln für die Binärautorisierung finden Sie unter Überblick über die Binärautorisierung.

  • Führen Sie den Befehl gcloud container bare-metal clusters update mit dem Flag --binauthz-evaluation-mode=DISABLED aus, um die Binärautorisierung für einen vorhandenen Cluster zu deaktivieren.

Fehlerbehebung

Wenn Sie nicht alle Voraussetzungen erfüllen, werden Sie möglicherweise nicht frühzeitig auf ein Problem aufmerksam. Wenn die Binärautorisierung nicht mehr auf Anfragen zur Pod-Erstellung antwortet, prüfen Sie status.conditions für das ReplicaSet. Eine Meldung wie die folgende weist auf ein Problem mit der Konfiguration der anbieterunabhängigen Autorisierung 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