繁体   English   中英

在 terraform 中创建 GCP 服务帐户并将服务帐户密钥存储在 Secret Manager 中

[英]Create GCP service account and store service account key in secret manager in terraform

 resource "google_service_account" bq_test{ account_id = "ei-cs-test" display_name = "SA" project = "dev01-ein" } resource "google_service_account_key" "sa_key"{ service_account_id = google_service_account.bq_test.name public_key_type = "TYPE_X509_PEM_FILE" } resource "google_secret_manager_secret" "secret-basic" { secret_id = "test-sa-ad-sec-id" labels = { label = "my-label" } replication { automatic = true } project = "-dev01-ein" } resource "google_secret_manager_secret_version" "admin-password" { secret = "test-sa-ad" secret_data = base64decode(google_service_account_key.sa_key.private_key) }

我正在尝试使用服务帐户密钥创建服务帐户并将其存储在秘密管理器中,但出现错误。

Error: Error creating SecretVersion: googleapi: got HTTP response code 404 with body: <!DOCTYPE html>

我怀疑您正在尝试加密某些敏感信息。 我会推荐你使用谷歌KMS加密和解密。 因此,您的秘密将被加密为 secret.auto.tfvars.encrypted,您还可以在同一本地存储库中解密密文,例如 secrets.auto.tfvars。

您可以在下面使用此脚本:

 $ echo -n my-secret-password | gcloud kms encrypt \ > --project my-project \ > --location us-central1 \ > --keyring my-key-ring \ > --key my-crypto-key \ > --plaintext-file - \ > --ciphertext-file - \ > | base64 CiQAqD+xX4SXOSziF4a8JYvq4spfAuWhhYSNul33H85HnVtNQW4SOgDu2UZ46dQCRFl5MF6ekabviN8xq+F+2035ZJ85B+xTYXqNf4mZs0RJitnWWuXlYQh6axnnJYu3kDU=

这里的一个例子会给你一个更好的线索:

并且不要忘记在资源定义中引用加密的密文:

 resource "google_service_account" bq_test{ account_id = "ei-cs-test" display_name = "SA" project = "" } resource "google_service_account_key" "sa_key"{ service_account_id = google_service_account.bq_test.name public_key_type = "TYPE_X509_PEM_FILE" } resource "google_secret_manager_secret" "secret-basic" { secret_id = "secret-version" labels = { label = "my-label" } replication { automatic = true } project = "" } resource "google_secret_manager_secret_version" "admin-password" { secret = google_secret_manager_secret.secret-basic.id secret_data = base64decode(google_service_account_key.sa_key.private_key) }

错误是在 google_secret_manager_secret_version 上,秘密没有被正确引用,因此它不起作用,尝试上面的代码它会起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM