Istio 服务到服务流量加密

问题描述

场景:

  • 在 1 个 Azure Kubernetes 服务 (AKS) 中,有 2 个 .NET 服务在运行:Service1 和 Service2
  • Service1 和 Service2 都侦听 HTTP:80 和 HTTPS:443
  • 两个服务都运行 Istio 和 Istio 代理

为确保同一集群中服务之间的流量加密, 使用双向 TLS,

Service1 是否需要调用 Service2 HTTPS:443 端点?

调用 Service2 HTTP:80 就足够了,其余的由 istio 处理?

解决方法

使用 Istio 时(除非您有非常严格的安全要求,这是不太可能的)应用程序通常不应启动 HTTPS 连接。

让 Istio 做自动 mTLS。实际上,当应用程序启动 HTTPS 时,您会失去 Istio 功能。

在这种情况下,流量在 Istio 外部被加密,您将失去遥测等功能,因为代理无法读取流量。

也可以让 Istio 为外部调用(网格外)发起 HTTPS 连接。这称为 TLS origination。但是,这需要一些配置和客户端库,它们本身启动 HTTPS 连接并不能使用