如何从 Google Cloud Build Pipeline访问我在Google Secret Manager中定义的变量?
问问题
4454 次
1 回答
6
您可以使用标准Cloud Builder gcloud从 Cloud Build 访问密钥
但是,有两个问题:
- 如果您想在另一个 Cloud Build 步骤中使用密钥值,则必须将您的密钥存储在一个文件中,这是将先前值从一个步骤重用到另一个步骤的唯一方法
- 当前的 Cloud Builder gcloud 不是最新的(今天,2020 年 2 月 3 日)。您必须添加 gcloud 组件更新才能使用正确的版本。我为此打开了一个问题。
steps:
- name: gcr.io/cloud-builders/gcloud
entrypoint: "bash"
args:
- "-c"
- |
gcloud components update
# Store the secret is a temporary file
gcloud beta secrets versions access --secret=MySecretName latest > my-secret-file.txt
- name: AnotherCloudBuildStepImage
entrypoint: "bash"
args:
- "-c"
- |
# For getting the secret and pass it to a command/script
./my-script.sh $(cat my-secret-file.txt)
考虑将角色 Secret Manager Secret Accessor 授予roles/secretmanager.secretAccessor
Cloud Build 默认服务帐户<PROJECT_ID>@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
Cloud Build 中现在存在一种获取机密的新方法。样板更少,更安全。现在看看并使用这种方式。
于 2020-02-03T09:45:06.243 回答