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.

Richtlinienmetadaten

Die SUSE Security Admission Controller Metadatendatei, metadata.yaml, ist eine Konfigurationsdatei, die wichtige Informationen und Einstellungen enthält, die sich auf die innerhalb von Admission Controller verwendeten Richtlinien beziehen. Diese Dokumentation bietet einen Überblick über den Zweck und die Verwendung der Metadatendatei.

Die Richtliniendatei metadata.yaml hat Standardwerte für die Richtlinie sowie Metadaten wie Autor und Beschreibung, die vom Richtlinienautor festgelegt werden. Der kwctl annotate Befehl verwendet die Datei, um die .wasm Datei, die die Richtlinie enthält, zu annotieren. Daher sind alle relevanten Informationen, die zur Ausführung der Richtlinie erforderlich sind, verfügbar. Weitere Informationen zur Annotation der Richtlinie finden Sie im Leitfaden „Richtlinien verteilen“.

Wenn Richtlinienbenutzer eine Richtlinie verwenden möchten, generieren sie ein YAML-Manifest mit kwctl scaffold. Dieser Befehl liest die in das gelieferte Wasm-Modul eingebetteten Richtlinienmetadaten, führt Überprüfungen durch und gibt ein YAML-Manifest zurück, das der Autor unverändert verwenden oder modifizieren kann.

Als Richtlinienautor können Sie die metadata.yaml Datei anpassen, die während der Erstellung Ihrer Richtlinie bereitgestellt wurde.

Siehe das folgende Beispiel für eine metadata.yaml:

rules:
  - apiGroups: [""]
    apiVersions: ["v1"]
    resources: ["pods"]
    operations: ["CREATE"]
mutating: false
contextAwareResources: []
executionMode: kubewarden-wapc
policyType: kubernetes
backgroundAudit: true
annotations:
  # kubewarden specific:
  io.kubewarden.policy.title: My policy
  io.kubewarden.policy.version: 0.1.0 # should match the OCI tag
  io.kubewarden.policy.description: Short description
  io.kubewarden.policy.author: myself
  io.kubewarden.policy.url: https://github.com/yourorg/my-policy
  io.kubewarden.policy.source: https://github.com/yourorg/my-policy
  io.kubewarden.policy.license: Apache-2.0
  # The next two annotations are used in the policy report generated by the
  # Audit scanner. Severity indicates policy check result criticality and
  # Category indicates policy category. See more here at docs.kubewarden.io
  io.kubewarden.policy.severity: medium
  io.kubewarden.policy.category: Resource validation
  # artifacthub specific: (optional, to release in Artifact Hub)
  io.kubewarden.policy.ociUrl: ghcr.io/myorg/my-policy
  io.artifacthub.displayName: Policy Name
  io.artifacthub.resources: Pod
  io.artifacthub.keywords: pod, cool policy, kubewarden

Aktivierung von Hintergrundprüfungen

Die Metadatendatei enthält ein Flag, backgroundAudit, das die Hintergrundprüfungen für eine bestimmte Richtlinie aktiviert. Standardmäßig ist dieses Flag auf true eingestellt.

Es gibt Richtlinien, die aufgrund ihrer Funktionsweise oder der Art der Ereignisse, mit denen sie sich befassen, dieses Feld auf false eingestellt haben sollten. Weitere Informationen finden Sie in der Dokumentation des Audit-Scanners, im Abschnitt über die Einschränkungen.

Definieren von Kubernetes-Ressourcen, auf die Richtlinien zugreifen können.

Innerhalb der Metadatendatei können Benutzer im contextAwareResources-Feld definieren, auf welche Kubernetes-Ressourcen die Richtlinie zugreifen kann. Zum Beispiel, wenn die Richtlinie Zugriff auf die Namespace-Ressource benötigt. Der Autor der Richtlinie kann die contextAwareResources wie folgt definieren:

[...]
contextAwareResources:
  - apiVersion: v1 kind: Namespace
[...]

Richtlinien als mutierend oder nicht mutierend angeben:

Die Metadatendatei hat ein Flag, mutating, das es Benutzern ermöglicht, eine Richtlinie entweder als mutierend oder nicht mutierend zu konfigurieren. Eine mutierende Richtlinie ändert die eingehenden Anfragen oder die verwalteten Ressourcen. Eine nicht mutierende Richtlinie beobachtet und setzt Einschränkungen durch, ohne Änderungen vorzunehmen. Diese Unterscheidung ist entscheidend für die Bestimmung, wie Richtlinien mit den Kubernetes-Ressourcen interagieren und welche Auswirkungen sie auf den Cluster haben.

Richtlinientyp als Kubernetes oder Raw angeben:

Die Metadatendatei hat ein Flag, policyType, das es Benutzern ermöglicht, eine Richtlinie entweder als kubernetes oder raw zu kennzeichnen. Eine Kubernetes-Richtlinie ist eine Richtlinie, die Kubernetes-Ressourcen validiert. Eine Raw-Richtlinie ist eine Richtlinie, die beliebige JSON-Dokumente validiert. Standardmäßig wird dieses Feld, wenn es nicht vom Benutzer angegeben wird, beim Annotieren einer Richtlinie auf kubernetes gesetzt. Siehe den Abschnitt Raw Policies für weitere Informationen.

Definieren von Zieltypen für Ressourcen

Die Metadatendatei bietet Benutzern die Möglichkeit, die Regeln im rules-Feld zu definieren, das die Ressourcentypen bestimmt, auf die die Richtlinie angewendet wird. Diese Funktion ermöglicht es Benutzern, präzise Kontrolle über die Durchsetzung von Richtlinien auszuüben und sicherzustellen, dass Richtlinien nur auf die beabsichtigten Ressourcentypen angewendet werden. Mit dieser feinkörnigen Kontrolle können Benutzer sicherstellen, dass Richtlinien genau ausgerichtet sind, um ihren spezifischen Anforderungen zu entsprechen und eine unbeabsichtigte Anwendung von Richtlinien auf nicht verwandte Ressourcentypen zu vermeiden.