【发布时间】:2021-04-01 02:05:08
【问题描述】:
我有一个 Terraform 用来管理我的云资源的服务帐户,我们称之为resource-manager-sa。我需要为其提供足够的访问权限来创建/删除/编辑其他服务帐户,但不能更改其自身或项目中不应触及的其他 SA。
我尝试在那里添加条件,但似乎“服务帐户”不是you can use 在条件 (?) 中的资源类型之一。这是我用于绑定该角色的 HCL sn-p(我使用 Terraform 的事实与此无关):
resource "google_project_iam_member" "service-account" {
project = var.project
role = "roles/iam.serviceAccountAdmin"
member = "serviceAccount:${google_service_account.resource-manager-sa.email}"
condition {
title = "Can manage Blah Blah SA"
expression = "resource.name.extract('/serviceAccounts/{name}').startsWith('blah-blah@')"
}
}
当我删除条件时,一切正常,但resource-manager-sa 拥有的权限远远超过它所需的权限。它甚至可以修改自己以提升自己的权限。我添加条件后,boom,它无法访问任何服务帐户:
错误:读取或编辑服务帐户
"projects/***/serviceAccounts/blah-blah@***.iam.gserviceaccount.com"时出错:googleapi:错误403:需要权限iam.serviceAccounts.get才能对服务帐户projects/***/serviceAccounts/blah-blah@***.iam.gserviceaccount.com执行此操作。禁止
我觉得我在这里做了一些根本错误的事情,但我找不到一个很好的示例配置来完成我想要在这里实现的目标。
【问题讨论】:
标签: google-cloud-platform google-iam google-cloud-iam