1. 操作系统层加固
/etc/passwd排查并锁定不必要的超级账户(如adm、lp等),减少系统被提权攻击的风险。/etc/login.defs文件,强制用户设置包含大小写字母、数字和特殊字符的复杂口令(长度≥10位)。chattr +i命令给/etc/passwd、/etc/shadow、/etc/group等文件添加不可更改属性,防止未授权修改。/etc/pam.d/su文件,仅允许特定组(如wheel)用户通过su切换至root。systemctl disable关闭FTP、邮件服务器等非必需服务,降低攻击面。firewalld或iptables限制对SSH(22端口)、Kubernetes API(6443端口)等关键服务的访问,仅放行必要IP。2. Kubernetes组件版本管理
kubeadm upgrade命令将Kubernetes集群升级至最新稳定版本,获取安全补丁(如修复CVE漏洞)。kubelet、kubeadm、kubectl等组件版本与集群版本一致,避免兼容性问题导致的安全风险。1. API Server安全配置
apiserver.crt、apiserver.key),强制客户端(如kubelet、kubectl)使用证书认证,禁用匿名访问(设置--anonymous-auth=false)。--advertise-address参数指定API Server仅监听本地接口或内网IP,避免暴露在公网。2. RBAC权限最小化
kubectl create namespace创建业务命名空间(如dev、prod),将不同团队的资源分隔,避免越权访问。Role(命名空间级)或ClusterRole(集群级)定义最小权限(如get/list/watch pods),再通过RoleBinding或ClusterRoleBinding绑定至用户/服务账户。ClusterRole添加审计注解(如audit.k8s.io/audit-level: Metadata),记录用户对敏感资源(如secrets、deployments)的操作,便于溯源。1. 网络策略(NetworkPolicy)
NetworkPolicy资源定义Pod访问规则(如仅允许frontend命名空间的Pod访问backend命名空间的db标签Pod),未定义策略的命名空间默认拒绝所有流量。1. Pod安全配置
Pod Security Standards(PSS),启用baseline(基线)或restricted(严格)策略,禁止特权容器(privileged: false)、限制挂载主机路径(hostPath仅读)、设置根文件系统为只读(readOnlyRootFilesystem: true)。runAsNonRoot: true(以非root用户运行)、capabilities(删除不必要的Linux能力,如NET_ADMIN),降低容器逃逸风险。2. 镜像安全管控
ImagePolicyWebhook验证签名有效性,防止篡改。1. etcd加密
/etc/etcd/etcd.conf),启用--encryption-provider-config参数,配置AES-256-GCM加密算法,保护secrets、configmaps等敏感数据的存储安全。2. Secret安全管理
kubectl create secret命令将敏感信息(如数据库密码、API密钥)存储为Secret对象,而非直接写入Pod配置文件。1. 日志与审计
metadata、requestResponse级别),记录所有API请求(包括用户身份、操作时间、资源类型),并将日志发送至ELK、Loki等集中式日志系统,便于分析异常行为。1. 备份与恢复
etcdctl snapshot save命令备份etcd数据,备份/etc/kubernetes目录下的配置文件(如kube-apiserver.yaml),并测试恢复流程,确保灾难发生时能快速恢复集群。2. 安全扫描与更新
yum update)和Kubernetes组件(kubeadm upgrade)的安全更新,第一时间修复已知漏洞。