Ani*_*esh 1 kubernetes hashicorp-vault kubernetes-security
我的集群中有一个 Vault 部署,用于存储机密。此外,我还创建了roles、policies和ServiceAccount. 我的应用程序将使用此服务帐户从 Vault 检索机密。但是,我担心另一个应用程序可能会使用用于不同应用程序的服务帐户。我可以采取什么措施来防止这种情况发生?
application A比如说,我为和分配了不同的策略application B,所以我需要一种方法来确保application B不能使用ServiceAccountfor 的含义application A。
使用kubernetesauth 方法,这就是它的工作原理。您不需要做任何其他事情。假设您正在使用 kubernetes 的默认行为,它为每个应用程序创建一个服务帐户,那么您就可以了。
当应用程序使用 ServiceAccount 登录 Vault 时,它会提供其令牌并针对特定角色进行身份验证,例如
curl \
--request POST \
--data '{"jwt": "<your service account jwt>", "role": "demo"}' \
http://127.0.0.1:8200/v1/auth/kubernetes/login
Run Code Online (Sandbox Code Playgroud)
SA 令牌仅适用于您的服务。Kubernetes 为每个应用程序创建一个 SA。这意味着 AppA 没有 AppB ServiceAccount 令牌的访问权限(除非您明确指定)。
与 Vault 集成的方法是使用有界服务帐户和命名空间配置命名角色
vault write auth/kubernetes/role/demo \
bound_service_account_names=myapp \
bound_service_account_namespaces=default \
policies=default \
ttl=1h
Run Code Online (Sandbox Code Playgroud)
上述角色只能用于myapp从default命名空间进行身份验证。没有其他应用程序可以使用此角色登录。
为了解决您的问题,您需要为每个应用程序提供不同的 Vault 角色,并具有不同的有界服务帐户和命名空间。
查看有关kubernetes auth 方法的 Vault 文档以获取完整示例
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |