systemctl disable <service-name>命令,减少攻击面。firewalld或iptables限制对Kubernetes关键端口(如API Server的6443端口、kubelet的10250端口)的访问,仅允许受信任IP访问。permissive模式(setenforce 0)或修改/etc/selinux/config文件永久禁用,避免与Kubernetes权限冲突(若使用Pod Security Standards替代PSP,可保留permissive)。swapoff -a临时关闭,修改/etc/fstab文件永久禁用,防止内存耗尽时Swap分区导致性能下降或敏感数据写入磁盘。chrony或ntp服务,配置所有节点与NTP服务器同步(如chronyc sources验证),确保集群时间一致,避免认证、日志等问题。--anonymous-auth=false),确保API通信安全。kubectl create namespace production)。Role/ClusterRole),例如仅允许开发人员在dev命名空间内操作Pod(kubectl create role dev-pod-reader --verb=get,list,watch --resource=pods -n dev)。RoleBinding/ClusterRoleBinding绑定角色与用户/服务账户(kubectl create rolebinding dev-pod-reader-binding --role=dev-pod-reader --serviceaccount=dev:default -n dev)。--audit-log-path=/var/log/kube-audit.log),记录用户身份、操作时间、资源类型等信息,便于追溯安全事件。podSelector: {} + policyTypes: ["Ingress", "Egress"]),再按需放行。frontend命名空间的Pod访问backend命名空间的80端口(kubectl apply -f - <<EOF):apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: frontend-to-backend
namespace: backend
spec:
podSelector:
matchLabels:
app: backend
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
name: frontend
ports:
- protocol: TCP
port: 80
EOF
trivy image centos:7),阻断包含高危CVE(如CVSS评分≥7.0)的镜像进入集群。cosign sign --key cosign.key registry.example.com/image:tag),部署时通过ImagePolicyWebhook验证签名有效性,防止篡改。PodSecurity admission controller强制执行安全策略:
kube-apiserver启动参数中添加--enable-admission-plugins=PodSecurity,并创建PodSecurity配置(restricted策略禁止特权容器、限制挂载卷类型等)。securityContext,禁止特权容器(privileged: false)、设置容器为非root用户(runAsNonRoot: true)、只读根文件系统(readOnlyRootFilesystem: true)。apiVersion: v1
kind: Pod
metadata:
name: secure-pod
spec:
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 2000
containers:
- name: nginx
image: nginx
securityContext:
allowPrivilegeEscalation: false
resources.requests/resources.limits),防止资源耗尽攻击(如kubectl explain pod.spec.containers.resources)。--encryption-provider-config=/etc/kubernetes/encryption-config.yaml),保护Secret数据(如数据库密码、API密钥)在存储时的安全。kubectl create secret命令创建Secret(kubectl create secret generic db-password --from-literal=password=123456)。KV存储与Kubernetes CSI集成),避免Secret明文存储在etcd中。grep "create pod" /var/log/kube-audit.log),发现潜在安全威胁。kubeadm upgrade plan检查可升级版本,kubeadm upgrade apply执行升级),修复已知安全漏洞。yum update -y)及Kubernetes依赖组件(如Docker、containerd)为最新版本,减少系统漏洞风险。kubeadm certs renew命令自动更新集群证书(如API Server证书),避免证书过期导致服务中断。NodePort或LoadBalancer类型Service时,通过防火墙限制访问IP。--enable-ssl-passthrough)、路径路由(/api指向后端Pod)等功能。etcdctl snapshot save /backup/etcd-snapshot.db),测试恢复流程(etcdctl snapshot restore),确保集群故障时可快速恢复。