如何通过命令行向服务帐户授予 G​​CP 组织级权限

How To Grant GCP Organization Level Permissions to Service Account via Command Line

我正在尝试在 terraform 中创建数据源以获取有关 Google 计费帐户的信息。

data "google_billing_account" "ac" {
  display_name = "foo-Billing"
  open         = true
}

但是 terraform 抛出错误 Error: Billing account not found: foo-Billing,看起来我的服务帐户缺少执行此操作所需的权限,因为计费帐户确实存在。

我能够运行这个命令

gcloud projects add-iam-policy-binding main1-project --member=serviceAccount:$ID --role=roles/ROLE_NAME

除了 billing.admin 抛出错误

之外,它几乎可以与任何其他角色结合使用

ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: Role (roles/billing.admin) does not exist in the resource's hierarchy.

我是 GCP 的新手,所以我不确定如何解决这个问题。

有没有办法从命令行向服务帐户授予 billing.admin 权限?

也许另一个 API 可以打电话什么的。

我可以从 UI 授予权限,然后使我的 terraform 命令工作,但我希望能够从命令行授予它。

您收到此错误是因为您试图从项目级别分配计费管理员角色,但它只能在组织级别完成。

如果你有一个组织,那么同一个命令应该稍微调整一下。 gcloud organizations add-iam-policy-binding ORGANIZATION --member=serviceAccount:$ID --role=roles/billing.admin

您应该能够使用

获得您的组织列表

gcloud organizations list

如果你没有,那就创建一个。

您只需要一个 Gsuite 或 Cloud Identity 帐户。