authentication - 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 服务帐户和命名空间,然后 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 包之前,请务必先仔细检查。
推荐阅读
- php - htaccess 重定向个人资料页面
- arduino - LCD Arduino 无法正确显示
- python - I am trying to plot a geojson circle with a point in it... But it does not merge in the geometries part in it
- excel - 与不同文件夹和不同单元格的工作簿进行比较
- android - 在 FlutterSplashView.java 为我发布的一个应用程序获取 ClasscastException
- java - JavaCompiler - 生成的类无法访问生成的枚举
- python - 如何处理Python中不同模块的相关对象之间的循环引用?
- xpath - 通过类查找页面对象 ID
- ruby-on-rails - Rails - 在控制器操作后执行 JS
- angular - 如何使用角度分页重新初始化当前页面?