我在kubernetes集群中有4个服务作为4个不同的部署/站点运行,分别命名为 A , B , C 和 D 。 D 提供了一项常见的服务, A 和 B 通过剩余的API调用使用,但是在来自的请求之间行为不同A 和 B 中的那些。对于 C 的请求, D 应该只是拒绝该请求(未经授权)。 是否有k8s内置的方式来支持在集群中识别/授权pod?
我目前的方法是使用服务帐户,我在其中创建了两个服务帐户SA1和SA2,分别由 A 和 B 和我的服务 D 已注册为令牌审阅者。 A 和 B 都需要读取服务帐户令牌并将其与请求一起提交给 D 。通过查看令牌, D 可以判断请求是来自 A 还是 B 。这行得通,但是我不确定这是否是实现此目标的最佳方法。由于每个部署只能使用一个服务帐户,因此如果我们获得更多服务,这可能会增加服务帐户管理的复杂性和令牌审查的复杂性。
我浏览了kubernetes文档,例如RBAC,ABAC,节点授权等...但是这些似乎都是为授权集群API访问而设计的,而不是为集群中运行的服务授权的。
azure似乎有一个可以满足我的要求的解决方案https://github.com/Azure/aad-pod-identity,但它也依赖于其他部署(active Directory),我认为我们在集群中不会拥有它。