1. 谁在监听你的Kubernetes集群?

最近某金融公司的容器平台被黑客入侵,攻击者通过暴露的Dashboard获取了集群控制权。这个真实案例提醒我们:Kubernetes作为云原生架构的核心,其安全性直接关系到整个业务系统的生死存亡。

通过kubectl快速验证当前集群权限配置:

kubectl auth can-i --list

# 输出可能包含危险权限:
# secrets/creat       # 允许创建密钥
# pods/exec           # 允许进入容器shell
# services/proxy      # 允许创建服务代理

当看到这类高危权限泛分配时,就该立刻拉响安全警报了。


2. 三层防御体系实战

2.1 身份认证防护墙

某电商平台曾因ServiceAccount泄漏导致数据泄露,让我们看看防护措施:

创建最小权限ServiceAccount:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: order-service-reader
  namespace: production

---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
rules:
- apiGroups: [""]
  resources: ["pods", "pods/log"]
  verbs: ["get", "list"]
  
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
subjects:
- kind: ServiceAccount
  name: order-service-reader
roleRef:
  kind: Role
  name: order-service-reader

这个配置确保运维工具只能读取订单服务日志,无法进行其他操作。

2.2 网络隔离结界

某社交平台遭遇横向渗透攻击后,采用如下网络策略:

分段式网络隔离配置:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: payment-isolation
spec:
  podSelector:
    matchLabels:
      app: payment
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          env: finance
    ports:
    - protocol: TCP
      port: 8443

该策略确保支付服务仅接受来自金融命名空间的8443端口请求。

2.3 运行时安全监控

某游戏公司通过动态检测阻断挖矿程序:

Falco实时检测规则示例:

- rule: Unexpected Crypto Miner Activity
  desc: 检测到疑似挖矿程序行为
  condition: >
    spawned_process and container
    and proc.name in (xmrig, cpuminer, ccminer)
  output: "发现可疑进程 %proc.name"
  priority: CRITICAL

这套规则帮助他们在30秒内自动阻断异常进程。


3. 加固你的武器库

3.1 镜像安全扫描

使用Trivacy进行漏洞扫描:

# 扫描本地镜像
trivy image --severity CRITICAL myapp:1.0

# 典型输出示例:
+---------+------------------+----------+-------------------+---------------+
| LIBRARY | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION |
+---------+------------------+----------+-------------------+---------------+
| openssl | CVE-2023-1234    | CRITICAL | 1.1.1k            | 1.1.1v        |
+---------+------------------+----------+-------------------+---------------+

发现关键漏洞时自动阻断CI/CD流程。

3.2 密钥管理的正确姿势

某保险企业采用密封加密方案:

使用KMS加密secret:

apiVersion: v1
kind: Secret
metadata:
  name: db-credentials
type: Opaque
data:
  username: gV4M2W...  # KMS加密后的密文
  password: tR9sP3...

配合IAM策略实现动态密钥轮换。


4. 云原生安全全景图

应用场景分析

  • 开发测试环境:需防范调试工具滥用
  • 多租户集群:租户隔离是关键
  • 混合云架构:统一策略管理是难点

技术优缺点评估

✅ 优点:

  • 自动化安全策略分发
  • 细粒度访问控制
  • 实时威胁检测

⚠️ 缺点:

  • 策略复杂性指数级增长
  • 传统安全工具适配难度
  • 监控成本上升30-50%

安全雷区警示

  • API Server公网暴露(去年35%的攻击因此而起)
  • 默认命名空间滥用(增加横向渗透风险)
  • 容器root权限运行(78%的入侵利用此漏洞)

5. 安全防护升级路线

进阶防护方案

OPA策略即代码示例:

package kubernetes.admission

deny[msg] {
    input.request.kind.kind == "Pod"
    not input.request.object.spec.securityContext.runAsNonRoot
    msg := "容器必须禁止root运行"
}

该策略自动拦截非安全容器创建请求。

威胁追踪溯源

基于审计日志的分析方法:

# 检索可疑exec操作
kubectl -n production logs kube-apiserver |
  grep 'exec.*pod="redis"'

通过审计线索追踪异常行为轨迹。