K8s 集群安全加固指南

1. 禁用匿名访问

匿名访问允许未认证用户访问 API Server,存在严重安全隐患。通过以下步骤禁用:

  1. 修改 API Server 配置文件:
# /etc/kubernetes/manifests/kube-apiserver.yaml
spec:
  containers:
  - command:
    - kube-apiserver
    - --anonymous-auth=false  # 关键参数

  1. 重启 API Server:
systemctl restart kubelet

  1. 验证配置:
kubectl create namespace test-auth
# 未认证请求应返回 401 Unauthorized
curl -k https://<API-SERVER-IP>:6443/api/v1/namespaces

2. 配置 RBAC 权限

实施最小权限原则,需创建角色(Role)和绑定(RoleBinding):

  1. 创建角色(示例:只读权限)
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list", "watch"]

  1. 绑定用户/服务账户
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

  1. 关键实践:
  • 定期审计权限:kubectl get rolebindings --all-namespaces -o wide
  • 禁用默认 ServiceAccount 令牌挂载:在 Pod spec 添加 automountServiceAccountToken: false
3. API Server TLS 加固

确保通信加密和证书有效性:

  1. 证书配置最佳实践:
# 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

  1. 证书轮换策略:
# 检查证书有效期
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -enddate

# 自动轮换(K8s v1.19+ 默认启用)
kubeadm certs check-expiration

  1. 启用 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 协议

实施建议

  1. 在非生产环境测试变更
  2. 使用配置管理工具(Ansible/Terraform)固化安全配置
  3. 结合监控工具(Prometheus+Alertmanager)实时检测异常访问
  4. 定期执行 kube-bench 进行 CIS 基准扫描
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