保护网络流
网络流可以归类为:
- 入口流量:从客户端到群集中运行的工作负荷。
- 出口流量:从群集中的 Pod 或节点到外部服务。
- Pod 到 Pod 流量:Pod 之间的通信。 此流量包括入口控制器和工作负荷之间的通信。 此外,如果工作负荷由部署到群集的多个应用程序组成,这些应用程序之间的通信将属于此类别。
- 管理流量:客户端和 Kubernetes API 服务器之间的流量。
此体系结构具有多个安全层来保护所有类型的流量。
入口流量流
该体系结构仅接受来自客户端的 TLS 加密请求。 TLS v1.2 是最低允许版本,并且仅限于受限的密码套件。 服务器名称指示 (SNI) 严格已启用。 端到端 TLS 通过使用两个不同的 TLS 证书通过应用程序网关进行设置,如下图所示。
- 客户端将 HTTPS 请求发送到域名:delta.contoso.com。 该名称通过 DNS A 记录关联到 Azure 应用程序网关的公共 IP 地址。 此流量经过加密,以确保无法检查或更改客户端浏览器和网关之间的流量。
- 应用程序网关具有集成的 Web 应用程序防火墙 (WAF),并为 delta.contoso.com 协商 TLS 握手,仅允许安全密码。 应用程序网关是 TLS 终止点,因为它需要处理 WAF 检查规则,并执行将流量转发到配置的后端的路由规则。 TLS 证书存储在 Azure Key Vault 中。 它使用与应用程序网关集成的用户分配的托管标识进行访问。
- 当流量从应用程序网关转移到后端时,将使用另一个 TLS 证书(域名 *.aks-ingress.contoso.com 的通配符)重新加密,然后转发到内部负载均衡器。 此重新加密可确保不安全的流量不会流向群集子网。
- 入口控制器通过负载均衡器接收加密流量。 控制器是 *.aks-ingress.contoso.com 的另一个 TLS 终止点,并通过 HTTP 将流量转发到工作负荷 Pod。 证书存储在 Azure Key Vault 中,并使用容器存储接口(CSI)驱动程序装载到群集中。
可以在到工作负荷 Pod 的每一跃点上实现端到端 TLS 流量。