Nginx Ingress后接HTTP协议ClusterIP服务的HTTPS访问是否安全?
结论先行
这取决于你的集群安全要求和使用场景,不存在统一的标准答案:
场景1:当前架构足够安全的情况
如果你满足以下所有条件,当前的「Ingress做HTTPS卸载、后端Service/Pod走HTTP明文」的架构完全够用,是K8s集群的通用部署方案:
- 集群为单租户专属,不存在不可信的第三方工作负载部署在同一集群内
- 集群底层网络(节点网络、Pod网络)是受信任的私有网络,没有对外暴露内部通信流量的风险
- 你的业务没有合规层面的全链路加密强制要求
这种场景下Ingress到后端的明文流量仅在集群内部流转,外部攻击者无法窃取,不需要额外修改后端配置。
场景2:需要配置后端Service/Pod也走HTTPS的情况
如果存在以下任一情况,建议配置全链路HTTPS,即后端Pod也仅暴露HTTPS接口:
- 业务有等保、PCI DSS、金融行业合规等强制要求,不允许通信链路中出现明文传输环节
- 集群为多租户共享集群,无法保证其他租户的工作负载不存在流量嗅探等恶意行为
- 对集群节点的安全性有担忧,担心节点被入侵后攻击者可以直接抓取内部明文通信数据
- 需要避免Ingress和后端服务之间的传输被中间人篡改
后端改HTTPS的调整方案
如果确定要做全链路加密,只需要做少量调整即可:
- 给后端Pod配置HTTPS服务(可以用内部私有CA签发证书,不需要公网信任)
- 修改Service配置,将
targetPort指向Pod的HTTPS监听端口 - 修改Ingress配置,把annotation
nginx.ingress.kubernetes.io/backend-protocol: HTTP改为nginx.ingress.kubernetes.io/backend-protocol: HTTPS - 如果需要验证后端证书的合法性,可以额外添加annotation配置证书校验规则,不需要验证的话直接关闭即可,不影响传输加密效果。
内容的提问来源于stack exchange,提问作者kaizokun
相关产品推荐
相关产品推荐

