Kubernetes 安全
你有没有想过,你的应用在 Kubernetes 集群中可以访问什么?
如果没有适当的安全控制,应用可能:
- 访问其他命名空间的敏感数据
- 修改集群配置
- 窃取密钥和证书
Kubernetes 安全机制让你能够精细控制每个组件的访问权限。
安全概述
Kubernetes 安全需要关注四个层面:
认证(Authentication)
用户认证
ServiceAccount
每个 Pod 都有一个 ServiceAccount,用于 Pod 访问 API Server:
pod-with-sa.yaml
Token 挂载
RBAC(基于角色的访问控制)
核心概念
Role 与 ClusterRole
role.yaml
clusterrole.yaml
RoleBinding 与 ClusterRoleBinding
rolebinding.yaml
clusterrolebinding.yaml
常用动词
常用角色示例
只读访问
read-only-role.yaml
Deployment 管理
deploy-role.yaml
Secret 访问
secret-role.yaml
聚合 ClusterRole
aggregate-clusterrole.yaml
最佳实践
1. 最小权限原则
2. 命名空间隔离
3. ServiceAccount 专用
4. 禁用默认 Token
安全上下文
Pod 安全上下文
security-context-pod.yaml
容器安全上下文
网络安全
NetworkPolicy
networkpolicy.yaml
常见问题
RoleBinding 不生效
权限不足
ServiceAccount Token 泄露
安全审计
审计日志
audit-policy.yaml
延伸思考
Kubernetes 安全是一个多层次的系统:
- 身份认证:确认谁在访问
- 权限控制:限制可以做什么
- 网络隔离:控制网络访问
- 资源限制:防止资源滥用
但安全不是一次性的工作:
- 定期审计:检查权限配置
- 最小权限:避免权限过大
- 监控告警:发现异常访问
- 持续更新:应对新的威胁
延伸阅读
- Pod 安全策略:Pod 安全配置
- NetworkPolicy 网络策略:网络隔离