|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 Admission Controller 1.34-dev. |
上下文感知策略
开发者可以创建在运行时从Kubernetes集群获取信息的策略。这些是上下文感知策略。上下文感知策略可以使用集群中部署的资源信息来确定一个`AdmissionRequest`是否可接受。
|
上下文感知策略仅在SUSE Security Admission Controller版本≥v1.6.0中可用。 |
在集群中,策略所能访问的资源,由策略服务器的https://kubernetes.io/docs/concepts/security/service-accounts/[服务账户]决定。集群管理员通过Kubernetes RBAC规则控制策略可以访问的资源。上下文感知策略仅对请求的资源具有*读取*权限。
出于安全原因,只有`ClusterAdmissionPolicy`策略可以从Kubernetes集群获取信息。这是因为非特权用户可以部署`AdmissionPolicy`资源。
如果非特权用户以`AdmissionPolicy`身份部署上下文感知策略,系统:
-
阻止所有访问Kubernetes资源的尝试。
-
将其报告给集群管理员。
默认情况下,Admission Controller阻止对所有集群资源的访问。SUSE Security Admission Controller管理员定义每个上下文感知策略可以读取的Kubernetes资源,并通过`contextAwareResources`实现此目的。
以下示例部署一个需要访问`Deployment`和`Pod`资源的策略:
apiVersion: policies.kubewarden.io/v1
kind: ClusterAdmissionPolicy
metadata:
name: context-aware-policy
namespace: default
spec:
policyServer: default
module: "registry://ghcr.io/kubewarden/policies/context-aware-policy:v1.0.0"
settings: {}
contextAwareResources:
- apiVersion: "apps/v1"
kind: "deployment"
- apiVersion: "v1"
kind: "pod"
rules:
- apiGroups: ["apps"]
apiVersions: ["v1"]
resources: ["deployment"]
operations:
- CREATE
- UPDATE
mutating: false
一旦部署,该策略可以读取`deployment`和`pod`资源的数据。
策略作者为其上下文感知策略提供Kubernetes资源列表。策略作者通过注释策略来实现这一点。SUSE Security Admission Controller管理员使用`kwctl inspect`命令查看策略元数据。他们可以获取策略需要访问的资源列表。管理员使用此列表来填充`ClusterAdmissionPolicy`定义。
|
为了防止系统滥用,SUSE Security Admission Controller管理员必须审查策略访问的资源。 例如,评估入口对象的策略有充分理由读取集群中定义的`Ingress`资源。同一策略无法证明有权访问`Secret`资源。 策略应具有正常运行所需的最小访问权限。 |
|
Kubernetes资源识别使用`apiVersion`和`kind`。 通常, 对于内核资源,第一个将不起作用,第二个将起作用。
所有其他Kubernetes资源需要完整的定义: |
进一步阅读
您可以在参考文档的本节中找到有关上下文感知策略的更详细信息。