GitOps 与基础设施即代码——秘密存储
GitOps & Infrastrucute as a Code - secrets storing
只是概念性的问题,因为我显然不觉得这个主题中的文章已经可用@google。
故事:
我有 2 个 git 项目供 IaC
创建和配置网络以及创建和配置项目。这两个项目都使用不同的服务账户在云端执行操作(他们需要不同的权限,我不想拥有一个拥有所有权限的超级账户)。我想执行 CICD
管道,这将允许执行一般 teraform apply
.
问题:
我不想将此类帐户的密钥存储在 GitLab
(gitlab 变量 - 我想将它们存储在 Hashicorp Vault
- 目标是确保它仅对 CICD 可用。不应允许任何人访问这些密钥。如何使其工作? 要 cloud access keys
存储在保险库中,我仍然需要 vault key
存储在运行器机器上或 gitlab 变量中,这两个变量对我来说都不安全,如果有人可以访问的话vault key
通过 Vault Rest API
访问 service account keys
真的很容易
我们解决这个问题的一种方法是利用 Gitlab 的身份和 Vault 的 JWT 身份验证方法。
您可以在此处阅读更多相关信息:https://docs.gitlab.com/ee/ci/examples/authenticating-with-hashicorp-vault/ for Gitlab and https://www.vaultproject.io/docs/auth/jwt Vault 身份验证方法。
为什么这会解决问题(如果我理解正确的话)?
完成此设置后,您可以
- 在 Vault 中创建一个身份实体来代表您的 CI 服务帐户
- 创建一个别名以将此身份实体绑定到 Gitlab 将在 CI_JOB_JWT
中提供的身份
- 创建允许此身份实体(直接或通过组)读取机密的策略)
因此任何人 运行 来自另一个身份的管道将无法读取机密(因为它会映射到 Vault 中的另一个身份实体,所以他们不会获得该策略的令牌)
只是概念性的问题,因为我显然不觉得这个主题中的文章已经可用@google。
故事:
我有 2 个 git 项目供 IaC
创建和配置网络以及创建和配置项目。这两个项目都使用不同的服务账户在云端执行操作(他们需要不同的权限,我不想拥有一个拥有所有权限的超级账户)。我想执行 CICD
管道,这将允许执行一般 teraform apply
.
问题:
我不想将此类帐户的密钥存储在 GitLab
(gitlab 变量 - 我想将它们存储在 Hashicorp Vault
- 目标是确保它仅对 CICD 可用。不应允许任何人访问这些密钥。如何使其工作? 要 cloud access keys
存储在保险库中,我仍然需要 vault key
存储在运行器机器上或 gitlab 变量中,这两个变量对我来说都不安全,如果有人可以访问的话vault key
通过 Vault Rest API
service account keys
真的很容易
我们解决这个问题的一种方法是利用 Gitlab 的身份和 Vault 的 JWT 身份验证方法。
您可以在此处阅读更多相关信息:https://docs.gitlab.com/ee/ci/examples/authenticating-with-hashicorp-vault/ for Gitlab and https://www.vaultproject.io/docs/auth/jwt Vault 身份验证方法。
为什么这会解决问题(如果我理解正确的话)?
完成此设置后,您可以
- 在 Vault 中创建一个身份实体来代表您的 CI 服务帐户
- 创建一个别名以将此身份实体绑定到 Gitlab 将在 CI_JOB_JWT 中提供的身份
- 创建允许此身份实体(直接或通过组)读取机密的策略)
因此任何人 运行 来自另一个身份的管道将无法读取机密(因为它会映射到 Vault 中的另一个身份实体,所以他们不会获得该策略的令牌)