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:
Installieren und initialisieren Sie das Google Cloud CLI, das die in dieser Anleitung verwendeten Befehle
gcloud
,gsutil
,kubectl
undnomos
enthält. Wenn Sie Cloud Shell verwenden, ist Google Cloud CLI vorinstalliert.Wenn Sie Anthos Config Management zum ersten Mal verwenden, aktivieren Sie Anthos Config Management.
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.
Weisen Sie dem Nutzer die für die Registrierung des Clusters erforderlichen IAM-Rollen zu.
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.
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:
-
In der Google Cloud Console:
Wenn Sie Google Kubernetes Engine verwenden, rufen Sie die GKE-Seite Richtlinie im Abschnitt Konfiguration und Richtlinie auf.
Wenn Sie Anthos verwenden, rufen Sie die Anthos-Seite Richtlinie im Abschnitt Konfiguration und Richtlinie auf.
Wählen Sie Install Policy Controller aus.
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.
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:
- 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.
- Lassen Sie das Kästchen Policy Controller aktivieren angeklickt.
- Optional: Klicken Sie auf Erweiterte Einstellungen anzeigen, um weitere Einstellungen zu konfigurieren.
Optional: Lassen Sie zum Mutieren von Ressourcen das Kästchen Mutation-Webhook aktivieren aktiviert.
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.
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.
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.
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.
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.
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
- 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öchtenPROJECT_ID
: Ihre Projekt-IDCONFIG_YAML_PATH
: Pfad zur Dateiapply-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 Dateiapply-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:
-
In der Google Cloud Console:
Wenn Sie Google Kubernetes Engine verwenden, rufen Sie die GKE-Seite Richtlinie im Abschnitt Konfiguration und Richtlinie auf.
Wenn Sie Anthos verwenden, rufen Sie die Anthos-Seite Richtlinie im Abschnitt Konfiguration und Richtlinie auf.
- 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:
-
In der Google Cloud Console:
Wenn Sie Google Kubernetes Engine verwenden, rufen Sie die GKE-Seite Richtlinie im Abschnitt Konfiguration und Richtlinie auf.
Wenn Sie Anthos verwenden, rufen Sie die Anthos-Seite Richtlinie im Abschnitt Konfiguration und Richtlinie auf.
- Klicken Sie auf dem Tab Einstellungen neben dem Cluster, für den Sie Policy Controller deaktivieren möchten, auf das Kontextmenü more_vert > edit Konfiguration bearbeiten.
- Entfernen Sie das Häkchen aus dem Kästchen Policy Controller aktivieren.
- Klicken Sie auf Abgeschlossen.
gcloud
So deinstallieren Sie den Policy Controller:
Bearbeiten Sie die Anthos Config Management-Konfiguration in der Datei
apply-spec.yaml
und legen SiepolicyController.enabled
auffalse
fest.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
- Allgemeines zu Policy Controller
- Fehlerbehebung bei Policy Controller.
- Weitere Informationen zum Erstellen einer Einschränkung
- Die von Google bereitgestellte Einschränkungsvorlagenbibliothek verwenden
- Einschränkungen anstelle von PodSecurityPolicies verwenden
- CIS-Kubernetes-Benchmark-Richtlinieneinschränkungen verwenden