我是否可以使用大使对 Kubernetes 集群内的服务到服务通信进行身份验证?



我有一个包含服务的 Kubernetes 集群,我使用 Ambassador 作为外部世界和我的服务之间的 API 网关。

通过大使,我知道我可以使用我拥有的服务来检查传入请求的身份验证和授权,但这仅适用于来自集群外部的请求吗?

我也想拦截服务到服务的调用。

如果你不能,我会感到惊讶。

这个答案需要一些术语,以避免迷失在文字汤中。

  • App-A 是群集内Service的使用者,并且将向大使进行身份验证
  • App-Z 是群集内Service的提供程序(选择器将针对其Pod(
  • 我们将在z命名空间中调用z-serviceapp-Z 的 k8sService,FQDN 为z-service.z.svc.cluster.local

似乎您可以使用其 v-host 支持并教它遵循群集内虚拟主机(上述 FQDN(,然后更新z-service选择器以面向大使Pod 而不是底层 app-Z Pod。

从app-A的角度来看,唯一会改变的是它现在必须提供身份验证才能联系z-service.z.svc.cluster.local

如果不进一步研究 Ambassador 的设置,就很难知道 Ambassador 是否会在那个时候正常工作™,或者你是否需要一个"实现"Service(例如z-for-real.z.svc.cluster.local(,以便 Ambassador 知道如何找到实际的 app-Z Pod。

我现在有同样的问题。大使将每个请求路由到身份验证服务(如果提供(,身份验证服务可以是任何内容。所以你可以设置http basic auth,oauth,jwt auth等。 下一个要提及的重要事项是,您的服务可能使用基于标头的路由 (https://www.getambassador.io/reference/headers(。仅当存在持有者(或类似内容(时,请求才会命中您的服务,否则将失败。在您的服务中,您可以检查权限等。总而言之,大使可以帮助你,但你仍然需要自己编程。

如果你想从头开始或更高级的东西,你可以尝试 https://github.com/ory/oathkeeper 或 https://istio.io。

如果您已经找到了解决方案,那么知道会很有趣。

相关内容

  • 没有找到相关文章

最新更新