1. Kubernetes安全认证核心场景解析Kubernetes作为容器编排的事实标准其安全性日益受到重视。CKSCertified Kubernetes Security Specialist认证正是针对Kubernetes安全领域的专业认证涵盖了集群配置、运行时安全、镜像扫描等全链路安全实践。本文将深入解析22个典型安全场景帮助读者掌握Kubernetes安全防护的核心技能。对于刚接触Kubernetes安全的工程师来说安全防护可能显得复杂且难以入手。但通过任务驱动的实战场景我们可以系统性地构建安全知识体系。每个场景都对应着生产环境中真实存在的安全问题从集群基础配置到高级威胁检测形成完整的安全防护链条。2. 集群基础安全加固2.1 上下文与证书管理在Kubernetes多集群环境中上下文管理是基础但关键的安全控制点。通过kubectl config get-contexts命令可以查看所有可用的集群上下文k config get-contexts -o name /opt/course/1/contexts证书管理同样重要我们可以从kubeconfig中提取特定用户的证书k config view --raw -ojsonpath{.users[2].user.client-certificate-data} | base64 -d /opt/course/1/cert2.2 CIS基准合规检查CIS Kubernetes基准提供了集群安全配置的最佳实践。使用kube-bench工具可以快速检查集群的合规状态kube-bench master | grep kube-controller -A 3常见需要修正的配置包括确保控制器管理器的--profiling参数设置为false检查/var/lib/etcd目录的所有权验证kubelet配置文件的权限2.3 API Server安全加固API Server是集群的大脑需要特别关注其安全配置。常见风险包括通过NodePort暴露API Server未启用必要的准入控制器审计日志配置不当修正方案示例# /etc/kubernetes/manifests/kube-apiserver.yaml apiVersion: v1 kind: Pod metadata: name: kube-apiserver namespace: kube-system spec: containers: - command: - kube-apiserver - --enable-admission-pluginsNodeRestriction,PodSecurityPolicy - --audit-policy-file/etc/kubernetes/audit/policy.yaml - --audit-log-path/etc/kubernetes/audit/logs/audit.log3. 运行时安全防护3.1 Falco实时威胁检测Falco是Kubernetes生态中最流行的运行时安全检测工具。它可以检测容器中的异常行为如非常规的包管理进程关键系统文件修改非常规系统调用配置Falco规则示例- rule: Launch Package Management Process in Container desc: Package management process ran inside container condition: spawned_process and container and user.name ! _apt and package_mgmt_procs and not package_mgmt_ancestor_procs output: Package management process launched in container %evt.time,%container.id,%container.name,%user.name priority: ERROR3.2 容器沙箱技术gVisor提供了额外的容器隔离层可以限制容器对宿主机内核的访问。创建RuntimeClass来使用gVisorapiVersion: node.k8s.io/v1 kind: RuntimeClass metadata: name: gvisor handler: runsc然后在Pod定义中指定spec: runtimeClassName: gvisor nodeName: cluster1-worker23.3 不可变文件系统将容器文件系统设置为只读是减少攻击面的有效方法securityContext: readOnlyRootFilesystem: true volumeMounts: - mountPath: /tmp name: temp-vol volumes: - name: temp-vol emptyDir: {}4. 镜像与供应链安全4.1 镜像漏洞扫描使用Trivy等工具扫描镜像中的已知漏洞trivy nginx:1.16.1-alpine | grep -E CVE-2020-10878|CVE-2020-19674.2 镜像构建最佳实践避免在Dockerfile中泄露敏感信息# 错误示例 - 即使删除secret-token它仍存在于镜像层中 COPY secret-token . RUN /etc/register.sh ./secret-token RUN rm ./secret-token4.3 镜像来源控制使用OPA Gatekeeper限制只允许从受信任的镜像仓库拉取镜像apiVersion: constraints.gatekeeper.sh/v1beta1 kind: BlacklistImages metadata: name: pod-trusted-images spec: match: kinds: - apiGroups: [] kinds: [Pod]5. 网络与访问控制5.1 网络策略实施限制Pod对元数据服务的访问apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: metadata-deny namespace: metadata-access spec: podSelector: {} policyTypes: - Egress egress: - to: - ipBlock: cidr: 0.0.0.0/0 except: - 192.168.100.21/325.2 服务账户权限控制避免服务账户过度权限防止权限逃逸k -n restricted exec pod1 -- cat /etc/secret-volume/password5.3 安全Ingress配置为Ingress配置TLS终止apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: secure spec: tls: - hosts: - secure-ingress.test secretName: tls-secret rules: - host: secure-ingress.test http: paths: - path: /app backend: service: name: secure-app port: number: 806. 密钥与敏感数据管理6.1 ETCD中的密钥保护直接从ETCD读取Secret内容ETCDCTL_API3 etcdctl \ --cert /etc/kubernetes/pki/apiserver-etcd-client.crt \ --key /etc/kubernetes/pki/apiserver-etcd-client.key \ --cacert /etc/kubernetes/pki/etcd/ca.crt \ get /registry/secrets/team-green/database-access6.2 密钥使用最佳实践避免在环境变量中直接暴露密钥# 错误示例 - 密钥会出现在日志中 command: [/bin/sh] args: - -c - echo $SECRET_USERNAME echo $SECRET_PASSWORD docker-entrypoint.sh7. 系统与内核加固7.1 AppArmor配置文件使用AppArmor限制容器能力apparmor_parser -q ./profile在Pod中应用AppArmor配置metadata: annotations: container.apparmor.security.beta.kubernetes.io/c1: localhost/very-secure7.2 Seccomp与系统调用限制监控容器中的异常系统调用strace -p 109918. 安全更新与维护8.1 Kubernetes版本升级升级Kubernetes集群的标准化流程kubeadm upgrade plan kubeadm upgrade apply v1.20.1 apt-get install kubelet1.20.1-00 kubectl1.20.1-00 systemctl daemon-reload systemctl restart kubelet8.2 安全补丁管理定期扫描和更新基础镜像修复已知漏洞trivy image nginx:1.19.29. 安全监控与审计9.1 审计日志配置定制化审计日志策略apiVersion: audit.k8s.io/v1 kind: Policy rules: - level: Metadata resources: - group: resources: [secrets] - level: RequestResponse userGroups: [system:nodes] - level: None9.2 安全事件调查通过审计日志分析异常访问cat audit.log | grep p.auster | grep Secret | grep get10. 安全工具与生态集成10.1 OPA策略管理使用Open Policy Agent实施安全策略apiVersion: templates.gatekeeper.sh/v1beta1 kind: ConstraintTemplate metadata: name: blacklistimages spec: crd: spec: names: kind: BlacklistImages targets: - target: admission.k8s.gatekeeper.sh rego: | package k8strustedimages images { image : input.review.object.spec.containers[_].image not startswith(image, very-bad-registry.com/) }10.2 安全仪表板配置安全配置Kubernetes Dashboardargs: - --namespacekubernetes-dashboard - --authentication-modetoken - --auto-generate-certificates