Policy Controller installieren

Auf dieser Seite erfahren Sie, wie Sie Policy Controller installieren. Policy Controller prüft, überwacht und erzwingt die Einhaltung Ihres Clusters von Richtlinien in Bezug auf Sicherheit, Vorschriften oder Geschäftsregeln.

Diese Seite richtet sich an IT-Administratoren und ‑Betreiber, die dafür sorgen möchten, dass alle auf der Cloud-Plattform ausgeführten Ressourcen die Compliance-Anforderungen des Unternehmens erfüllen, indem sie Automatisierungsfunktionen zur Prüfung oder Durchsetzung bereitstellen und aufrechterhalten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und ‑Aufgaben.

Policy Controller ist verfügbar, wenn Sie Google Kubernetes Engine verwenden. Weitere Informationen finden Sie unter Google Kubernetes Engine-Preise.

Hinweise

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  1. Installieren und initialisieren Sie das Google Cloud CLI, das die in dieser Anleitung verwendeten Befehle gcloud, kubectl und nomos enthält. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit gcloud components update ab. Wenn Sie Cloud Shell verwenden, ist Google Cloud CLI vorinstalliert.
  2. Achten Sie darauf, dass der Open-Source-Open Policy Agent Gatekeeper nicht in Ihrem Cluster installiert ist. Ist dies doch der Fall, deinstallieren Sie Gatekeeper, bevor Sie Policy Controller installieren.

  3. Aktivieren Sie die erforderlichen APIs:

    Console

    Aktivieren Sie die Policy Controller API.

    Policy Controller API aktivieren

    gcloud

    Führen Sie dazu diesen Befehl aus:

    gcloud services enable anthospolicycontroller.googleapis.com
    
  4. Erstellen Sie einen Cluster, in dem eine Kubernetes-Version 1.14.x oder höher ausgeführt wird, oder sorgen Sie dafür, dass Sie auf einen solchen Cluster zugreifen können. Unter Umständen kann Policy Controller auch mit Kubernetes-Versionen vor 1.14.x ausgeführt werden. Das Produkt funktioniert dann aber nicht korrekt.

  5. Weisen Sie dem Nutzer die für die Registrierung des Clusters erforderlichen IAM-Rollen zu.

  6. Wenn Sie Policy Controller mit dem Google Cloud CLI konfigurieren möchten, registrieren Sie Ihren Cluster jetzt auf einer Flotte. Wenn Sie die Google Cloud -Konsole verwenden möchten, registrieren Sie Ihre Cluster bei der Installation von Policy Controller.

  7. Wenn Sie angehängte GKE-Cluster verwenden, darf Ihr AKS-Cluster das Azure Policy-Add-on nicht haben. Vermeiden Sie außerdem, Namespaces mit dem Schlüssel control-plane zu kennzeichnen.

  8. Wenn Sie Google Distributed Cloud auf VMware oder Bare Metal verwenden, müssen Sie Policy Controller in einem Nutzercluster installieren. Policy Controller kann nicht in einem Administratorcluster installiert werden.

Policy Controller installieren

Console

