只是概念性问题,因为我显然不觉得这个主题中的文章已经可用@google。
故事:
我有 2 个用于 IaC
的 git 项目,用于创建和配置网络以及创建和配置项目。这两个项目使用不同的服务帐号在云端执行操作(他们需要不同的权限,我不想拥有一个拥有所有权限的超级帐号)。我想执行 CICD
管道,这将允许在一般情况下执行 teraform apply
。
问题:
我不想将此类帐户的密钥存储在 GitLab
(gitlab 变量 - 我想将它们存储在 Hashicorp Vault
- 目标是确保它只会被可用于 CICD。不应该允许任何人访问这些密钥。如何使其工作?对于存储在保险库中的 cloud access keys
我仍然需要vault key
存储在跑步机或 gitlab 变量中,这两者对我来说都不安全,如果有人可以访问 vault key
,那么通过 {{1} 访问 service account keys
真的很容易}
答案 0 :(得分:1)
我们解决这个问题的一种方法是利用 Gitlab 的身份和 Vault 的 JWT 身份验证方法。
您可以在此处阅读更多相关信息:https://docs.gitlab.com/ee/ci/examples/authenticating-with-hashicorp-vault/ 用于 Gitlab,https://www.vaultproject.io/docs/auth/jwt 用于 Vault 身份验证方法。
为什么这会解决问题(如果我正确理解您的挑战)?
完成此设置后,您就可以
因此,从另一个身份运行管道的任何人都将无法读取机密(因为它会映射到 Vault 中的另一个身份实体,因此他们不会获得具有该策略的令牌)