1. 系统基础配置
sudo yum update -y,确保CentOS系统及内核为最新稳定版本,修复已知安全漏洞。kubeadm、kubelet、kubectl),避免不必要的软件包带来的安全风险。systemctl disable <service-name>禁用FTP、邮件服务器等非必需服务,减少攻击面。firewalld或iptables限制仅开放Kubernetes必要端口(如API Server的6443、kubelet的10250/10255),执行sudo firewall-cmd --reload使规则生效。chrony并配置NTP服务器(如server ntp.aliyun.com iburst),运行chronyc sources验证同步状态,确保集群节点时间一致。2. SELinux与Swap管理
/etc/selinux/config文件,将SELINUX=disabled改为SELINUX=enforcing,并执行setenforce 1临时生效。SELinux通过强制访问控制提升系统安全性。swapoff -a临时关闭,注释/etc/fstab中的Swap条目永久生效。Swap分区可能泄露敏感数据,需禁用以降低风险。1. 认证与授权
openssl工具),将证书放入/etc/kubernetes/pki目录,修改/etc/kubernetes/manifests/kube-apiserver.yaml配置文件,添加以下参数启用TLS:spec:
containers:
- command:
- kube-apiserver
- --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使配置生效。TLS加密保障API Server与客户端之间的通信安全。# 创建命名空间
kubectl create namespace dev-ns
# 创建服务账户
kubectl create serviceaccount dev-sa -n dev-ns
# 创建角色(仅允许读取Pod)
kubectl create role pod-reader --verb=get,list,watch --resource=pods -n dev-ns
# 绑定角色到服务账户
kubectl create rolebinding dev-rb --role=pod-reader --serviceaccount=dev-ns:dev-sa -n dev-ns
避免将cluster-admin角色分配给开发人员,降低权限滥用风险。2. 网络隔离
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml安装。app=frontend标签的Pod访问app=database的Pod的3306端口:apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: frontend-database-policy
namespace: dev-ns
spec:
podSelector:
matchLabels:
app: database
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- protocol: TCP
port: 3306
网络隔离防止未授权的Pod间通信,提升集群安全性。3. 容器运行时安全
apiVersion: v1
kind: Pod
metadata:
name: secure-pod
namespace: dev-ns
spec:
containers:
- name: nginx
image: nginx:1.25
securityContext:
runAsNonRoot: true # 禁止以root用户运行
runAsUser: 1000 # 指定用户ID
readOnlyRootFilesystem: true # 只读根文件系统
allowPrivilegeEscalation: false # 禁止提权
安全上下文降低容器逃逸及权限提升的风险。1. 组件版本管理
kubeadm upgrade命令将Kubernetes集群升级至最新稳定版本,升级前备份etcd数据(etcdctl snapshot save /tmp/etcd-snapshot.db),确保数据安全。sudo yum update -y更新CentOS系统包(如kernel、openssl),修复系统层漏洞。2. 漏洞扫描与合规检查
kube-bench(curl -L https://github.com/aquasecurity/kube-bench/releases/download/v0.6.13/kube-bench_0.6.13_linux_amd64.deb -o kube-bench.deb && sudo dpkg -i kube-bench.deb),运行kube-bench --benchmark cis-1.25检查集群配置是否符合CIS Kubernetes Benchmark标准,根据扫描结果修复不安全配置(如未启用TLS、RBAC未配置)。3. 监控与日志审计
kubectl get events --field-selector type=Warning),快速定位安全事件。kubectl taint nodes master-node key=value:NoSchedule,仅允许带有对应容忍度的Pod调度到Master节点,防止关键节点被误调度。