CentOS环境下K8S部署安全策略
Role(命名空间级)和ClusterRole(集群级)定义细粒度权限,结合RoleBinding/ClusterRoleBinding将权限分配给用户、组或服务账户。例如,为开发人员创建仅能访问特定命名空间Pod的pod-reader角色,避免过度授权。PodSecurityPolicy(CentOS 7常用)或PodSecurity admission controller(K8S 1.25+推荐)限制容器特权模式(privileged: false)、Linux capabilities(如NET_ADMIN)、挂载卷类型(禁止hostPath)及宿主机命名空间共享(hostPID: false),防止容器逃逸。runAsNonRoot: true(以非root用户运行)、readOnlyRootFilesystem: true(根文件系统只读)、allowPrivilegeEscalation: false(禁用提权),并通过fsGroup设置持久卷访问权限,降低容器内进程权限。deny-all默认策略(拒绝所有Pod间及出入站流量),仅允许必要的通信(如前端Pod访问后端Pod的特定端口)。例如,允许带app: frontend标签的Pod访问带app: backend标签的Pod的8080端口。firewalld或iptables限制对API服务器端口(默认6443)的访问,仅允许可信IP段;使用污点(Taints)和容忍度(Tolerations)控制工作负载调度到特定节点(如将监控节点标记为NoSchedule,仅允许监控组件调度)。ImagePolicyWebhook验证签名,确保镜像完整性和来源可信。Secrets中,而非硬编码在Pod或镜像中;通过stringData字段加密敏感数据,并使用kubectl create secret命令创建Secrets。定期轮换Secrets(如每月一次),避免长期泄露。/etc/kubernetes/manifests/kube-apiserver.yaml),启用etcd数据加密(--encryption-provider-config指定配置文件),配置AES-CBC或Secretbox加密算法,保护etcd中存储的Secrets、ConfigMaps等敏感数据。telnet、ftp),使用systemctl disable命令禁用;定期运行yum update更新操作系统和Kubernetes组件(如kubelet、kube-apiserver),修复已知漏洞;设置复杂用户口令策略(如长度≥8位,包含大小写字母、数字和特殊字符)。--insecure-port=0),仅使用安全端口(--secure-port=6443);限制匿名访问(--anonymous-auth=false);启用审计日志(--audit-log-path=/var/log/kubernetes/audit.log),记录所有API调用(如create、delete),便于事后追溯。hostNetwork),自动化安全策略执行。