1. 节点系统配置
systemctl disable <service-name>),减少攻击面。firewalld或iptables限制仅开放Kubernetes必要端口(如API Server的6443、kubelet的10250/10255),默认拒绝所有其他流量。permissive模式(临时命令setenforce 0,永久修改/etc/selinux/config);关闭Swap分区(swapoff -a并注释/etc/fstab中的Swap条目),避免内存隔离失效。chrony并配置NTP服务器(如server ntp.aliyun.com iburst),运行chronyc sources验证同步状态,确保节点时间一致。1. 认证与授权
openssl),将证书放入/etc/kubernetes/pki,修改/etc/kubernetes/manifests/kube-apiserver.yaml添加--tls-cert-file、--tls-private-key-file、--client-ca-file参数,重启kubelet使配置生效。kubectl create namespace dev-ns)、服务账户(kubectl create serviceaccount dev-sa -n dev-ns);定义角色(如仅允许读取Pod的pod-reader角色)并绑定到服务账户(kubectl create rolebinding dev-rb --role=pod-reader --serviceaccount=dev-ns:dev-sa -n dev-ns),避免使用cluster-admin角色给开发人员。kubeconfig文件限制API Server访问来源,结合RBAC实现细粒度权限管理。2. 网络隔离
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
默认拒绝所有入站/出站流量(podSelector: {}),强制业务团队显式定义允许的流量。3. 容器运行时安全
runAsNonRoot: true)、指定低权限用户ID(runAsUser: 1000)、设置只读根文件系统(readOnlyRootFilesystem: true)、禁止提权(allowPrivilegeEscalation: false)。/etc/shadow文件)。示例规则:- rule: Read sensitive file inside container
desc: Detect container accessing sensitive files like /etc/shadow
condition: >
container and evt.type in (open, openat) and
evt.dir=< and
fd.name in ("/etc/shadow", "/etc/passwd")
output: "Sensitive file accessed by container (user=%user.name command=%proc.cmdline file=%fd.name)"
priority: WARNING
1. 镜像安全
cosign sign --key cosign.key nginx:1.25),部署时验证签名有效性(cosign verify --key cosign.pub nginx:1.25),确保镜像未被篡改。2. 数据安全
/etc/kubernetes/manifests/etcd.yaml添加--encryption-provider-config=/etc/kubernetes/pki/encryption-config.yaml参数,创建加密配置文件指定AES-256-GCM算法和密钥。volumeMounts挂载Vault中的Secret到Pod)。1. 版本与补丁管理
kubeadm upgrade升级Kubernetes集群至最新稳定版本,升级前备份etcd数据(etcdctl snapshot save /tmp/etcd-snapshot.db);使用yum update更新CentOS系统包(如kernel、openssl)。kube-bench检查集群配置是否符合CIS Kubernetes Benchmark标准(kube-bench --benchmark cis-1.25),修复不安全配置(如未启用TLS、RBAC未配置)。2. 监控与审计
/etc/kubernetes/audit-policy.yaml设置日志级别(level: Metadata),将日志保存到/var/log/kubernetes/audit.log,定期分析异常行为。