Kubernetes中微服务之间的身份验证

时间:2018-11-08 15:01:23

标签: spring-mvc kubernetes google-kubernetes-engine

我们有一些在Java / Kotlin和Spring MVC中实现的微服务,它们在Tomcat docker映像中运行。这些服务提供通过用户的cookie /会话进行身份验证的公共API。这些可以正常工作。

现在,我们要创建一个内部端点,该端点既不能在GKE之外也不能通过某种内部身份验证进行访问。

特别对于Spring MVC和GKE来说,什么是最好的方法?

编辑:

我想实现对一项服务的不同端点进行身份验证。例如:

  • /public/-没有身份验证
  • /private/-用户必须登录
  • /internal/-只有其他微服务可以访问

我希望在应用程序级别上实现这种身份验证,但是我不确定哪种方法最好。内部Google IP的IP范围?安全识别呼叫者的其他方法?

也许我的想法不好,如果是这样,我很乐意改变主意。

1 个答案:

答案 0 :(得分:2)

您的问题不是GKE特有的。这基本上是一个Kubernetes问题。

我建议您搜索Kubernetes服务身份验证。

有很多方法可以做到这一点,包括滚动您自己的身份验证模型。 Kubernetes NetworkPolicy资源(就像防火墙)可以在此提供帮助,您可以在https://kubernetes.io/docs/concepts/services-networking/network-policies/处了解更多信息,并在此处查看一些示例:https://github.com/ahmetb/kubernetes-network-policy-recipes(请注意,这是防火墙,不是身份验证。)

如果要自动获取此信息,可以使用Istio(https://istio.io),它允许您在所有服务之间自动设置双向TLS,而无需进行任何代码更改。 Istio还为每个工作负载赋予了强大的标识。您可以使用Istio的身份验证策略在微服务之间设置身份验证,而无需更改应用程序代码,这真的很酷:https://istio.io/docs/tasks/security/authn-policy/