Pod 安全策略
Pod 是 Kubernetes 的基本调度单元,Pod 的安全直接关系到整个集群的安全。
Pod 安全策略让你能够定义 Pod 运行时的安全标准。
Pod 安全背景
从 Kubernetes 1.21 开始,PodSecurityPolicy(PSP)被废弃,取而代之的是 Pod Security Admission(PSA) 和 Pod Security Standards(PSS)。
Pod Security Standards (PSS)
PSS 定义了三种安全级别:
Baseline(基线级别)
允许基本的 Pod 配置,但阻止已知的安全风险:
Restricted(限制级别)
遵循 Kubernetes 安全最佳实践:
Pod Security Admission (PSA)
启用 PSA
namespace-label.yaml
命名空间标签
三个级别
安全上下文详解
Pod 级别
容器级别
常见配置场景
场景一:非 root 用户运行
场景二:只读文件系统
场景三:丢弃所有 Capabilities
场景四:使用 Seccomp
OPA Gatekeeper
对于更复杂的策略,可以使用 OPA Gatekeeper:
constraint-template.yaml
constraint.yaml
Kyverno
Kyverno 是另一个流行的策略引擎:
require-non-root.yaml
deny-privileged.yaml
PSP vs PSA
常见问题
Pod 创建被拒绝
镜像以 root 运行
Seccomp 配置错误
最佳实践
1. 使用限制级别
2. 显式声明安全上下文
3. 使用最小权限镜像
4. 定期审计
延伸思考
Pod 安全是 Kubernetes 安全的第一道防线:
- 从源头做起:在构建镜像时就不使用 root
- 最小权限:只授予必要的权限
- 持续监控:审计和监控异常行为
- 自动执行:使用策略引擎强制执行
但安全不是一次性的工作:
- 定期更新策略:适应新的威胁
- 测试验证:确保策略不会阻止正常功能
- 多层防御:不要依赖单一安全机制
延伸阅读
- Kubernetes 安全:RBAC 和认证授权
- NetworkPolicy 网络策略:网络隔离