如何使用 Google Cloud Build 和 Google Cloud KMS 从构建时解密的文件中读取变量
How to read variables from a file decrypted at build time using Google Cloud Build and Google Cloud KMS
我正在按照 this 教程获取加密密钥到我的 cloudbuild YAML 文件中。
我试图了解如何在我的 YAML 文件的后续步骤中“使用工作区目录中的解密...文件”变量。
我解密密钥文件的云构建步骤如下:
- name: gcr.io/cloud-builders/gcloud
args: ['kms', 'decrypt', '--ciphertext-file=<encrypted_file>', '--plaintext-file=<decrypted_file>', '--location=<location>', '--keyring=<keyring>', '--key=<key>']
教程不清楚如何执行此操作,我在 Internet 上找不到与此相关的任何内容。
非常感谢任何帮助。
谢谢。
当您使用 gcloud kms encrypt
加密您的内容时,您可以将输出写入工作区中的文件,例如:
# replace with your values
gcloud kms encrypt \
--location=global \
--keyring=my-kr \
--key=my-key \
--plaintext-file=./data-to-encrypt \
--ciphertext-file=./encrypted-data
其中 ./data-to-encrypt
是磁盘上的一个文件,其中包含您的 纯文本 秘密, ./encrypted-data
是磁盘上的目标路径,其中加密的 密文应该写成
直接使用 API 时,交互如下所示:
plaintext -> kms(encrypt) -> ciphertext
然而,当使用 gcloud
时,它看起来像这样:
plaintext-file -> gcloud(read) -> kms(encrypt) -> ciphertext -> gcloud(write)
当您调用 Cloud Build 时,它会有效地获取您的应用程序的 tarball,减去 .gcloudignore
中指定的任何文件。这意味着 ./encrypted-data
将在容器步骤内的文件系统上可用:
steps:
# decrypt the value in ./my-secret
- name: gcr.io/cloud-builders/gcloud
args:
- kms
- decrypt
- --location=global
- --keyring=my-kr
- --key=my-key
- --ciphertext=file=./encrypted-data
- --plaintext-file=./my-secret
- name: gcr.io/my-project/my-image
steps:
- my-app start --secret=./my-secret
目前,在 Cloud Build 的步骤之间共享数据的唯一方法是使用文件,但所有构建步骤都具有相同的共享文件系统。
我正在按照 this 教程获取加密密钥到我的 cloudbuild YAML 文件中。 我试图了解如何在我的 YAML 文件的后续步骤中“使用工作区目录中的解密...文件”变量。
我解密密钥文件的云构建步骤如下:
- name: gcr.io/cloud-builders/gcloud
args: ['kms', 'decrypt', '--ciphertext-file=<encrypted_file>', '--plaintext-file=<decrypted_file>', '--location=<location>', '--keyring=<keyring>', '--key=<key>']
教程不清楚如何执行此操作,我在 Internet 上找不到与此相关的任何内容。
非常感谢任何帮助。
谢谢。
当您使用 gcloud kms encrypt
加密您的内容时,您可以将输出写入工作区中的文件,例如:
# replace with your values
gcloud kms encrypt \
--location=global \
--keyring=my-kr \
--key=my-key \
--plaintext-file=./data-to-encrypt \
--ciphertext-file=./encrypted-data
其中 ./data-to-encrypt
是磁盘上的一个文件,其中包含您的 纯文本 秘密, ./encrypted-data
是磁盘上的目标路径,其中加密的 密文应该写成
直接使用 API 时,交互如下所示:
plaintext -> kms(encrypt) -> ciphertext
然而,当使用 gcloud
时,它看起来像这样:
plaintext-file -> gcloud(read) -> kms(encrypt) -> ciphertext -> gcloud(write)
当您调用 Cloud Build 时,它会有效地获取您的应用程序的 tarball,减去 .gcloudignore
中指定的任何文件。这意味着 ./encrypted-data
将在容器步骤内的文件系统上可用:
steps:
# decrypt the value in ./my-secret
- name: gcr.io/cloud-builders/gcloud
args:
- kms
- decrypt
- --location=global
- --keyring=my-kr
- --key=my-key
- --ciphertext=file=./encrypted-data
- --plaintext-file=./my-secret
- name: gcr.io/my-project/my-image
steps:
- my-app start --secret=./my-secret
目前,在 Cloud Build 的步骤之间共享数据的唯一方法是使用文件,但所有构建步骤都具有相同的共享文件系统。