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.

Policy Controller ist verfügbar, wenn Sie Anthos verwenden. Weitere Informationen finden Sie unter Preise. Sie können auch einen Bericht erstellen, um Policy Controller auszuprobieren, bevor Sie ihn kostenlos installieren.

Hinweis

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, gsutil, kubectl und nomos enthält. Wenn Sie Cloud Shell verwenden, ist Google Cloud CLI vorinstalliert.

  2. Wenn Sie Anthos Config Management zum ersten Mal verwenden, aktivieren Sie Anthos Config Management.

  3. 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.

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

  5. 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 Console nutzen, registrieren Sie Ihre Cluster bei der Installation von Policy Controller.

  6. Wenn Sie Anthos angehängte Cluster verwenden, achten Sie darauf, dass Ihr AKS-Cluster nicht das Add-on für Azure-Richtlinien hat, und vermeiden Sie das Hinzufügen von Labels zu Namespaces mit dem Schlüssel control-plane.

Policy Controller installieren

Führen Sie die folgenden Schritte aus, um Anthos Config Management so zu konfigurieren, dass der dynamische Zugangs-Controller Policy Controller im Cluster installiert wird. Wenn Sie Config Sync mit der Google Cloud Console oder dem Google Cloud CLI installieren, können Sie Ihre Konfiguration später nicht mehr mit kubectl-Befehlen ändern.

Console

Cluster registrieren

Registrieren Sie zuerst die Cluster, um Anthos Config Management zu verwenden. Wenn Sie Ihre Cluster registrieren, können sie einen gemeinsamen Satz von Konfigurationen und Richtlinien gemeinsam nutzen.

Führen Sie die folgenden Aufgaben aus, um Ihre Cluster zu registrieren:

  1. In der Google Cloud Console:
    • Wenn Sie Google Kubernetes Engine verwenden, rufen Sie die GKE-Seite Richtlinie im Abschnitt Konfiguration und Richtlinie auf.

      Zu Config Management

    • Wenn Sie Anthos verwenden, rufen Sie die Anthos-Seite Richtlinie im Abschnitt Konfiguration und Richtlinie auf.

      Zu Config Management

  2. Wählen Sie Install Policy Controller aus.

  3. Suchen Sie auf der Seite Registrierte Cluster für Config Management auswählen die Tabelle Nicht registrierte Cluster aus diesem Projekt und ermitteln Sie darin den Cluster, den Sie registrieren möchten.

  4. Klicken Sie neben dem Cluster, den Sie registrieren möchten, auf Registrieren.

    Nach erfolgreicher Registrierung des Clusters wird er in der Tabelle Registrierte Cluster für Config Management auswählen angezeigt.

Policy Controller konfigurieren

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

  1. Wählen Sie auf der Seite Registrierte Cluster für Config Management auswählen den registrierten Cluster aus, für den Sie Policy Controller aktivieren möchten. Klicken Sie dann auf Weiter.
  2. Lassen Sie das Kästchen Policy Controller aktivieren angeklickt.
  3. Optional: Klicken Sie auf Erweiterte Einstellungen anzeigen, um weitere Einstellungen zu konfigurieren.
  4. Optional: Lassen Sie zum Mutieren von Ressourcen das Kästchen Mutation-Webhook aktivieren aktiviert.

  5. Optional: Wenn Sie eine Bibliothek mit Einschränkungsvorlagen für gängige Richtlinientypen installieren möchten, lassen Sie das Kästchen Standardvorlagenbibliothek installieren ausgewählt.

  6. Optional: Fügen Sie im Feld Auditintervall den Zeitraum in Sekunden zwischen aufeinanderfolgenden Synchronisierungen ein. Die Standardeinstellung beträgt 60 Sekunden. Wenn Sie das Audit-Intervall auf 0 festlegen, ist die Prüfung deaktiviert.

  7. Optional: Geben Sie im Feld Ausnahmefähige Namespaces eine Liste von Namespaces an. Objekte in diesen Namespaces werden von allen Richtlinien ignoriert. Die Namespaces müssen aktuell nicht vorhanden sein.

  8. Optional: Um Referenzielle Einschränkungen aktivieren, lassen Sie das Kästchen Ermöglicht die Verwendung von Einschränkungsvorlagen, die auf andere Objekte als das derzeit evaluierte verweisen angeklickt.

  9. Optional: Wenn Sie Config Sync nicht installieren möchten, klicken Sie auf Weiter und entfernen Sie das Häkchen aus dem Kästchen Config Sync aktivieren.

  10. Um die Installation abzuschließen, klicken Sie auf Abgeschlossen. Sie werden zur Seite Anthos Config Management zurückgeleitet.

    Nach einigen Minuten sollte in der Spalte für den Policy Controller-Status neben dem von Ihnen konfigurierten Cluster Installiert angezeigt werden.