Führen Sie die folgenden Schritte aus, um den Policy Controller in der Google Cloud -Console zu installieren:

  1. Rufen Sie in der Google Cloud Console im Abschnitt Statusverwaltung die Seite Richtlinie auf.

    Zur Richtlinie

  2. Klicken Sie auf  Policy Controller konfigurieren.

  3. Optional: Wenn Sie die Standardeinstellungen für die Flotte ändern möchten, klicken Sie auf Flotteneinstellungen anpassen. Führen Sie im angezeigten Dialogfeld die folgenden Schritte aus:

    1. Klicken Sie im Bereich Richtlinien-Bundles hinzufügen/bearbeiten auf den entsprechenden Ein/Aus-Schalter, um ein Richtlinien-Bundle ein- oder auszuschließen.
    2. Führen Sie im Abschnitt Policy Controller-Konfiguration bearbeiten die folgenden Schritte aus:

      1. Wenn Sie den Mutations-Webhook aktivieren möchten, klicken Sie das Kästchen Mutations-Webhook aktivieren an. Diese Funktion ist nicht mit Autopilot-Clustern kompatibel.
      2. Geben Sie im Feld Auditintervall den Zeitraum in Sekunden zwischen zwei aufeinanderfolgenden Audits ein.
      3. Geben Sie im Feld Ausnahmefähige Namespaces eine Liste von Namespaces ein. Policy Controller ignoriert Objekte in diesen Namespaces. Diese Funktion ist nicht mit Autopilot-Clustern kompatibel.

        Best Practice:

        Nehmen Sie System-Namespaces aus, um Fehler in Ihrer Umgebung zu vermeiden. Eine Anleitung zum Ausschließen von Namespaces und eine Liste der gängigen Namespaces, die von Google Cloud -Diensten erstellt werden, finden Sie auf der Seite Namespaces ausschließen.

      4. Um referenzielle Einschränkungen zu aktivieren, klicken Sie das Kästchen Einschränkungsvorlagen aktivieren, die auf andere Objekte als das derzeit evaluierte verweisen an.

      5. Wählen Sie in der Liste Version die Policy Controller-Version aus, die Sie verwenden möchten.

    3. Klicken Sie auf Änderungen speichern.

  4. Klicken Sie auf Konfigurieren.

  5. Klicken Sie im Dialogfeld zur Bestätigung auf Bestätigen. Wenn Sie Policy Controller noch nicht aktiviert haben, wird durch Klicken auf Bestätigen die anthospolicycontroller.googleapis.com API aktiviert und Policy Controller auf Ihren Clustern installiert.

  6. Optional: Synchronisieren Sie vorhandene Cluster mit den Standardeinstellungen:

    1. Klicken Sie auf dem Tab Einstellungen auf Mit Flotteneinstellungen synchronisieren.
    2. Wählen Sie in der Liste Cluster in der Flotte die Cluster aus, die Sie synchronisieren möchten, und klicken Sie dann auf Mit Flotteneinstellungen synchronisieren. Dies kann einige Minuten dauern.

Sie werden zum Tab Einstellungen von Policy Controller weitergeleitet. Wenn Policy Controller auf Ihren Clustern installiert und konfiguriert ist, wird in den Statusspalten Installiert angezeigt. Dieser Vorgang kann einige Minuten dauern.

gcloud

Aktivieren Sie Policy Controller mit dem folgenden Befehl:

gcloud container fleet policycontroller enable \
    --memberships=MEMBERSHIP_NAME

Sie können zusätzliche Felder festlegen, um Policy Controller zu konfigurieren. Sie können Policy Controller beispielsweise anweisen, einige Namespaces von der Durchsetzung auszunehmen. Eine vollständige Liste der Felder, die Sie konfigurieren können, finden Sie in der Dokumentation zum Policy Controller-Google Cloud CLI oder führen Sie gcloud container fleet policycontroller enable --help aus.

Führen Sie die folgenden Schritte aus, um Einstellungen auf Flottenebene für Policy Controller festzulegen:

  1. Erstellen Sie eine Datei mit dem Namen fleet-default.yaml, die die Standardkonfigurationen für Policy Controller enthält. Das Feld installSpec ist erforderlich, um Standardeinstellungen auf Flottenebene zu aktivieren. In diesem Beispiel sehen Sie die Optionen, die Sie konfigurieren können:

    # cat fleet-default.yaml
    
     policyControllerHubConfig:
      installSpec: INSTALL_SPEC_ENABLED 
      # Uncomment to set default deployment-level configurations.
      # deploymentConfigs:
      #   admission:
      #     containerResources:
      #       limits:
      #         cpu: 1000m
      #         memory: 8Gi
      #       requests:
      #         cpu: 500m
      #         memory: 4Gi
      # Uncomment to set policy bundles that you want to install by default.
      # policyContent:
      #   bundles:
      #     cis-k8s-v1.5.1:
      #       exemptedNamespaces:
      #       - "namespace-name"
      # Uncomment to exempt namespaces from admission.
      # exemptableNamespaces:
      # - "namespace-name"
      # Uncomment to enable support for referential constraints
      # referentialRulesEnabled: true
      # Uncomment to disable audit, adjust value to set audit interval
      # auditIntervalSeconds: 0
      # Uncomment to log all denies and dryrun failures
      # logDeniesEnabled: true
      # Uncomment to enable mutation
      # mutationEnabled: true
      # Uncomment to adjust the value to set the constraint violation limit
      # constraintViolationLimit: 20
      # ... other fields ...
    
    Best Practice:

    Nehmen Sie System-Namespaces aus, um Fehler in Ihrer Umgebung zu vermeiden. Eine Anleitung zum Ausschließen von Namespaces und eine Liste der gängigen Namespaces, die von Google Cloud -Diensten erstellt werden, finden Sie auf der Seite Namespaces ausschließen.

  2. Standardkonfiguration auf Ihre Flotte anwenden:

    gcloud container fleet policycontroller enable \
      --fleet-default-member-config=fleet-default.yaml
    
  3. Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Konfiguration angewendet wurde:

    gcloud container fleet policycontroller describe
    
  4. Führen Sie den folgenden Befehl aus, um die Standardkonfiguration auf Flottenebene zu entfernen:

    gcloud container fleet policycontroller enable \
      --no-fleet-default-member-config
    

