
Open Policy Agent: Top 5 Kubernetes 准入控制策略
如何使用 Open Policy Agent 实现准入策略控制,可以参考这里
本文翻译自 Open Policy Agent: The Top 5 Kubernetes Admission Control Policies
Kubernetes 开发人员和平台工程师通常承受着非常大的压力,以保持应用程序部署的快速进行,并且总是为了速度和进度而做出妥协。平台团队越来越有责任确保这些妥协(例如管理 Ingress)不会导致客户数据暴露在整个互联网上等后果。
幸运的是,Kubernetes 提供了设置策略的能力,通过检查并防止部署错误将其投入生产,从而避免这些后果。为了确保团队的应用程序不会比信心更重要,以下是现在应该在集群中运行的前五个 Kubernetes 准入控制策略。
1. 可信镜像仓库
此策略很简单,但功能强大:仅允许从受信任的镜像仓库中拉取的容器映像,并且可以选择仅拉取与允许的仓库镜像地址列表匹配的那些镜像。
当然,从互联网(或可信镜像仓库库以外的任何地方)拉取未知镜像会带来风险——例如恶意软件。但是还有其他很好的理由来维护单一的可信来源,例如在企业中实现可支持性。通过确保镜像仅来自受信任的镜像仓库,可以密切控制镜像库存,降低软件熵和蔓延的风险,并提高集群的整体安全性。
相关策略:
- 禁止所有带有“latest” tag 的镜像
- 仅允许签名镜像或匹配特定哈希/SHA 的镜像
策略示例:
package kubernetes.validating.images
deny[msg] {
some i
input.request.kind.kind == "Pod"
image := input.request.object.spec.containers[i].image
not startswith(image, "hooli.com/")
msg := sprintf("Image '%v' comes from untrusted registry", [image])
}
2. 标签安全
此策略要求所有 Kubernetes 资源都包含指定的标签并使用适当的格式。由于标签决定了 Kubernetes 对象和策略的分组,包括工作负载可以运行的位置——前端、后端、数据层——以及哪些资源可以发送流量,标签错误会导致生产中无法解释的部署和可支持性问题。此外,如果没有对标签应用方式的访问控制,集群就缺乏基本的安全性。最后,手动输入标签的危险在于错误会蔓延,特别是因为标签在 Kubernetes 中既灵活又强大。应用此策略并确保标签配置正确且一致。





