Durchsetzung von Richtlinien für die Binärautorisierung einrichten

Die Binärautorisierung für GKE on Bare Metal ist ein Google Cloud-Feature, das die gehostete Erzwingung der Binärautorisierung beim Deployment auf Ihre lokalen Cluster ausdehnt. Der primäre Anwendungsfall für die Binärautorisierung in GKE on Bare Metal ist der Schutz von Arbeitslasten. Die Binärautorisierung funktioniert jedoch mit allen Clustertypen. Führen Sie die Schritte in dieser Anleitung aus, um die Erzwingungsregeln einer Richtlinie für die Binärautorisierung, die in Ihrem Google Cloud-Projekt konfiguriert ist, auf Ihre Cluster anzuwenden. Weitere Informationen zu Richtlinien und Regeln zur Binärautorisierung finden Sie in der Übersicht zur Binärautorisierung.

Vorbereitung

Bevor Sie die Erzwingung von Richtlinien für die Binärautorisierung für einen Cluster aktivieren können, müssen Sie die folgenden Voraussetzungen erfüllen:

  • Cluster mit einer Flotte registrieren: Ein Cluster, der mit bmctl erstellt wurde. Er 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.

  • 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 „Binärautorisierung Policy Evaluator“ hinzu: Führen Sie den folgenden Befehl aus, um dem Kubernetes-Dienstkonto in Ihrem Flotten-Hostprojekt die Rolle „Bi 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 ermöglicht eine richtlinienbasierte Deployment-Validierung und -Steuerung für Images, die in Ihrem Cluster bereitgestellt werden. Weitere Informationen zur Verwendung einer Proxykonfiguration finden Sie unter Hinter einem Proxy installieren.

Wenn Sie die Voraussetzungen erfüllen, 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 Durchsetzung der Richtlinie zur Binärautorisierung mit bmctl oder der gcloud CLI aktivieren.

bmctl

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

  1. Bevor Sie den Cluster erstellen, fügen Sie 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: Erzwingt die in der Richtlinie zur Binärautorisierung angegebenen Regeln in Ihrem Google Cloud-Projekt, die auch als Projekt-Singleton-Richtlinie bezeichnet werden, um das Deployment von Container-Images in Ihrem Cluster zu steuern.

    • DISABLE: deaktiviert die Binärautorisierung für Ihren Cluster. Dies ist der Standardwert. Wenn Sie binaryAuthorization weglassen, wird das Feature deaktiviert.

  2. Nehmen Sie alle anderen erforderlichen Änderungen in der Clusterkonfigurationsdatei vor und führen Sie dann den Befehl bmctl create cluster aus.

Weitere Informationen zum Erstellen von Clustern finden Sie unter Clustererstellung – Übersicht.

gcloud-CLI

  • Fügen Sie beim Ausführen des Befehls gcloud container bare-metal clusters create das Flag --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE hinzu, um einen Nutzercluster zu erstellen und die Binärautorisierung zu aktivieren.

    Dadurch wird ein Nutzercluster erstellt, der die in der Richtlinie zur Binärautorisierung angegebenen Regeln erzwingt, die auch als Projekt-Singleton-Richtlinie bezeichnet wird. Diese Richtlinie ist mit Ihrem Google Cloud-Projekt verknüpft und gibt Regeln zur Steuerung der Bereitstellung von Container-Images an. Weitere Informationen zur Verwendung der gcloud CLI zum Erstellen eines Nutzerclusters finden Sie unter Nutzercluster mit GKE On-Prem API-Clients erstellen. Weitere Informationen zu Richtlinien und Regeln für die Binärautorisierung finden Sie in der Übersicht zur Binärautorisierung.

Richtlinie zur Binärautorisierung für einen vorhandenen Cluster aktivieren oder deaktivieren

Wenn Sie bereits einen Cluster der Version 1.16 oder höher haben, können Sie die Binärautorisierung jederzeit über bmctl oder die gcloud CLI aktivieren oder deaktivieren.

bmctl

  • So aktivieren Sie die Funktion:

    1. Fügen Sie der Clusterkonfigurationsdatei die Felder binaryAuthorization hinzu:

      ...
      ---
      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: der Pfad zur kubeconfig-Datei des Clusters
    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 zur 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 zur Steuerung der Bereitstellung von Container-Images. Weitere Informationen zur Verwendung von bmctl zum Aktualisieren eines Clusters finden Sie unter Cluster aktualisieren. Weitere Informationen zu Richtlinien und Regeln zur Binärautorisierung finden Sie in der Übersicht zur Binärautorisierung.

  • So deaktivieren Sie die Funktion:

    Sie können dieses Feature deaktivieren, indem Sie evaluationMode auf DISABLED setzen oder den Abschnitt binaryAuthorization aus der Clusterspezifikation entfernen. Warten Sie nach der Änderung einige Minuten, bis das Deployment mit dem Namen binauthz-module-deployment im Namespace binauthz-system entfernt wurde.

gcloud-CLI

  • Zum Aktivieren der Binärautorisierung für einen vorhandenen Cluster 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 so aktualisiert, dass die Binärautorisierung die in der Richtlinie zur Binärautorisierung angegebenen Regeln erzwingt, auch als Projekt-Singleton-Richtlinie bezeichnet. Diese Richtlinie ist mit Ihrem Google Cloud-Projekt verknüpft und gibt Regeln für die Bereitstellung von Container-Images an. Weitere Informationen zur Aktualisierung eines Nutzerclusters mit der gcloud CLI finden Sie in der Referenz zur gcloud CLI unter gcloud container bare-metal Clusters update. Weitere Informationen zu Richtlinien und Regeln für die Binärautorisierung finden Sie in der Übersicht zur 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, sehen Sie möglicherweise kein frühes Anzeichen für ein Problem. Wenn die Binärautorisierung nicht mehr auf Anfragen zur Pod-Erstellung reagiert, prüfen Sie status.conditions für das Replikatset. Eine Meldung wie die folgende weist auf ein Problem mit der Konfiguration der Binärautorisierung 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