如何通过 gcloud cli args 或环境变量将 secretEnv 指定到 cloudbuild.yaml

Tak*_*shi 3 gcloud google-cloud-kms google-cloud-build google-secret-manager

如果我遵循云构建文档,我必须在 cloudbuild.yaml 上指定加密的秘密。

secrets:
- kmsKeyName: projects/[PROJECT-ID]/locations/global/keyRings/[KEYRING-NAME]/cryptoKeys/[KEY-NAME]
  secretEnv:
    MY_SECRET: <base64-encoded encrypted secret>
Run Code Online (Sandbox Code Playgroud)

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

前任。通过来自 gcloud 的 args 构建提交命令或环境变量等

set*_*rgo 8

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

首先,创建一个秘密:

$ echo -n "my-secret-data" | gcloud beta secrets create "my-api-key" \
    --replication-policy "automatic" \
    --data-file -
Run Code Online (Sandbox Code Playgroud)

授予 Cloud Build 服务帐户访问您的密钥的权限:

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

更新(2021 年 2 月)

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

$ echo -n "my-secret-data" | gcloud beta secrets create "my-api-key" \
    --replication-policy "automatic" \
    --data-file -
Run Code Online (Sandbox Code Playgroud)

旧答案(2021 年 2 月之前)

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

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

  • 嘿 Seth,喜欢 GSM 的工作,谢谢!关于上述内容, /secrets 卷中的秘密是明文的,是否存在任何安全问题?如果像 Kaniko 一样使用图层缓存会怎样? (2认同)