【发布时间】:2022-02-01 17:21:56
【问题描述】:
我有一个有趣的问题,也许你可以帮帮我。
有 两个 spring 应用程序,分别称为 app1 和 app2。这两个服务都发生了大量的 REST 调用。我需要实现一个安全解决方案,它们都可以在 REST 上相互通信,但它受 mutual TLS 保护(mTLS,其中两个应用程序都有自己的证书其他)
以标准方式实现它并不难,Spring 有解决方案(使用密钥库等),但问题是,我必须在 Kubernetes 环境中创建它。
这两个应用程序不在同一个集群中,因此 app1 在我们的集群中,但 app2 部署在我们合作伙伴的系统之一中。
我对 k8s 很陌生,不确定实现这一目标的最佳方法是什么。我应该将证书或密钥库存储为秘密吗?以某种方式使用和配置 nginx 入口,也许 Istio 会有用?我真的很想找到最佳解决方案,但我不知道正确的方法。
我真的很想在我的应用程序之外配置它并让 k8s 处理它,但我不确定这是否是正确的做法。
我们将不胜感激任何帮助,一些寻找正确道路的指导或某种现实生活中的例子。
感谢您的帮助!
【问题讨论】:
-
您是说这些服务上已经配置了 mTLS 还是要求之一?
-
@suren 我们正试图找出应该是什么方式。这是一个 poc,遗憾的是没有配置任何东西。 :(
-
如果您仍处于 PoC 阶段,请注意有几种方法可以实现您想要的。例如,Istio 将是一种有效的方式。您可以在
ServiceEntry中拥有其他服务,启用 mTLS 即可。您甚至不必管理此特定场景的秘密,因为它是自动的。但还有其他方法。即使使用 Istio,也有其他方法。如果您使用任何云提供商,您可能也有一些托管服务。
标签: spring ssl kubernetes spring-security kubernetes-ingress