Kubernetes安全指南:认证授权与容器防护
Kubernetes 安全深度解析:从认证授权到镜像防护
一、认证与授权:集群访问的第一道防线
1.1 认证方式详解
Kubernetes 提供了三种主要认证机制:
X.509 证书认证(最严格的认证方式):
# 查看当前集群的证书配置
kubectl config view --raw -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 --decode
Bearer Token 认证(常用于服务间调用):
# ServiceAccount 自动生成的 Token 示例
apiVersion: v1
kind: Secret
metadata:
name: myapp-token
annotations:
kubernetes.io/service-account.name: myapp
type: kubernetes.io/service-account-token
ServiceAccount(Pod 内默认认证方式):
apiVersion: v1
kind: ServiceAccount
metadata:
name: monitoring-sa
automountServiceAccountToken: false # 安全建议:非必要不自动挂载
1.2 RBAC 权限控制模型
最佳实践示例:
# 最小权限原则的 Role 定义
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: monitoring
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
# 对应的 RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: monitoring
subjects:
- kind: ServiceAccount
name: monitoring-sa
namespace: monitoring
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
二、安全上下文:容器运行时防护
2.1 关键安全配置
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
containers:
- name: sec-ctx-demo
image: busybox
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
add: ["NET_BIND_SERVICE"]
安全建议:
- 所有生产容器应设置
readOnlyRootFilesystem: true
- 非特权容器应设置
allowPrivilegeEscalation: false
- 使用
capabilities.drop: ["ALL"]
后按需添加必要权限
三、网络隔离:零信任网络策略
3.1 NetworkPolicy 实战
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: database-isolation
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
role: app
ports:
- protocol: TCP
port: 5432
典型场景策略:
- 前端只能访问后端服务
- 数据库只允许特定应用访问
- 禁止所有 Namespace 间默认通信
四、镜像安全:供应链防护
4.1 镜像签名验证流程
4.2 Trivy 扫描集成
# CI 流水线中的扫描示例
trivy image --severity HIGH,CRITICAL myapp:1.0.0
# 返回非零退出码将中断部署流程
# 定期集群扫描
trivy k8s --report summary cluster
关键指标监控:
- CVE 漏洞数量随时间变化
- 修复的漏洞占比
- 高风险镜像部署趋势
五、综合安全实践方案
- 认证授权:定期轮换证书(建议90天),使用 OPA 进行细粒度授权
- 运行时安全:部署 Falco 进行异常行为检测
- 网络防护:默认拒绝所有流量,按需开放最小权限
- 镜像管理:私有仓库 + 强制签名扫描 + 自动阻断高危镜像
# 安全准入控制器示例
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: image-validation
webhooks:
- name: validator.trivy.io
rules:
- operations: ["CREATE", "UPDATE"]
apiGroups: ["*"]
apiVersions: ["*"]
resources: ["pods"]
clientConfig:
service:
name: trivy-admission
path: "/validate"
通过以上多层防护体系,可显著提升 Kubernetes 集群的安全水位。建议企业根据自身安全要求选择适合的方案组合。