如何解决GitOps 和基础设施即代码 - 秘密存储
只是概念性问题,因为我显然不觉得这个主题中的文章已经可用@google。
故事:
我有 2 个用于 IaC
的 git 项目,用于创建和配置网络以及创建和配置项目。这两个项目使用不同的服务帐号在云端执行操作(他们需要不同的权限,我不想拥有一个拥有所有权限的超级帐号)。我想执行 CICD
管道,这将允许在一般情况下执行 teraform apply
。
问题:
我不想将此类帐户的密钥存储在 GitLab
(gitlab 变量 - 我想将它们存储在 Hashicorp Vault
- 目标是确保它只会被可用于 CICD。不应该允许任何人访问这些密钥。如何使其工作?对于存储在保险库中的 cloud access keys
我仍然需要vault key
存储在跑步机或 gitlab 变量中,这两者对我来说都不安全,如果有人可以访问 vault key
,那么通过 {{1} 访问 service account keys
真的很容易}
解决方法
我们解决这个问题的一种方法是利用 Gitlab 的身份和 Vault 的 JWT 身份验证方法。
您可以在此处阅读更多相关信息:https://docs.gitlab.com/ee/ci/examples/authenticating-with-hashicorp-vault/ 用于 Gitlab,https://www.vaultproject.io/docs/auth/jwt 用于 Vault 身份验证方法。
为什么这会解决问题(如果我正确理解您的挑战)?
完成此设置后,您就可以
- 在 Vault 中创建一个身份实体来代表您的 CI 服务帐户
- 创建别名以将此身份实体绑定到 Gitlab 将在 CI_JOB_JWT 中提供的身份
- 创建策略以允许此身份实体(直接或通过组)读取机密)
因此,从另一个身份运行管道的任何人都将无法读取机密(因为它会映射到 Vault 中的另一个身份实体,因此他们不会获得具有该策略的令牌)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。