我是新来Hashicorp Vault的。我想知道是否有一种方法可以利用SPIFFE协议自动向Vault进行身份验证,这样基于vault客户端的mTLS证书,Kubernetes/Istio中的工作负载就可以作为特定用户(实体?)访问Vault。或组。发出请求的k8s工作负载只能根据其SPIFFE身份的存储库权限访问存储库机密。
我希望不需要传递保险库凭证(令牌、密码等),访问将完全在mTLS连接和SPIFFE协议上授予。这样的事情有可能发生吗?如果Vault位于Kubernetes集群之外(因此不能有Istio sidecar),有什么选择?
如果我问的不可能,一个不太理想的解决方案是更新应用程序代码,以某种方式基于pod的k8s服务帐户向Vault进行身份验证。Vault提供了哪些选项来执行此类型的操作?在这方面有什么好的资源吗?
我很感谢你给我的任何建议。
发布于 2021-05-16 16:32:13
我对使用SPIFFE进行Vault身份验证一无所知,但我同意这可能会很有趣(我不确定https://www.vaultproject.io/docs/auth/cert是否能提供帮助,但我从未尝试过)。
据我所知,集成Kubernetes和Hashicorp Vault的一般方法在https://www.vaultproject.io/docs/auth/kubernetes中描述。Vault部署在哪里并不重要:它可以在相同的Kubernetes集群中,在相同的服务网格中,也可以是完全不相关的实体(例如,部署在某个随机VM上的专用实例)。
您只需在Vault上定义角色和策略,这些角色和策略将映射到特定的kubernetes服务帐户和命名空间,然后Kubernetes pod将能够向与其服务帐户关联的JWT进行身份验证。
一旦设置了Vault并且您可以使用Kubernetes pod进行身份验证,您就可以在它周围使用任何包装器。人们正在尝试用不同的方式来做这件事,但一种可能性是https://www.hashicorp.com/blog/injecting-vault-secrets-into-kubernetes-pods-via-a-sidecar。就我个人而言,我之所以使用https://github.com/postfinance/vault-kubernetes,是因为它非常适合我的需求。
重要的部分是设置Vault以正确支持Kubernetes :确保在进入任何试图获取机密的Kubernetes包之前仔细检查这一点。
https://stackoverflow.com/questions/66835942
复制相似问题