Istio和Hashicorp Vault:使用SPIFFE对Vault进行身份验证



我是Hashicorp Vault的新手。我想知道是否有一种方法可以利用SPIFFE协议自动向Vault进行身份验证,因此基于Vault客户端的mTLS证书,Kubernetes/Istio中的工作负载可以作为特定用户(实体?(或组访问Vault。请求的k8s工作负载只能根据其SPIFFE标识的Vault权限访问Vault机密。

我希望不需要传递Vault凭据(令牌、密码等(,并且访问权限将完全通过mTLS连接和SPIFFE协议授予。这样的事情可能发生吗?如果Vault位于Kubernetes集群之外(因此不能有Istio sidecar(,有什么选择?

如果我的要求不可能实现,那么一个不太理想的解决方案是更新应用程序代码,以基于pod的k8s服务帐户以某种方式向Vault进行身份验证。Vault提供了哪些选项来执行此类操作?这方面有什么好的资源吗?

我很感激你能给我的任何建议。

我不知道如何使用SPIFFE进行Vault身份验证,但我同意这可能很有趣(我不确定https://www.vaultproject.io/docs/auth/cert可以帮忙,但我从未尝试过(。

据我所知,将Kubernetes与Hashicorp Vault集成的一般方法在https://www.vaultproject.io/docs/auth/kubernetes。Vault部署在哪里并不重要:它可以在同一个Kubernetes集群内,在同一服务网格中,也可以是一个完全无关的实体(例如,部署在某个随机VM上的专用实例(。

您基本上在Vault上定义角色和策略,这些角色和策略映射到特定的kubernetes服务帐户和命名空间,然后Kubernete 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:在进入任何试图获取机密的Kubernete软件包之前,请确保首先仔细检查。

最新更新