- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个相当简单的 Terraform 配置:
terraform {
required_providers {
google = {
source = "hashicorp/google"
version = "~> 4.19.0"
}
airflow = {
source = "DrFaust92/airflow"
version = "~> 0.6.0"
}
}
}
data "http" "client_id" {
url = var.cloud_composer.airflow_uri
}
resource "google_service_account" "impersonated-gsa" {
account_id = "impersonated"
}
data "google_service_account_access_token" "impersonated" {
target_service_account = google_service_account.impersonated-gsa.email
delegates = []
scopes = ["userinfo-email", "cloud-platform"]
lifetime = "300s"
}
provider "google" {
alias = "impersonated"
access_token = data.google_service_account_access_token.impersonated.access_token
}
data "google_service_account_id_token" "oidc" {
provider = google.impersonated
target_service_account = google_service_account.impersonated-gsa.email
delegates = []
include_email = true
target_audience = regex("[A-Za-z0-9-]*\\.apps\\.googleusercontent\\.com", data.http.client_id.body)
}
provider "airflow" {
base_endpoint = data.http.client_id.url
oauth2_token = data.google_service_account_id_token.oidc.id_token
}
配置大部分是直接从Terraform Airflow provider的文档中复制过来的.
当我尝试在其上运行 Terraform 时,例如 terraform plan
,我收到此 403 错误:
╷
│ Error: googleapi: Error 403: The caller does not have permission, forbidden
│
│ with module.airflow.data.google_service_account_access_token.impersonated,
│ on modules/airflow/providers.tf line 23, in data "google_service_account_access_token" "impersonated":
│ 23: data "google_service_account_access_token" "impersonated" {
│
╵
我在我的本地终端中运行 Terraform,通过我的 gcloud
用户进行身份验证,如 Terraform docs 中所述.据我所知,我的用户在 GCP 中具有实际的 Owner 角色,不需要更多权限即可完成这项工作。无论如何,我也为自己添加了 roles/iam.serviceAccountTokenCreator
角色,这似乎是执行此操作所必需的,但没有帮助并且错误是相同的。
在这一点上,我不知道我做错了什么,或者即使 Terraform 配置本身是正确的。
有人能给点意见或建议吗?谢谢。
编辑以添加更多详细信息,因为我无法完整回答 John Hanley 的评论:
没错,
userinfo-email
。其实here , here和 here总是 userinfo-email
。无论如何,我更改为 userinfo.email
。这不会影响结果。所以,一定是TF配置的错误。
最佳答案
userinfo-email 范围无效。它应该是 userinfo.email。
您声明您正在使用具有所有者 角色的帐户。但是,该错误消息表明您没有在 Terraform 中使用该身份。
使用用户身份可能会导致错误(API 配额)。您应该使用服务帐户。我建议分配一个服务帐户,为其分配所需的角色,并使用该服务帐户初始化 Terraform 提供程序。
关于google-cloud-platform - 尝试在 GCP 中模拟服务帐户时出现错误 403、 "The caller does not have permission",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72291420/
我是一名优秀的程序员,十分优秀!