K8s 集群安全加固:禁用匿名访问、配置 RBAC 权限与 API Server TLS
·
K8s 集群安全加固指南
1. 禁用匿名访问
匿名访问允许未认证用户访问 API Server,存在严重安全隐患。通过以下步骤禁用:
- 修改 API Server 配置文件:
# /etc/kubernetes/manifests/kube-apiserver.yaml
spec:
containers:
- command:
- kube-apiserver
- --anonymous-auth=false # 关键参数
- 重启 API Server:
systemctl restart kubelet
- 验证配置:
kubectl create namespace test-auth
# 未认证请求应返回 401 Unauthorized
curl -k https://<API-SERVER-IP>:6443/api/v1/namespaces
2. 配置 RBAC 权限
实施最小权限原则,需创建角色(Role)和绑定(RoleBinding):
- 创建角色(示例:只读权限)
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
- 绑定用户/服务账户
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: default
subjects:
- kind: User
name: "user@example.com"
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
- 关键实践:
- 定期审计权限:
kubectl get rolebindings --all-namespaces -o wide - 禁用默认 ServiceAccount 令牌挂载:在 Pod spec 添加
automountServiceAccountToken: false
3. API Server TLS 加固
确保通信加密和证书有效性:
- 证书配置最佳实践:
# kube-apiserver.yaml 新增参数
- --tls-cert-file=/etc/kubernetes/pki/apiserver.crt
- --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
- --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
- 证书轮换策略:
# 检查证书有效期
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -enddate
# 自动轮换(K8s v1.19+ 默认启用)
kubeadm certs check-expiration
- 启用 TLS 1.3:
# 在 kube-apiserver.yaml 添加
- --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
安全验证矩阵
| 加固项 | 验证命令 | 预期输出 |
|---|---|---|
| 匿名访问 | curl -k https://<API-SERVER-IP> |
401 Unauthorized |
| RBAC 权限 | kubectl auth can-i list pods |
yes/no (按用户权限变化) |
| TLS 版本 | nmap --script ssl-enum-ciphers -p 6443 <IP> |
无 TLS 1.0/1.1 协议 |
实施建议:
- 在非生产环境测试变更
- 使用配置管理工具(Ansible/Terraform)固化安全配置
- 结合监控工具(Prometheus+Alertmanager)实时检测异常访问
- 定期执行
kube-bench进行 CIS 基准扫描
更多推荐

所有评论(0)