|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
|
Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.34-dev. |
Schnelleinführung
Der SUSE Security Admission Controller Stack besteht aus:
-
Einer oder mehreren ClusterAdmissionPolicy Ressourcen: dies definiert Richtlinien für Kubernetes-Cluster.
-
Einer oder mehreren PolicyServer Ressourcen: repräsentiert eine Implementierung eines Admission Controller
PolicyServer. Der Admission ControllerPolicyServerlädt und bewertet die Richtlinien Ihres Administrators. -
Einer oder mehreren AdmissionPolicy Ressourcen: Richtlinien für einen definierten Namespace.
-
Eine Bereitstellung eines
kubewarden-controller: dieser Controller überwacht die ClusterAdmissionPolicy Ressourcen und interagiert mit den Admission Controller PolicyServer Komponenten.
|
Admission Controller beschreibt seine Kubernetes Custom Resource Definitions (CRDs) hier. Admission Controller CRDs, die in diesem Tutorial und im Rest der Dokumentation erwähnt werden, haben kurze Namen, die einfacher zu verwenden sind. Dies sind die kurzen Namen für die CRDs:
|
Installation
|
Authentifizierung
Sie können Admission Controller Richtlinien aus dem GitHub-Container-Registry unter https://ghcr.io. abrufen. Sie benötigen eine Authentifizierung, um das Repository mit der Admission Controller CLI zu verwenden, ein GitHub-Personen-Zugriffstoken (PAT). Ihre Dokumentation führt Sie durch die Erstellung eines, falls Sie dies noch nicht getan haben. Dann authentifizieren Sie sich mit einem Befehl wie:
|
Stellen Sie den Admission Controller Stack mit helm Charts wie folgt bereit:
helm repo add kubewarden https://charts.kubewarden.io
helm repo update kubewarden
Installieren Sie die folgenden Helm-Charts im kubewarden Namespace in Ihrem Kubernetes-Cluster:
-
kubewarden-crds, das die ClusterAdmissionPolicy, AdmissionPolicy und PolicyServer benutzerdefinierte Ressourcenbeschreibungen registriert. Außerdem die {report} benutzerdefinierte Ressourcenbeschreibungen, die vom Audit-Scanner verwendet werden. -
kubewarden-controller, das den Admission Controller Controller und den Audit-Scanner installiert.Wenn Sie die Komponente des Audit-Scanners deaktivieren müssen, überprüfen Sie die Installationsdokumentation des Audit-Scanners Dokumentationsseite.
-
kubewarden-defaults, das einePolicyServerRessource mit dem Namendefaulterstellt. Es kann auch eine Reihe empfohlener Richtlinien installieren, um Ihren Cluster durch Durchsetzung bekannter Best Practices abzusichern.
helm install --wait -n kubewarden --create-namespace kubewarden-crds kubewarden/kubewarden-crds
helm install --wait -n kubewarden kubewarden-controller kubewarden/kubewarden-controller
helm install --wait -n kubewarden kubewarden-defaults kubewarden/kubewarden-defaults
|
Da Das bedeutet, dass, wenn Sie nicht die neueste Version des |
Die Standardkonfigurationswerte sind für die meisten Implementierungen ausreichend. Die Dokumentation beschreibt alle Optionen.
Hauptkomponenten
Admission Controller hat drei Hauptkomponenten, mit denen Sie interagieren:
-
Der PolicyServer
-
Der AdmissionPolicy
PolicyServer
Der kubewarden-controller verwaltet ein Admission Controller PolicyServer. Sie können mehrere PolicyServers im selben Kubernetes-Cluster bereitstellen.
Ein PolicyServer validiert eingehende Anfragen, indem er Admission Controller Richtlinien gegen sie ausführt.
Dies ist die Standardkonfiguration für PolicyServer:
apiVersion: policies.kubewarden.io/v1
kind: PolicyServer
metadata:
name: reserved-instance-for-tenant-a
spec:
image: ghcr.io/kubewarden/policy-server:v1.3.0
replicas: 2
serviceAccountName: ~
env:
- name: KUBEWARDEN_LOG_LEVEL
value: debug
|
Überprüfen Sie die neueste veröffentlichte |
Übersicht über die Attribute der PolicyServer Ressource:
| required | Placeholder | Beschreibung |
|---|---|---|
Y |
|
Der Name des Container-Images |
Y |
|
Die Anzahl der gewünschten Instanzen |
N |
|
Der Name des |
N |
|
Die Liste der Umgebungsvariablen |
N |
|
Die Liste der Annotationen |
Die Änderung eines dieser Attribute führt zu einer PolicyServer Implementierung mit der neuen Konfiguration.
ClusterAdmissionPolicy
Die ClusterAdmissionPolicy Ressource ist der Kernel des Admission Controller Stacks. Sie definiert, wie Richtlinien Anfragen bewerten.
Die Durchsetzung von Richtlinien ist die häufigste Operation, die ein Kubernetes-Administrator durchführt. Sie können so viele Richtlinien deklarieren, wie Sie möchten, jede richtet sich an eine oder mehrere Kubernetes-Ressourcen (das heißt, pods, Custom Resource und andere). Sie geben auch den Typ der auf die Zielressourcen angewendeten Operationen an. Die verfügbaren Vorgänge sind CREATE, UPDATE, DELETE und CONNECT.
Standard-ClusterAdmissionPolicy-Konfiguration:
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
name: psp-capabilities
spec:
policyServer: reserved-instance-for-tenant-a
module: registry://ghcr.io/kubewarden/policies/psp-capabilities:v0.1.9
rules:
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["pods"]
operations:
- CREATE
- UPDATE
mutating: true
settings:
allowed_capabilities:
- CHOWN
required_drop_capabilities:
- NET_ADMIN
Übersicht über die Attribute der ClusterAdmissionPolicy Ressource:
| required | Placeholder | Beschreibung |
|---|---|---|
N |
|
Identifiziert ein vorhandenes |
Y |
|
Der Standort der Admission Controller Richtlinie. Die folgenden Schemen sind erlaubt: |
N |
- |
|
N |
- |
|
N |
- |
|
Y |
|
Die Kubernetes-Ressourcen, die von der Richtlinie bewertet werden |
Y |
|
Welche Vorgänge für die zuvor angegebenen Typen sollten vom API-Server zur Bewertung an diese Zulassungsrichtlinie weitergeleitet werden. |
Y |
|
Setzen Sie diesen booleschen Wert |
N |
|
Ein Freiform-Objekt, das die Konfigurationswerte der Richtlinie enthält. |
N |
|
Die Aktion, die zu ergreifen ist, wenn die von einer Richtlinie bewertete Anfrage zu einem Fehler führt. Die folgenden Optionen sind erlaubt: |
N |
- |
|
N |
- |
|
Der Controller registriert die ClusterAdmissionPolicy Ressourcen |
AdmissionPolicy
AdmissionPolicy ist eine namespace-weite Ressource. Die Richtlinie verarbeitet nur die Anfragen, die auf den Namespace mit dem definierten AdmissionPolicy abzielen. Abgesehen davon gibt es keine funktionalen Unterschiede zwischen den AdmissionPolicy und ClusterAdmissionPolicy Ressourcen.
|
AdmissionPolicy erfordert Kubernetes 1.21.0 oder höher. Das liegt daran, dass
Admission Controller das |
Die vollständige Dokumentation dieser benutzerdefinierten Ressourcen ist hier oder auf docs.crds.dev.
Beispiel: Setzen Sie Ihre erste Richtlinie durch.
Wir werden die pod-privileged Richtlinie verwenden.
Wir möchten die Erstellung von privilegierten Containern in unserem Kubernetes-Cluster verhindern, indem wir diese Richtlinie durchsetzen.
Lassen Sie uns eine ClusterAdmissionPolicy definieren, um dies zu erreichen:
kubectl apply -f - <<EOF
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
name: privileged-pods
spec:
module: registry://ghcr.io/kubewarden/policies/pod-privileged:v0.2.2
rules:
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["pods"]
operations:
- CREATE
- UPDATE
mutating: false
EOF
Dies erzeugt die folgende Ausgabe:
clusteradmissionpolicy.policies.kubewarden.io/privileged-pods created
Nach der Instanziierung einer ClusterAdmissionPolicy wird der Status pending,
und es erzwingt einen Rollout des gezielten PolicyServer. Im Beispiel ist es
die PolicyServer mit dem Namen default. Sie können den Rollout überwachen, indem Sie den folgenden Befehl ausführen:
kubectl get clusteradmissionpolicy.policies.kubewarden.io/privileged-pods
Sie sollten die folgende Ausgabe sehen:
NAME POLICY SERVER MUTATING STATUS
privileged-pods default false pending
Sobald die neue Richtlinie bereit ist, registriert die kubewarden-controller ein
ValidatingWebhookConfiguration
Objekt, um sie bereitzustellen.
Der ClusterAdmissionPolicy Status wird active, sobald die Implementierung für jede PolicyServer Instanz abgeschlossen ist. Zeigen Sie ValidatingWebhookConfigurations mit folgendem Befehl an:
kubectl get validatingwebhookconfigurations.admissionregistration.k8s.io -l kubewarden
Sie sollten die folgende Ausgabe sehen:
NAME WEBHOOKS AGE
clusterwide-privileged-pods 1 9s
Sobald der ClusterAdmissionPolicy aktiv ist und der ValidatingWebhookConfiguration registriert ist, können Sie die Richtlinie testen.
Zuerst können Sie einen Pod mit einem Container not im privileged-Modus erstellen:
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: unprivileged-pod
spec:
containers:
- name: nginx
image: nginx:latest
EOF
Dies erzeugt die folgende Ausgabe:
pod/unprivileged-pod created
Der Pod wurde erfolgreich erstellt.
Jetzt können Sie einen Pod mit mindestens einem Container privileged Flag erstellen:
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: privileged-pod
spec:
containers:
- name: nginx
image: nginx:latest
securityContext:
privileged: true
EOF
Die Richtlinie verweigert die Erstellung des Pods und Sie sollten die folgende Nachricht sehen:
Error from server: error when creating "STDIN": admission webhook "clusterwide-privileged-pods.kubewarden.admission" denied the request: Privileged container is not allowed
|
Beide Beispiele haben kein |
Deinstallieren
Sie können die Ressourcen entfernen, die durch das Deinstallieren der helm Charts erstellt wurden, wie folgt:
helm uninstall --namespace kubewarden kubewarden-defaults
helm uninstall --namespace kubewarden kubewarden-controller
helm uninstall --namespace kubewarden kubewarden-crds
Nach der Entfernung der helm Charts entfernen Sie den Kubernetes-Namespace, der zum Bereitstellen des Admission Controller Stacks verwendet wurde:
kubectl delete namespace kubewarden
|
Admission Controller enthält einen Helm-Vorab-Lösch-Hook, der alle |
Admission Controller löscht ValidatingWebhookConfigurations und MutatingWebhookConfigurations. Überprüfen Sie dies mit:
kubectl get validatingwebhookconfigurations.admissionregistration.k8s.io -l "kubewarden"
kubectl get mutatingwebhookconfigurations.admissionregistration.k8s.io -l "kubewarden"
Wenn diese Ressourcen nicht automatisch entfernt werden, entfernen Sie sie manuell mit dem folgenden Befehl:
kubectl delete -l "kubewarden" validatingwebhookconfigurations.admissionregistration.k8s.io
kubectl delete -l "kubewarden" mutatingwebhookconfigurations.admissionregistration.k8s.io
Zusammenfassung
ClusterAdmissionPolicy ist die Kernel-Ressource, die ein Cluster-Operator verwalten muss. Das kubewarden-controller Modul kümmert sich automatisch um die Konfiguration der restlichen Ressourcen, die benötigt werden, um die Richtlinien auszuführen.
Weitere Schritte
Jetzt sind Sie bereit, Admission Controller bereitzustellen! Werfen Sie einen Blick auf die Richtlinien auf artifacthub.io, auf GitHub oder verwenden Sie vorhandene Rego-Richtlinien, wie in den folgenden Kapiteln gezeigt.