强制执行 Pod 安全标准
本页面概述了强制实施 Pod 安全标准的最佳实践。
使用内置的 Pod 安全准入控制器
Kubernetes v1.25 [稳定]
Pod 安全准入控制器旨在取代已废弃的 PodSecurityPolicy。
配置所有集群命名空间
缺乏任何配置的命名空间应被视为集群安全模型中的重大漏洞。我们建议花时间分析每个命名空间中工作负载的类型,并参考 Pod 安全标准,为每个命名空间确定一个合适的级别。未标记的命名空间应仅表示它们尚未进行评估。
如果所有命名空间中的所有工作负载都具有相同的安全要求,我们提供了一个示例,说明如何批量应用 PodSecurity 标签。
遵循最小权限原则
在理想情况下,每个命名空间中的每个 Pod 都应满足 restricted
策略的要求。然而,这是不可能也不切实际的,因为某些工作负载会因合法原因需要提升的权限。
- 允许
privileged
工作负载的命名空间应建立并强制实施适当的访问控制。 - 对于在这些宽松命名空间中运行的工作负载,请维护其独特安全要求的文档。如果可能,请考虑如何进一步限制这些要求。
采用多模式策略
Pod 安全标准准入控制器的 audit
和 warn
模式可以轻松收集关于 Pod 的重要安全洞察,而不会破坏现有工作负载。
最佳实践是为所有命名空间启用这些模式,将它们设置为你最终希望 enforce
的“所需”级别和版本。在此阶段生成的警告和审计注解可以指导你达到该状态。如果你期望工作负载的作者进行更改以适应所需的级别,请启用 warn
模式。如果你期望使用审计日志来监控/推动更改以适应所需的级别,请启用 audit
模式。
当你的 enforce
模式设置为所需值时,这些模式仍然可以在以下几种不同方式中发挥作用:
- 通过将
warn
设置为与enforce
相同的级别,当客户端尝试创建不通过验证的 Pod(或具有 Pod 模板的资源)时,它们将收到警告。这将帮助他们更新这些资源以符合规范。 - 在将
enforce
钉到特定非最新版本的命名空间中,将audit
和warn
模式设置为与enforce
相同的级别,但使用latest
版本,可以了解以前版本允许但根据当前最佳实践不允许的设置。
第三方替代方案
Kubernetes 生态系统中正在开发其他用于强制实施安全配置文件的替代方案
选择使用内置解决方案(例如 PodSecurity 准入控制器)还是第三方工具完全取决于你自己的情况。在评估任何解决方案时,供应链的信任至关重要。最终,使用上述任何一种方法都比无所作为要好。
本页面上的项目指的是提供 Kubernetes 所需功能的第三方产品或项目。Kubernetes 项目作者不对这些第三方产品或项目负责。有关更多详细信息,请参阅 CNCF 网站指南。
在提议添加额外第三方链接的更改之前,你应该阅读内容指南。