【问题标题】:How to specify secretEnv to cloudbuild.yaml via gcloud cli args or environment variables如何通过 gcloud cli args 或环境变量将 secretEnv 指定给 cloudbuild.yaml
【发布时间】:2020-05-17 01:21:34
【问题描述】:

如果我关注云构建document,我必须在 cloudbuild.yaml 中指定加密的秘密。

secrets:
- kmsKeyName: projects/[PROJECT-ID]/locations/global/keyRings/[KEYRING-NAME]/cryptoKeys/[KEY-NAME]
  secretEnv:
    MY_SECRET: <base64-encoded encrypted secret>

即使它是加密的,我也不会在代码中提交秘密值。请告诉我另一种方式。

例如。通过来自 gcloud 的 args 构建提交命令或环境变量,...等

【问题讨论】:

    标签: gcloud google-cloud-build google-cloud-kms google-secret-manager


    【解决方案1】:

    您可以改用Google Secret Manager。我们仍在更新文档,但有一个示例说明如何将它与 Cloud Build 一起使用:

    首先,创建一个秘密:

    $ echo -n "my-secret-data" | gcloud beta secrets create "my-api-key" \
        --replication-policy "automatic" \
        --data-file -
    

    授予 Cloud Build Service Account 访问您的密钥的权限:

    $ gcloud beta secrets add-iam-policy-binding "my-api-key" \
        --member "serviceAccount:<project-number>@cloudbuild.gserviceaccount.com" \
        --role "roles/secretmanager.secretAccessor"
    

    更新(2021 年 2 月)

    然后在构建步骤中检索秘密:

    steps:
    - name: 'my-step'
      args:
      - '--secret=$$MY_SECRET'
      secretEnv:
      - 'MY_SECRET'
    
    availableSecrets:
      secretManager:
      - env: 'MY_SECRET'
        versionName: 'projects/my-project/secrets/my-secret/versions/latest'
    

    旧答案(2021 年 2 月之前)

    然后在构建步骤中检索秘密:

    steps:
    - name: 'gcr.io/cloud-builders/gcloud@sha256:c1dfa4702cae9416b28c45c9dcb7d48102043578d80bfdca57488f6179c2211b'
      entrypoint: 'bash'
      args:
      - '-c'
      - |
           gcloud beta secrets versions access --secret=my-api-key latest > /secrets/my-api-key
      volumes:
      - name: 'secrets'
        path: '/secrets'
    
    - name: 'my-step'
      volumes:
      - name: 'secrets'
        path: '/secrets'
      args: # ... /secrets/my-api-key contains the secret
    

    【讨论】:

    • 我应该如何在 my-step 的容器中指定环境变量?
    • 多个秘密怎么办,我必须一次获取一个吗?为什么不在 Secret Manager 中自动替换值?我可以在哪里提出功能请求?
    • 您可以多次运行该 gcloud 命令(将每个命令放在自己的行上)。已提交更深入的 Cloud Build 集成功能请求。
    • 嘿,Seth,喜欢 GSM 上的工作,谢谢!关于上述内容,是否存在任何安全问题,即 /secrets 卷中的秘密是明文?如果层缓存与 Kaniko 一样使用会怎样?
    • 这绝对是一个问题,也是我们提倡让应用直接与 SM 对话或直接存储在 envvar 中的原因之一。 fs 是当今最好的便携式解决方案,但我们一直在努力改进产品
    猜你喜欢
    • 2016-12-25
    • 2021-09-15
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 2020-07-26
    • 1970-01-01
    相关资源
    最近更新 更多