Continuous integration 从Google Cloud Build访问存储在Google Secret Manager中的环境变量

Continuous integration 从Google Cloud Build访问存储在Google Secret Manager中的环境变量,continuous-integration,google-cloud-build,secret-key,google-cloud-kms,google-secret-manager,Continuous Integration,Google Cloud Build,Secret Key,Google Cloud Kms,Google Secret Manager,如何从我的Google Cloud Build管道访问我在中定义的变量?您可以使用标准 但是,有两个问题: 如果您想在另一个云构建步骤中使用secret值,则必须将您的secret存储在一个文件中,这是将以前的值从一个步骤重用到另一个步骤的唯一方法 当前的云生成器gcloud不是最新的(今天,2020年2月3日)。您必须添加gcloud组件更新才能使用正确的版本。我为此打开了一个问题 考虑将角色Secret Manager Secret Accessorroles/secretmanager.s

如何从我的Google Cloud Build管道访问我在中定义的变量?

您可以使用标准

但是,有两个问题:

  • 如果您想在另一个云构建步骤中使用secret值,则必须将您的secret存储在一个文件中,这是将以前的值从一个步骤重用到另一个步骤的唯一方法
  • 当前的云生成器gcloud不是最新的(今天,2020年2月3日)。您必须添加gcloud组件更新才能使用正确的版本。我为此打开了一个问题
  • 考虑将角色Secret Manager Secret Accessor
    roles/secretmanager.secretAccessor
    授予云构建默认服务帐户
    @cloudbuild.gserviceaccount.com

    编辑

    您可以从任何地方访问机密,可以安装gcloud CLI(并使用授权访问机密的服务帐户进行初始化),也可以通过API调用

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://secretmanager.googleapis.com/v1beta1/projects/PROJECT_ID/secrets/MySecretName/versions/latest:access
    
    注意:您在数据字段中以base64编码格式接收机密。使用前别忘了解码

    您必须在授予正确角色的服务帐户上生成访问令牌。这里我再次使用gcloud,因为它更容易。但根据您的平台,使用最合适的方法。python脚本也可以完成这项工作


    编辑2


    一个新的云端构建。锅炉板更少,更安全。现在就看一看并使用这种方式。

    我不建议现在就使用Google Secret Manager,因为它处于预发布状态,这意味着它在将来肯定会改变。至于访问存储在Google Secret Manager中的环境变量,仍然没有办法从云构建中实际检索它。尽管如此,您将发现如何在云构建中管理加密资源。我希望这会有帮助。我不同意@ChristopherRodriguezConde。谷歌测试版产品通常与生产版非常接近。Alpha版本可能会更改(或被取消),您可以对Beta版本的稳定性和可用性充满信心。无论如何,您能描述一下这样做的用例吗?为什么在云构建过程中,你需要将秘密以明文形式呈现?@guillaumeblaquiere我有很多环境变量,我需要一种更直观的方式来为不同的环境存储它们。我宁愿不使用KMS,因为它会为一个相当简单的任务带来很多复杂性。我只想在构建中使用变量,就像在circleci、travisci、bitbucket管道中一样。。。e、 这能回答你的问题吗?有没有打算直接通过云构建来实现这一点,或者我必须拼凑一个脚本来处理获取变量的问题?这似乎是谷歌应该自动化的东西。云构建是因为它是你的问题标题,但你可以从你想要的地方开始。可以使用Gcloud命令(如我的示例中所示),也可以直接使用API调用。请看我的编辑虽然我无法评论具体内容,但我们正在与其他GCP产品进行更深入的集成。这在将来会更容易,但现在你可以使用gcloud或api,期待未来。我不确定我的问题是否相同,但我遵循此指南,在第4步中,我们创建了秘密。但是,在第7步运行迁移时,似乎没有检测到机密:
    文件/usr/local/lib/python3.8/site packages/environ/environ.py”,第273行,在get\u value value=self.environ[var]文件/usr/local/lib/python3.8/os.py”中,第675行,在u getitem\uuuuuuuuuuuuuuu从None-KeyError中引发KeyError(key):“secret\u-key”
    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://secretmanager.googleapis.com/v1beta1/projects/PROJECT_ID/secrets/MySecretName/versions/latest:access