【问题标题】:GitOps & Infrastrucute as a Code - secrets storingGitOps 和基础设施即代码 - 秘密存储
【发布时间】:2021-06-27 07:21:19
【问题描述】:

只是概念性问题,因为我显然不觉得 @google 在该主题中已有文章。

故事:

我有 2 个用于 IaC 的 git 项目,它们创建和配置网络以及创建和配置项目。这两个项目使用不同的服务帐户在云上执行操作(它们需要不同的权限,我不想拥有一个拥有所有权限的超级帐户)。我想执行CICD 管道,这将允许一般执行teraform apply

问题:

我不想将此类帐户的密钥存储在 GitLab(gitlab 变量 - 我想将它们存储在 Hashicorp Vault - 目标是确保它仅适用于 CICD。不应允许任何人访问这些密钥。如何使其工作?至存储在保险库中的cloud access keys,我仍然需要存储vault key在 runner 机器或 gitlab 变量中对我来说都不安全,如果有人可以访问vault key,那么通过Vault Rest API 访问service account keys 真的很容易

【问题讨论】:

  • 我不确定我是否关注您 - 您的目标是提供一项服务,只允许服务帐户访问密钥?这样没有人,甚至项目所有者,都可以看到它们?

标签: security google-cloud-platform gitlab terraform hashicorp-vault


【解决方案1】:

我们解决这个问题的一种方法是利用 Gitlab 的身份和 Vault 的 JWT 身份验证方法。

您可以在此处阅读更多相关信息:https://docs.gitlab.com/ee/ci/examples/authenticating-with-hashicorp-vault/ 用于 Gitlab,https://www.vaultproject.io/docs/auth/jwt 用于 Vault auth 方法。

为什么这会解决问题(如果我正确理解了您的挑战)?

完成此设置后,您可以

  • 在 Vault 中创建一个身份实体来代表您的 CI 服务帐户
  • 创建一个别名以将此身份实体绑定到 Gitlab 将在 CI_JOB_JWT 中提供的身份
  • 创建策略以允许此身份实体(直接或通过组)读取机密)

因此,从另一个身份运行管道的任何人都将无法读取机密(因为它会映射到 Vault 中的另一个身份实体,因此他们不会获得具有该策略的令牌)

【讨论】:

    猜你喜欢
    • 2021-01-25
    • 2020-08-27
    • 2016-05-22
    • 1970-01-01
    • 2021-04-19
    • 2019-08-10
    • 2020-01-17
    • 2019-12-12
    • 1970-01-01
    相关资源
    最近更新 更多