如何在Terraform中避免重复配置,授权服务账号调用所有Cloud Function?
批量授权用户/服务账号调用所有Cloud Function的方法
通常要授权用户或服务账号调用单个Cloud Function,需要在Terraform中定义如下资源:
resource "google_cloudfunctions_function_iam_member" "invoker" { project = google_cloudfunctions_function.function.project region = google_cloudfunctions_function.function.region cloud_function = google_cloudfunctions_function.function.name role = "roles/cloudfunctions.invoker" member = "user:myFunctionInvoker@example.com" }
但这种方式需要为每个Cloud Function重复配置,效率很低。以下是无需重复定义即可批量授权的可行方案:
可行批量授权方案
通过为Cloud Function所使用的服务账号添加roles/iam.serviceAccountUser角色绑定,就能让指定用户/服务账号调用所有使用该服务账号的Cloud Function。对应的gcloud命令如下:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \ --member user:USER_EMAIL \ --role roles/iam.serviceAccountUser
内容的提问来源于stack exchange,提问作者BlueBeret
相关产品推荐
相关产品推荐

