本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

这是尚未发布的文档。 Admission Controller 1.34-dev.

策略元数据

SUSE Security Admission Controller 元数据文件 metadata.yaml 是一个配置文件,包含与 Admission Controller 中使用的策略相关的重要信息和设置。 本文档概述了元数据文件的用途及使用方法。

策略 metadata.yaml 文件具有策略的默认值,以及由策略作者设置的元数据,如作者和描述。 kwctl annotate 命令使用该文件对包含策略的 .wasm 文件进行注释。 因此,运行策略所需的所有相关信息均可用。 有关如何注释策略的更多信息,请参阅 分发策略 指南。

当策略用户想要使用策略时,他们使用 kwctl scaffold 生成 YAML 清单。 此命令读取嵌入在已交付的 Wasm 模块中的策略元数据,执行检查,并返回作者可以直接使用或修改的 YAML 清单。

作为策略作者,您可以调整在策略搭建过程中提供的 metadata.yaml 文件。

请参阅以下 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

启用后台审计检查

元数据文件包含一个标志 backgroundAudit,用于启用特定策略的后台审计检查。 默认情况下,此标志设置为 true

有些策略由于其工作方式或关注的事件类型,应将此字段设置为 false。 您可以在 审计扫描器文档 的限制部分找到更多信息。

定义策略可以访问的 Kubernetes 资源

在元数据文件中,使用 contextAwareResources 字段,用户可以定义策略可以访问哪些 Kubernetes 资源。 例如,如果策略需要访问 Namespace 资源。 策略作者可以将 contextAwareResources 定义为:

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

将策略指定为变更或非变更

元数据文件有一个标志 mutating,允许用户将策略配置为变更或非变更。 变更策略会修改传入的请求或正在管理的资源。 非变更策略观察并执行限制,而不进行任何更改。 这种区分对于确定策略如何与 Kubernetes 资源交互及其对集群的影响至关重要。

将策略类型指定为 Kubernetes 或原始

元数据文件有一个标志 policyType,允许用户将策略标记为 kubernetesraw。 Kubernetes 策略是验证 Kubernetes 资源的策略。 原始策略是验证任意 JSON 文档的策略。 默认情况下,如果用户未指定,此字段在注释策略时设置为 kubernetes。 有关更多信息,请参阅 原始策略 部分。

定义资源类型目标

元数据文件为用户提供在 rules 字段中定义规则的功能,这些规则决定了策略适用的资源类型。 此功能使用户能够精确控制策略的执行,确保策略仅应用于预期的资源类型。 通过这种细粒度控制,用户可以确保策略被准确地针对目标资源类型,符合其特定要求,并避免将策略意外应用于不相关的资源类型。