我们有一些在Java / Kotlin和Spring MVC中实现的微服务,它们在Tomcat docker映像中运行。这些服务提供通过用户的cookie /会话进行身份验证的公共API。这些可以正常工作。
现在,我们要创建一个内部端点,该端点既不能在GKE之外也不能通过某种内部身份验证进行访问。
特别对于Spring MVC和GKE来说,什么是最好的方法?
编辑:
我想实现对一项服务的不同端点进行身份验证。例如:
/public/
-没有身份验证/private/
-用户必须登录/internal/
-只有其他微服务可以访问我希望在应用程序级别上实现这种身份验证,但是我不确定哪种方法最好。内部Google IP的IP范围?安全识别呼叫者的其他方法?
也许我的想法不好,如果是这样,我很乐意改变主意。
答案 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/