哪些通道应该在 Kubernetes 集群中使用 SSL?

Which channels should use SSL in a Kubernetes cluster?

我有以下 Kubernetes 设置(请原谅糟糕的 ASCII 艺术):

Azure SQL DB_1 > deployment_1 > service_1 \
Azure SQL DB_2 > deployment_2 > service_2  > -> nginx_ingress
Azure SQL DB_N > deployment_N > service_N /

数据库在 Kubernetes 集群之外。它们通过 Private Endpoint 暴露给 Kubernetes 集群所在的 VNet。他们在该 VNet 中获得一个私有 IP 地址,否则无法访问。

每个部署都是一个不同的微服务。每个人前面都有一个服务来处理通信。反过来,所有这些服务都可以通过 NGINX 入口访问。所有服务都配置为 ClusterIP,因此无法从集群外部访问它们。来自 VNet 外部的唯一入口点是通过入口。

我的问题是,这些渠道中的哪些应该使用 SSL 保护,哪些地方不值得(例如,因为影响性能)?

  1. 当然,Ingress 前面会有 SSL。这是给定的。
  2. 入口和服务之间是否应该有 SSL?
  3. 服务和它们背后的微服务之间是否应该有SSL?
  4. 数据库本身似乎已经自动进行了加密连接。有什么理由可以证明这是不必要的,或者相反,can/should 它可以以某种方式变得更安全?

当然,我知道更多的加密通常是一件好事。但是,例如,是否值得为微服务和服务之间的通信生成和跟踪证书,因为这些证书是集群内部的,无法通过任何其他方式访问?

感谢您提供的任何信息/示例/经验!

简单的是仅在入口层终止 TLS,因为它位于 AKS 内部(我假设)并且 AKS 的 VNET 是安全的,因此不会直接暴露于外部世界,只有入口 nginx 控制器将暴露于外部世界。

如果您使用的是 SQL 服务器,则基于数据库的通信已经在 TLS 的支持下。

除此之外,您还可以根据需要定义 CORS。