更新时间:2025-05-19 GMT+08:00
分享

安全加固

配置管理功能采用了Flux V2开源组件实现,其中的source-controller组件使用了HTTP协议,这可能会带来一定的安全风险。为了增强安全性,UCS默认采用NetworkPolicy进行精细的网络隔离,可参考配置网络策略(NetworkPolicy)。如果您的集群不支持NetworkPolicy功能,应谨慎使用此配置管理功能,并考虑采用其他网络隔离手段例(如安全组),来进行必要的安全加固。

组件通信关系梳理

  • 核心组件交互
    • source-controller:负责管理Helm仓库/Git仓库等资源(端口配置:9090/HTTP)。
    • helm-controller:需访问source-controller获取Chart包元数据。
    • kustomize-controller:需访问source-controller获取Kustomize资源。
  • 安全隐患

    若未限制source-controller的网络暴露范围,集群内任意Pod均可通过HTTP明文协议访问该服务,存在中间人攻击和数据泄露风险。

NetworkPolicy加固方案

  • 基础隔离策略:全局阻断对source-controller的非授权访问。
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: deny-all-source
      namespace: flux-system
    spec:
      podSelector:
        matchLabels:
          app: source-controller
      policyTypes:
      - Ingress
      ingress: []     # 默认拒绝所有入站流量
  • 精细化放通规则

# 允许helm-controller访问

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-helm-to-source
  namespace: flux-system
spec:
  podSelector:
    matchLabels:
      app.kubernetes.io/component: source-controller
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: helm-controller
    ports:
    - protocol: TCP
      port: 9090

# 允许kustomize-controller访问

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-kustomize-to-source
  namespace: flux-system
spec:
  podSelector:
    matchLabels:
      app: source-controller
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: kustomize-controller
    ports:
    - protocol: TCP
      port: 9090

相关文档