|
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. |
Häufige Tasks
Dies beschreibt allgemeine Aufgaben, nachdem Sie installieren SUSE Security Admission Controller in Ihrem Kubernetes-Cluster.
Die einzelnen Aufgaben sind in einer logischen Reihenfolge angeordnet.
Richtlinien testen
Admission Controller verwendet zwei Werkzeuge, um Ihnen zu helfen, Richtlinien zu finden und sie lokal zu testen:
-
Artifact Hub, mit ihrem Paketfilter für Admission Controller Richtlinien
-
kwctl, ein CLI-Tool
Artifact Hub
Artifact Hub stellt von der Community bereitgestellte Richtlinien bereit. Zum Beispiel können Sie Ersatz für die ausgelaufenen Kubernetes Pod-Sicherheitsrichtlinien finden, die von den Admission Controller Entwicklern erstellt wurden.
Wie im Screenshot unten gezeigt, wählen Sie, sobald Sie eine interessante Richtlinie gefunden haben, die Install Schaltfläche und verwenden Sie kwctl, um die Richtlinie für Ihr Cluster abzurufen.
|
Früher konnten Admission Controller Richtlinien im Admission Controller Policy Hub gefunden werden. Dies wurde eingestellt. Richtlinien sind jetzt verfügbar von https://artifacthub.io. |
kwctl CLI-Tool
kwctl ist das CLI-Tool von Admission Controller für Richtlinienautoren und Cluster-Administratoren, um Richtlinien vor der Anwendung in einem Kubernetes-Cluster zu testen.
Dieses Tool hat eine ähnliche Benutzeroberfläche wie das docker CLI-Tool.
Einsatzbereiche
Sie können kwctl in diesen Szenarien verwenden:
Als Autor von Richtlinien
-
End-to-End-Tests Ihrer Richtlinie: Testen Sie Ihre Richtlinie gegen erstellte Kubernetes-Anfragen und stellen Sie sicher, dass sich Ihre Richtlinie wie erwartet verhält. Sie können sogar kontextabhängige Richtlinien testen, die Zugriff auf einen laufenden Cluster erfordern.
-
Metadaten in Ihr Wasm-Modul einbetten: Die Binärdatei enthält Annotationen der Berechtigungen, die zum Ausführen benötigt werden. Sie können diese Annotationen mit
kwctlinspizieren und ändern. -
Richtlinien in OCI-Registries veröffentlichen: Die Binärdatei ist ein vollständig konformes OCI-Objekt und kann in OCI-Registries gespeichert werden.
Als Clusteradministrator
-
Remote-Richtlinien inspizieren: Gegeben eine Richtlinie in einer OCI-Registry oder auf einem HTTP-Server, zeigen Sie alle statischen Informationen über die Richtlinie an.
-
Trockenlauf einer Richtlinie in Ihrem Cluster: Testen Sie die Richtlinie gegen erstellte Kubernetes-Anfragen und stellen Sie sicher, dass sich die Richtlinie wie erwartet verhält, basierend auf den von Ihnen bereitgestellten Eingabedaten. Sie können auch kontextabhängige Richtlinien testen, die im Trockenlaufmodus Zugriff auf einen laufenden Cluster erfordern.
-
Erzeugen Sie das anfängliche
ClusterAdmissionPolicyGerüst für Ihre Richtlinie: Erzeugen Sie eineYAMLDatei mit allen erforderlichen Einstellungen, die auf Ihren Kubernetes-Cluster mitkubectlangewendet werden können.
Installation
kwctl Binärdateien für die stabilen Versionen sind im GitHub-Repository verfügbar. Um kwctl aus dem GitHub Repo zu erstellen, benötigen Sie eine Rust Entwicklungsumgebung.
Verwendung
Sie können alle kwctl Optionen und Unterbefehle auflisten, indem Sie den folgenden Befehl ausführen:
$ kwctl --help
kwctl 0.2.5
Admission Controller Developers <cncf-kubewarden-maintainers@lists.cncf.io>
Tool to manage Admission Controller policies
USAGE:
kwctl [OPTIONS] <SUBCOMMAND>
OPTIONS:
-h, --help Print help information
-v Increase verbosity
-V, --version Print version information
SUBCOMMANDS:
annotate Add Admission Controller metadata to a WebAssembly module
completions Generate shell completions
digest Fetch the digest of its OCI manifest
help Print this message or the help of the given subcommand(s)
inspect Inspect Admission Controller policy
policies Lists all downloaded policies
pull Pulls a Admission Controller policy from a given URI
push Pushes a Admission Controller policy to an OCI registry
rm Removes a Admission Controller policy from the store
run Runs a Admission Controller policy from a given URI
scaffold Scaffold a Kubernetes resource or configuration file
verify Verify a Admission Controller policy from a given URI using Sigstore
Hier sind einige Beispiele für die Verwendung von Befehlen:
-
Listen Sie die Richtlinien: listet alle in der lokalen
kwctlregistrierten Richtlinien auf-
Befehl:
kwctl policies
-
-
Erhalten Sie die Richtlinie: laden Sie die Richtlinie herunter und speichern Sie sie im lokalen
kwctlSpeicher-
Befehl:
kwctl pull <policy URI>$ kwctl pull registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 $ kwctl policies +--------------------------------------------------------------+----------+---------------+--------------+----------+ | Policy | Mutating | Context aware | SHA-256 | Size | +--------------------------------------------------------------+----------+---------------+--------------+----------+ | registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 | no | no | 59e34f482b40 | 21.86 kB | +--------------------------------------------------------------+----------+---------------+--------------+----------+
-
-
Verstehen Sie, wie die Richtlinie funktioniert: überprüfen Sie die Metadaten der Richtlinie
-
Befehl:
kwctl inspect <policy URI>$ kwctl inspect registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 Details title: pod-privileged description: Limit the ability to create privileged containers author: Flavio Castelli url: https://github.com/kubewarden/pod-privileged-policy source: https://github.com/kubewarden/pod-privileged-policy license: Apache-2.0 mutating: false context aware: false execution mode: kubewarden-wapc protocol version: 1 Annotations io.kubewarden.kwctl 0.1.9 Rules ──────────────────── --- - apiGroups: - "" apiVersions: - v1 resources: - pods operations: - CREATE ──────────────────── Usage This policy doesn't have a configuration. Once enforced, it will reject the creation of Pods that have at least a privileged container defined.
-
-
Bewerten Sie die Richtlinie: Bewerten Sie die Richtlinie und finden Sie, falls verfügbar, die richtigen Konfigurationswerte, um Ihren Anforderungen gerecht zu werden.
Sie benötigen etwas Vertrautheit mit den Kubernetes REST APIs.
-
Befehl:
kwctl run -r <"Kubernetes Admission request" file path> -s <"JSON document" file path> <policy URI> -
Szenario 1:
-
Anfrage zur Bewertung: Erstellen Sie einen Pod ohne 'privilegierten' Container
$ kwctl run registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 -r unprivileged-pod-request.json {"uid":"C6E115F4-A789-49F8-B0C9-7F84C5961FDE","allowed":true,"status":{"message":""}} -
Entsprechender Befehl mit der heruntergeladenen Richtlinien-Binärdatei:
`$ kwctl run file://$PWD/pod-privileged-policy.wasm -r unprivileged-pod-request.json {"uid":"C6E115F4-A789-49F8-B0C9-7F84C5961FDE","allowed":true,"status":{"message":""}} -
Ergebnis: Die Richtlinie erlaubt die Anfrage
-
-
Szenario 2:
-
Anfrage zur Bewertung: Erstellen Sie einen Pod mit mindestens einem 'privilegierten' Container
-
Befehl:
kwctl run registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 -r privileged-pod-request.json -
Entsprechender Befehl mit der heruntergeladenen Richtlinien-Binärdatei:
kwctl run file://$PWD/pod-privileged-policy.wasm -r privileged-pod-request.json -
Ausgabe:
{ "uid": "8EE6AF8C-C8C8-45B0-9A86-CB52A70EC50D", "allowed": false, "status": { "message": "User 'kubernetes-admin' cannot schedule privileged containers" } } -
Ergebnis: Die Richtlinie verweigert die Anfrage
-
Für komplexere Beispiele siehe den Blogbeitrag Einführung von
kwctlfür Kubernetes-Administratoren. -
Richtlinien durchsetzen
Sie setzen eine Richtlinie durch, indem Sie eine ClusterAdmissionPolicy definieren und sie dann mit kubectl in Ihrem Cluster bereitstellen.
kwctl hilft, eine ClusterAdmissionPolicy aus der Richtlinie zu generieren, die Sie durchsetzen möchten.
Nachdem Sie die ClusterAdmissionPolicy generiert und auf Ihren Cluster angewendet haben, können Sie die unten beschriebenen Schritte im Kurzanleitung befolgen:
-
Generieren Sie die
ClusterAdmissionPolicyaus der Richtliniemanifestund speichern Sie sie in einer Datei.-
Befehl:
kwctl scaffold manifest -t ClusterAdmissionPolicy <policy URI> > <"policy name".yaml>$ kwctl scaffold manifest -t ClusterAdmissionPolicy registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9 --- apiVersion: policies.kubewarden.io/v1alpha2 kind: ClusterAdmissionPolicy metadata: name: privileged-pods spec: module: "registry://ghcr.io/kubewarden/policies/pod-privileged:v0.1.9" settings: {} rules: - apiGroups: - "" apiVersions: - v1 resources: - pods operations: - CREATE mutating: false
Standardmäßig ist der
nameWert aufgenerated-policyfestgelegt. Sie möchten es möglicherweise bearbeiten, bevor Sie dieClusterAdmissionPolicybereitstellen. Der Name im vorherigen Beispiel ist aufprivileged-podsfestgelegt. -
-
Stellen Sie die
ClusterAdmissionPolicyin Ihrem Kubernetes-Cluster bereit.-
Befehl:
kubectl apply -f <"policy name".yaml>$ kubectl apply -f pod-privileged-policy.yaml clusteradmissionpolicy.policies.kubewarden.io/privileged-pods created
-
Nach der Bereitstellung der ClusterAdmissionPolicy werden alle an Ihren Cluster gesendeten Anfragen von der Richtlinie bewertet, ob sie im Geltungsbereich der Richtlinie liegen.
Nächste Schritte
-
Richtlinien schreiben erklärt, wie man Richtlinien in verschiedenen Sprachen schreibt und WebAssembly-Binärdateien generiert, damit sie von Admission Controller verwendet werden können.
-
Richtlinien verteilen erklärt, wie man Richtlinien an OCI-Registries veröffentlicht.