Terraform

So aktivieren Sie Policy Controller in Ihrer Flotte mit der installierten Standardvorlagenbibliothek:

resource "google_gke_hub_feature" "policycontroller" {
  name     = "policycontroller"
  location = "global"
  project  = data.google_project.default.project_id

  fleet_default_member_config {
    policycontroller {
      policy_controller_hub_config {
        install_spec = "INSTALL_SPEC_ENABLED"
        policy_content {
          bundles {
            bundle = "pss-baseline-v2022"
          }
          template_library {
            installation = "ALL"
          }
        }
      }
    }
  }
}

Sie können mehrere bundle-Blöcke übergeben, um eines der in der Übersicht über Policy Controller-Bundles aufgeführten Bundles zu installieren.

Weitere Informationen zur Verwendung von Terraform finden Sie unter Terraform-Unterstützung für Policy Controller.

Installation des Policy Controllers prüfen

Nach der Installation von Policy Controller können Sie prüfen, ob diese erfolgreich abgeschlossen wurde.

Console

Gehen Sie folgendermaßen vor:

  1. Rufen Sie in der Google Cloud Console im Abschnitt Statusverwaltung die Seite Richtlinie auf.

    Zur Richtlinie

  2. Sehen Sie sich auf dem Tab Einstellungen in der Clustertabelle die Spalte Policy Controller-Status an. Eine erfolgreiche Installation hat den Status Installiert .

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud container fleet policycontroller describe --memberships=MEMBERSHIP_NAME

Bei einer erfolgreichen Installation wird membershipStates: MEMBERSHIP_NAME: policycontroller: state: ACTIVE angezeigt.

Installation der Einschränkungsvorlagenbibliothek prüfen

Wenn Sie Policy Controller installieren, wird die Einschränkungsvorlagenbibliothek standardmäßig installiert. Die Installation kann einige Minuten dauern. Sie können prüfen, ob die Vorlagenbibliothek erfolgreich abgeschlossen wurde.

Console

Gehen Sie folgendermaßen vor:

  1. Rufen Sie in der Google Cloud Console im Abschnitt Statusverwaltung die Seite Richtlinie auf.

    Zur Richtlinie

  2. Wählen Sie auf dem Tab Einstellungen in der Clustertabelle die Nummer aus, die in der Spalte Installierte Bundles aufgeführt ist. Im Bereich Status des Richtlinieninhalts hat eine erfolgreiche Installation der Vorlagenbibliothek den Status Installiert .

gcloud

Führen Sie dazu diesen Befehl aus:

kubectl get constrainttemplates

Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen:

NAME                                      AGE
k8sallowedrepos                           84s
k8scontainerlimits                        84s
k8spspallowprivilegeescalationcontainer   84s
...[OUTPUT TRUNCATED]...

Wenn eine Einschränkungsvorlage korrekt installiert ist, ist dessen status.created-Feld true.

Interaktionen von Policy Controller mit Config Sync

Wenn Sie Policy Controller mit Config Sync verwenden, sollten Sie sich der folgenden Interaktionen mit Ressourcen bewusst sein, die in Ihrer zentralen Quelle wie einem Git-Repository gespeichert sind und von Config Sync synchronisiert werden:

  • Sie können eine Einschränkungsvorlage nicht synchronisieren, wenn sie gleichzeitig Teil der Vorlagenbibliothek ist, es sei denn, die Einschränkungsvorlagenbibliothek ist deaktiviert.

  • Wenn Sie die im Namespace gatekeeper-system gespeicherte Config-Ressource synchronisieren möchten, müssen Sie die Config-Ressource nur in der Source of Truth definieren. Die gatekeeper-system Namespace darf nicht damit definiert werden.

Messwerte konfigurieren

Standardmäßig versucht Policy Controller, Messwerte sowohl in Prometheus als auch in Cloud Monitoring zu exportieren. Möglicherweise müssen Sie zusätzliche Konfigurationsschritte ausführen, z. B. Berechtigungen erteilen, damit Policy Controller Messwerte exportieren kann. Weitere Informationen finden Sie unter Policy Controller-Messwerte verwenden.

Einschränkungsvorlagenbibliothek verwalten

