【发布时间】:2021-08-31 15:41:51
【问题描述】:
我正在使用 Terraform 创建云函数资源,并希望覆盖默认服务帐户“@appspot.gserviceaccount.com”以使用具有最低权限的自定义服务帐户。
我已经完成了以下操作,但是一旦创建了 Terraform 资源并检查了云功能权限选项卡,它仍然默认为原始选项“@appspot.gserviceaccount.com”
resource "google_service_account" "service_account" {
account_id = "mysa"
display_name = "Service Account"
}
data "google_iam_policy" "cfunction_iam" {
binding {
role = google_project_iam_custom_role.cfunction_role.id
members = [
"serviceAccount:${google_service_account.service_account.email}",
]
}
binding {
role = "roles/cloudfunctions.developer"
members = [
"serviceAccount:${google_service_account.service_account.email}",
]
}
}
resource "google_cloudfunctions_function_iam_policy" "policy" {
project = google_cloudfunctions_function.function.project
region = google_cloudfunctions_function.function.region
cloud_function = google_cloudfunctions_function.function.name
policy_data = data.google_iam_policy.cfunction_iam.policy_data
}
resource "google_project_iam_custom_role" "cfunction_role" {
role_id = "customCFunctionRole"
title = "Custom Cloud Function Role"
description = "More granular permissions other than default @appspot SA"
permissions = [
"storage.objects.create",
"storage.multipartUploads.create",
"storage.objects.get",
"bigquery.tables.create",
"bigquery.tables.list",
"bigquery.tables.updateData",
"logging.logEntries.create",
]
}
@Update,我也在 Cloud Function 资源中设置了服务帐户参数:
service_account_email = "${google_service_account.service_account.email}"
我在这里错过了什么?
谢谢!
【问题讨论】:
-
我不熟悉 Terraform,但看起来您实际上并没有使用您可能创建的服务帐户部署云功能。您似乎正在创建一个服务帐户,并且一些绑定可能会绑定 Cloud Function、帐户和角色(我不清楚),但您希望部署 Cloud Functions 以作为服务帐户运行。
-
此属性需要是您新创建的服务帐号:registry.terraform.io/providers/hashicorp/google/latest/docs/…
-
嗨 DazWilkin,我很抱歉,但我忘了附加云函数资源。我已经将服务帐户属性设置如下: service_account_email = "${google_service_account.service_account.email}"
-
如果您确信自己在做正确的事情,那么 Terraform 提供程序当然有可能是不正确的(忽略了您的
service_account_email)。也许在 GitHub 存储库上提出问题:github.com/hashicorp/terraform-provider-google/issues -
@DazWikin,由于某种原因它开始工作了。我删除了 tf state 并运行了 terraform apply ,此时它获取了服务帐户。谢谢!
标签: google-cloud-platform google-cloud-functions terraform terraform-provider-gcp