安全加固
配置管理功能采用了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