gcloud

  1. Bereiten Sie die Konfiguration vor, indem Sie entweder ein neues apply-spec.yaml-Manifest erstellen oder ein vorhandenes Manifest verwenden. Mit einem vorhandenen Manifest können Sie den Cluster mit denselben Einstellungen konfigurieren, die auch von einem anderen Cluster verwendet werden.

Neues Manifest erstellen

Um Policy Controller mit neuen Einstellungen für Ihren Cluster zu konfigurieren, erstellen Sie eine Datei mit dem Namen apply-spec.yaml und kopieren Sie in diese die folgende YAML-Datei:

# apply-spec.yaml

applySpecVersion: 1
spec:
  policyController:
    # Set to true to install and enable Policy Controller
    enabled: true
    # Uncomment to prevent the template library from being installed
    # templateLibraryInstalled: false
    # 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 exempt namespaces
    # exemptableNamespaces: ["namespace-name"]
    # Uncomment to change the monitoring backends
    # monitoring:
    #     backends:
    #     - cloudmonitoring
    #     - prometheus
  # ...other fields...

Sie müssen das Feld spec.policyController hinzufügen und den Wert von enabled auf true setzen. Sie können auch andere Policy Controller-Features aktivieren. Der Support für referenzielle Einschränkungen ist jedoch standardmäßig deaktiviert. Vor dem Aktivieren sollten Sie sich mit den Warnhinweisen zu Eventual Consistency vertraut machen.

Vorhandenes Manifest verwenden

Um den Cluster mit den Einstellungen zu konfigurieren, die von einem anderen Cluster verwendet werden, rufen Sie diese Einstellungen von einem registrierten Cluster ab.

gcloud alpha container fleet config-management fetch-for-apply \
     --membership=MEMBERSHIP_NAME \
     --project=PROJECT_ID \
     > CONFIG_YAML_PATH

Dabei gilt:

  • MEMBERSHIP_NAME: Name der Mitgliedschaft des registrierten Clusters mit den Policy Controller-Einstellungen, die Sie verwenden möchten
  • PROJECT_ID: Ihre Projekt-ID
  • CONFIG_YAML_PATH: Pfad zur Datei apply-spec.yaml.

2. Wenden Sie die Datei apply-spec.yaml an:

  gcloud beta container fleet config-management apply \
      --membership=MEMBERSHIP_NAME \
      --config=CONFIG_YAML \
      --project=PROJECT_ID

Dabei gilt:

  • MEMBERSHIP_NAME: Name der Mitgliedschaft des registrierten Clusters mit den Policy Controller-Einstellungen, die Sie verwenden möchten.
  • CONFIG_YAML: Fügen Sie den Pfad zur Datei apply-spec.yaml hinzu.
  • PROJECT_ID: Fügen Sie Ihre Projekt-ID hinzu.

Der Pod wird erstellt und Policy Controller beginnt mit der Prüfung und Durchsetzung von Einschränkungen.

Policy Controller auf einem privaten Cluster installieren

Wenn Sie eine ältere Version als 1.8.0 verwenden und Policy Controller in einem privaten Cluster in Google Kubernetes Engine (GKE) installieren, müssen Sie für die Installation zusätzliche Schritte ausführen. In privaten Clustern blockiert die Firewall die Steuerungsebene, dass die Knoten an Port 8443 erreicht werden können. In diesem Fall versucht die Steuerungsebene, eine Verbindung zum Policy Controller herzustellen. Sie können eine Firewallregel erstellen, damit die Steuerungsebene den Port 8443 (oder einen anderen benutzerdefinierten Port) erreichen kann. Sie können den Pod auch auf einem privilegierten Port 443 ausführen. Weitere Informationen finden Sie in der Gatekeeper-Dokumentation unter Private GKE-Clusterknoten ausführen.

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. In der Google Cloud Console:
    • Wenn Sie Google Kubernetes Engine verwenden, rufen Sie die GKE-Seite Richtlinie im Abschnitt Konfiguration und Richtlinie auf.

      Zu Config Management

    • Wenn Sie Anthos verwenden, rufen Sie die Anthos-Seite Richtlinie im Abschnitt Konfiguration und Richtlinie auf.

      Zu Config Management

  2. Prüfen Sie auf dem Tab Einstellungen die Spalte Richtlinien-Controller-Status in der Clustertabelle. Eine erfolgreiche Installation hat den Status Installiert.

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud beta container fleet config-management status \
    --project=PROJECT_ID

Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts.

Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen:

