目录
- 1.概念
- 2.实施方式
- 3.迁移自 PodSecurityPolicies
- 4.示例命名空间注解配置
1.概念
PodSecurity
是 Kubernetes 引入的一个新特性,旨在替代已废弃的 Pod Security Policies (PSP),以更简洁和统一的方式管理集群中Pod的安全性。这个新特性通过预定义的 Pod 安全标准(Pod Security Standards,PSS)和策略实施对Pod的运行时行为进行约束,主要分为三个级别:
-
privileged(特权):这一级别对Pod的限制最少,允许几乎所有的安全上下文和配置,适合需要直接访问硬件或执行高权限操作的系统组件。
-
baseline(基线):这是默认的安全级别,适用于大部分应用。它禁止了一些高风险操作,比如运行特权容器、使用宿主机网络和PID命名空间、以及使用特定的敏感卷类型等。这个级别的目标是在安全性与灵活性之间找到平衡。
-
restricted(受限):此级别实施最严格的限制,目的是为了保护集群免受潜在的攻击。它不允许容器以root身份运行,限制了对敏感资源的访问,并且对容器的运行环境有更严格的控制。对于面向互联网的应用或第三方应用,这是一个推荐的设置。
2.实施方式
- PodSecurity admission controller:负责执行这些安全策略,需要在集群中启用。
- 命名空间注解:可以通过在命名空间上设置注解来指定该命名空间下所有Pod的默认安全策略。
- 逐个Pod的例外:即使在命名空间设置了默认策略,也可以为单个Pod设置例外,但这种做法应谨慎使用。
3.迁移自 PodSecurityPolicies
如果你之前使用了PSP,迁移至PodSecurity
特性可能涉及以下步骤:
- 审计现有策略:分析现有的PSP,了解它们实施了哪些安全限制。
- 映射到新的标准:根据PSP的内容,将其映射到
privileged
、baseline
或restricted
级别。 - 更新集群配置:启用
PodSecurity
准入控制器,并在必要的命名空间上设置适当的注解。 - 测试和调整:在生产环境前,对策略变化进行充分测试,并根据应用的实际需求进行调整。
4.示例命名空间注解配置
apiVersion: v1
kind: Namespace
metadata:
name: my-app-namespace
annotations:
pod-security.kubernetes.io/enforce: "restricted"
pod-security.kubernetes.io/enforce-version: "latest"
pod-security.kubernetes.io/warn: "privileged"
pod-security.kubernetes.io/warn-version: "latest"
pod-security.kubernetes.io/audit: "baseline"
pod-security.kubernetes.io/audit-version: "latest"
在这个例子中,my-app-namespace
命名空间强制执行了 restricted
级别的策略,同时对尝试使用 privileged
策略的Pod发出警告,并对不符合 baseline
级别及以上策略的Pod进行审计记录。
通过采用PodSecurity
,Kubernetes集群管理者能够更简便地维护集群安全,同时也便于跟随Kubernetes的发展趋势进行升级和维护。