HashicorpVault:多个应用程序和多个服务帐户 - 防止其他应用程序使用不同的 svc 帐户

Ani*_*esh 1 kubernetes hashicorp-vault kubernetes-security

我的集群中有一个 Vault 部署,用于存储机密。此外,我还创建了rolespoliciesServiceAccount. 我的应用程序将使用此服务帐户从 Vault 检索机密。但是,我担心另一个应用程序可能会使用用于不同应用程序的服务帐户。我可以采取什么措施来防止这种情况发生?

application A比如说,我为和分配了不同的策略application B,所以我需要一种方法来确保application B不能使用ServiceAccountfor 的含义application A

Che*_* A. 5

使用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)

上述角色只能用于myappdefault命名空间进行身份验证。没有其他应用程序可以使用此角色登录。

为了解决您的问题,您需要为每个应用程序提供不同的 Vault 角色,并具有不同的有界服务帐户和命名空间

查看有关kubernetes auth 方法的 Vault 文档以获取完整示例