10.1 云原生安全挑战
10.1.1 核心风险点
-
容器逃逸:攻击者利用漏洞(如
CVE-2021-30465
)从容器突破到宿主机。 -
微服务API暴露:未鉴权的API接口(如Kubernetes API Server)被滥用。
-
配置错误:公有云存储桶(如AWS S3)权限配置为
public
,导致数据泄露。
10.1.2 云原生攻击面
-
容器运行时:Docker、containerd的未授权访问(端口
2375
)。 -
编排平台:Kubernetes的
kubelet
未认证(端口10250
)。 -
Serverless函数:事件注入(如AWS Lambda的未过滤输入触发RCE)。
10.2 Kubernetes安全
10.2.1 常见漏洞与利用
-
RBAC配置错误:
-
场景:Service Account绑定
cluster-admin
角色,导致权限提升。 -
检测工具:
kubectl get rolebindings,clusterrolebindings --all-namespaces
-
Etcd未加密通信:
-
风险:通过Etcd(端口
2379
)泄露集群敏感数据(如Secret)。 -
加固方案:启用Etcd的TLS加密与客户端证书认证。
10.2.2 安全加固实践
- Pod安全策略(PSP):限制容器特权模式。
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restricted
spec:
privileged: false
allowPrivilegeEscalation: false
- 网络策略(NetworkPolicy):隔离微服务通信。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
10.3 Serverless安全
10.3.1 常见漏洞类型
-
事件注入攻击:
-
示例:通过API Gateway传递恶意参数触发Lambda函数执行系统命令。
-
防御:输入过滤与沙箱隔离(如AWS Firecracker)。
-
权限过度分配:
-
问题:Lambda函数绑定
AdministratorAccess
策略。 -
修复:遵循最小权限原则,使用IAM角色精细化授权。
10.3.2 安全工具链
- 静态扫描:使用Checkov检测Serverless配置(如
serverless.yml
)。
checkov -f serverless.yml
- 运行时防护:部署PureSec监控函数异常行为。
10.4 容器与镜像安全
10.4.1 镜像漏洞扫描
-
工具对比:
-
Clair:开源静态分析,集成CI/CD流水线。
clairctl analyze --image nginx:latest
- Trivy:快速扫描,支持OS与语言依赖漏洞。
trivy image nginx:latest
10.4.2 容器运行时防护
- Seccomp/AppArmor:限制容器系统调用。
docker run --security-opt seccomp=default.json nginx
- Falco:实时监控容器异常行为(如敏感文件读写)。
falco -r /etc/falco/falco_rules.yaml
10.5 零信任架构(Zero Trust)
10.5.1 核心原则
-
永不信任,持续验证:所有请求需经过身份、设备、环境多因素认证。
-
微隔离:服务间通信加密(mTLS),按需授权。
10.5.2 实施工具
- 服务网格(Istio):
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: default
spec:
mtls:
mode: STRICT
- SPIFFE/SPIRE:为工作负载签发动态身份证书。
10.6 实战案例:从容器逃逸到云控制台接管
场景:某企业Kubernetes集群遭渗透
- 初始入侵:
- 利用未鉴权的Kubernetes Dashboard(端口
30000
)创建恶意Pod。
- 容器逃逸:
- 在Pod中挂载宿主机根目录,写入SSH公钥。
volumes:
- name: host-root
hostPath:
path: /
containers:
- name: evil
image: alpine
command: ["/bin/sh"]
args: ["-c", "echo ssh-rsa AAAAB3... >> /host-root/root/.ssh/authorized_keys"]
volumeMounts:
- name: host-root
mountPath: /host-root
-
横向移动:通过宿主机SSH访问控制其他节点。
-
云凭据窃取:从宿主机元数据服务(如
http://169.254.169.254
)获取AWS IAM角色凭证。 -
防御复盘:
-
关闭Kubernetes Dashboard外部暴露,启用RBAC。
-
使用Kube-bench检查CIS合规性。
10.7 防御与最佳实践
10.7.1 安全工具链集成
-
CI/CD管道:
-
镜像签名:使用Cosign对镜像进行数字签名。
cosign sign --key cosign.key myimage:latest
- 策略即代码(OPA):定义部署策略(如禁止latest标签)。
package kubernetes.validating.images
deny[msg] {
input.request.object.spec.containers[_].image == "latest"
msg := "禁止使用latest标签"
}
10.7.2 监控与响应
-
云安全态势管理(CSPM):
-
工具:AWS Security Hub、Azure Security Center。
-
功能:自动检测配置错误(如公开的S3存储桶)。
-
威胁检测:
-
使用Falco或Sysdig Secure监控容器异常。
10.7.3 合规与审计
-
日志集中化:
-
将Kubernetes审计日志、云服务日志导入SIEM(如Elasticsearch)。
-
GDPR/HIPAA合规:
-
加密存储敏感数据,记录数据访问日志。
总结
云原生安全要求从镜像构建、容器运行时、编排平台到云服务的全链路防护。通过零信任架构、自动化策略与实时监控,企业能够在享受云原生敏捷性的同时,有效抵御复杂攻击。