Name          Status  Last_Synced_Token  Sync_Branch  Last_Synced_Time      Policy_Controller
CLUSTER_NAME  SYNCED  a687c2c            1.0.0        2021-02-17T00:15:55Z  INSTALLED

Eine erfolgreiche Installation hat in der Spalte "Policy Controller" den Status INSTALLED.

Installation der Einschränkungsvorlagenbibliothek prüfen

Wenn Sie Policy Controller installieren, wird die Bibliothek für Einschränkungsvorlagen standardmäßig installiert. Die Installation kann einige Minuten dauern.

Listen Sie alle ConstraintTemplate-Objekte auf, um zu prüfen, ob die Vorlagenbibliothek installiert wurde:

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 zwischen Policy Controller und Anthos Config Management

Anthos Config Management verwaltet die Ressourcen, die für die Ausführung von Policy Controller erforderlich sind. Um Konflikte zwischen Anthos Config Management und Policy Controller zu vermeiden, müssen Sie wissen, was im Config Sync-Repository enthalten ist.

Beachten Sie bei der Verwendung von Policy Controller Folgendes:

  • 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 Konfigurationsressource synchronisieren möchten, muss der Namespace im Repository nicht definiert sein oder der Konfiguration entsprechen, die von Anthos Config Management installiert wird.

  • Wenn der Namespace gatekeeper-system aus dem Source-of-Truth-Repository entfernt wird, kann Anthos Config Management möglicherweise nicht wiederhergestellt werden. Löschen Sie zur Wiederherstellung die validierende Webhook-Konfiguration für Policy Controller.

Einschränkungsvorlagenbibliothek verwalten

Informationen zum Deinstallieren oder erneuten 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}"

Ab Anthos Config Management Version 1.3.2 sind das Git-Tag (oder Hash), das zum Erstellen von Gatekeeper verwendet wurde, und die Anthos Config Management-Versionsnummer 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.

Sie können auch eine Liste aller Anthos Config Management-Versionen zusammen mit den entsprechenden Manifest-, Installations- und nomos-Binärversionen in der Release-Versionsmatrix anzeigen.

Policy Controller aktualisieren

Policy Controller wird beim Upgrade von Anthos Config Management aktualisiert. Weitere Informationen finden Sie unter Anthos Config Management aktualisieren.

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. In der Google Cloud Console:
    • Wenn Sie Google Kubernetes Engine verwenden, rufen Sie die GKE-Seite Richtlinie im Abschnitt Konfiguration und Richtlinie auf.

      Zu Config Management

    • Wenn Sie Anthos verwenden, rufen Sie die Anthos-Seite Richtlinie im Abschnitt Konfiguration und Richtlinie auf.

      Zu Config Management

  2. Klicken Sie auf dem Tab Einstellungen neben dem Cluster, für den Sie Policy Controller deaktivieren möchten, auf das Kontextmenü > Konfiguration bearbeiten.
  3. Entfernen Sie das Häkchen aus dem Kästchen Policy Controller aktivieren.
  4. Klicken Sie auf Abgeschlossen.

gcloud

So deinstallieren Sie den Policy Controller:

  1. Bearbeiten Sie die Anthos Config Management-Konfiguration in der Datei apply-spec.yaml und legen Sie policyController.enabled auf false fest.

  2. Wenden Sie die Änderungen in der Datei apply-spec.yaml an:

     gcloud beta container fleet config-management apply \
         --membership=CLUSTER_NAME \
         --config=CONFIG_YAML \
         --project=PROJECT_ID
    

    Dabei gilt:

    • CLUSTER_NAME: Fügen Sie den registrierten Cluster hinzu, auf den Sie diese Konfiguration anwenden möchten.
    • CONFIG_YAML: Fügen Sie den Pfad zur Datei apply-spec.yaml hinzu.
    • PROJECT_ID: Fügen Sie Ihre Projekt-ID hinzu.

Nachdem Anthos Config Management den policycontroller.configmanagement.gke.io-Abschluss entfernt hat, ist die Deinstallation abgeschlossen.

Wenn Sie Anthos Config Management vollständig deinstallieren möchten, finden Sie unter Anthos Config Management deinstallieren weitere Informationen.

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