Informationen zum Deinstallieren oder Installieren von Einschränkungsvorlagen, den zugehörigen Einschränkungen oder der Einschränkungsvorlagenbibliothek finden Sie unter Einschränkungen erstellen.

Namespaces von der Erzwingung ausnehmen

Sie können Policy Controller so konfigurieren, dass Objekte innerhalb eines Namespaces ignoriert werden. Weitere Informationen finden Sie unter Namespaces vom Policy Controller ausschließen.

Ressourcen mutieren

Policy Controller fungiert auch als mutierender Webhook. Weitere Informationen finden Sie unter Ressourcen mutieren.

Policy Controller-Version anzeigen lassen

Prüfen Sie mit dem Image-Tag, welche Gatekeeper-Version Policy Controller verwendet, indem Sie den folgenden Befehl ausführen:

kubectl get deployments -n gatekeeper-system gatekeeper-controller-manager \
  -o="jsonpath={.spec.template.spec.containers[0].image}"

Das Git-Tag (oder der Hash), das zum Erstellen von Gatekeeper und der ConfigManagement-Operator-Versionsnummer verwendet wurde, ist folgendermaßen im Image-Tag enthalten:

.../gatekeeper:VERSION_NUMBER-GIT_TAG.gBUILD_NUMBER

Für das folgende Image z. B. gilt:

gcr.io/config-management-release/gatekeeper:anthos1.3.2-480baac.g0
  • anthos1.3.2 ist die Versionsnummer.
  • 480baac ist das Git-Tag.
  • 0 ist die Build-Nummer.

Policy Controller aktualisieren

Bevor Sie das Upgrade für Policy Controller ausführen, lesen Sie in den Versionshinweisen, was sich zwischen den Versionen ändert.

Führen Sie die folgenden Schritte aus, um Policy Controller zu aktualisieren:

Console

  1. Rufen Sie in der Google Cloud Console im Abschnitt Statusverwaltung die Seite Richtlinie auf.

    Zur Richtlinie

  2. Wählen Sie auf dem Tab Einstellungen neben dem Cluster, dessen Version Sie aktualisieren möchten, die Option Konfiguration bearbeiten aus.
  3. Maximieren Sie das Menü Policy Controller-Konfiguration bearbeiten.
  4. Wählen Sie in der Drop-down-Liste Version die Version aus, auf die Sie aktualisieren möchten.
  5. Klicken Sie auf Änderungen speichern.

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud container fleet policycontroller update \
  --version=VERSION \
  --memberships=MEMBERSHIP_NAME

Dabei gilt:

  • VERSION: Version, auf die Sie ein Upgrade ausführen möchten.
  • MEMBERSHIP_NAME: Name der Mitgliedschaft, den Sie bei der Registrierung Ihres Clusters ausgewählt haben. Sie ermitteln den Namen der Mitgliedschaft durch Ausführen von gcloud container fleet memberships list.

Policy Controller deinstallieren

Führen Sie die folgenden Schritte aus, um Policy Controller aus Ihren Clustern zu deinstallieren.

Console

Führen Sie die folgenden Aufgaben aus, um Policy Controller in Ihren Clustern zu deaktivieren:

  1. Rufen Sie in der Google Cloud Console im Abschnitt Statusverwaltung die Seite Richtlinie auf.

    Zur Richtlinie

  2. Wählen Sie auf dem Tab Einstellungen in der Clustertabelle in der Spalte Konfiguration bearbeiten die Option Bearbeiten aus.
  3. Maximieren Sie im Clusterbereich das Menü Informationen zu Policy Controller.
  4. Wählen Sie Policy Controller deinstallieren aus.
  5. Bestätigen Sie die Deinstallation, indem Sie der Anleitung im Bestätigungsdialogfeld folgen und Bestätigen auswählen.

Wenn Policy Controller deinstalliert ist, wird in den Statusspalten Nicht installiert angezeigt.

gcloud

Führen Sie den folgenden Befehl aus, um den Policy Controller zu deinstallieren:

gcloud container fleet policycontroller disable \
  --memberships=MEMBERSHIP_NAME

Ersetzen Sie MEMBERSHIP_NAME durch den Mitgliedschaftsnamen des registrierten Clusters, für den Policy Controller deaktiviert werden soll. Sie können mehrere Mitgliedschaften durch Kommas getrennt angeben.

Policy Controller-RBAC und -Berechtigungen

Policy Controller bietet Arbeitslasten mit hohen Berechtigungen. Die Berechtigungen für diese Arbeitslasten werden in der Dokumentation zum Open Policy Agent Gatekeeper beschrieben.

Nächste Schritte