Google cloud platform 如何允许GCP标识修改特定服务帐户

Google cloud platform 如何允许GCP标识修改特定服务帐户,google-cloud-platform,google-iam,google-cloud-iam,Google Cloud Platform,Google Iam,Google Cloud Iam,我有一个Terraform用来管理我的云资源的服务帐户,我们称之为资源管理器sa。我需要给它足够的权限来创建/删除/编辑其他服务帐户,但不能更改它自己或项目中其他它不应该接触的SA 我尝试在那里添加一个条件,但似乎“服务帐户”不是条件(?)中的资源类型之一。以下是我绑定该角色的HCL片段(我使用Terraform的事实与此无关): 当我删除该条件时,一切正常,但资源管理器sa的权限远远超出其需要。它甚至可以修改自身以升级自己的权限。我添加条件boom后,它无法访问任何服务帐户: 错误:读取或编辑

我有一个Terraform用来管理我的云资源的服务帐户,我们称之为
资源管理器sa
。我需要给它足够的权限来创建/删除/编辑其他服务帐户,但不能更改它自己或项目中其他它不应该接触的SA

我尝试在那里添加一个条件,但似乎“服务帐户”不是条件(?)中的资源类型之一。以下是我绑定该角色的HCL片段(我使用Terraform的事实与此无关):

当我删除该条件时,一切正常,但
资源管理器sa
的权限远远超出其需要。它甚至可以修改自身以升级自己的权限。我添加条件boom后,它无法访问任何服务帐户:

错误:读取或编辑服务帐户时出错
“projects/***/servicecomports/blah blah***.iam.gserviceaccount.com”
:googleapi:Error 403:Permission
iam.servicecomports.get
需要对服务帐户
projects/***/servicecomports/blah blah***.iam.gserviceaccount.com
执行此操作。,禁止的


我觉得我在这里做了一些根本错误的事情,但我找不到一个好的配置示例来实现我在这里试图实现的目标。

服务帐户也是一种资源。因此,您可以在服务帐户级别而不是项目级别为标识分配IAM权限。这意味着您可以创建一个没有权限/角色的服务帐户,并将该服务帐户权限授予另一个服务帐户


使用Terraform查看资源。这将为您提供所要求的粒度,并且不允许权限升级。

服务帐户也是一种资源。因此,您可以在服务帐户级别而不是项目级别为标识分配IAM权限。这意味着您可以创建一个没有权限/角色的服务帐户,并将该服务帐户权限授予另一个服务帐户


使用Terraform查看资源。这将为您提供您所要求的粒度,并且不允许特权升级。

使用服务帐户作为资源正是我在这里试图做的<代码>废话-blah@....是资源,
资源管理器-sa@....
应该可以访问该资源。谢谢使用服务帐户作为资源正是我在这里要做的<代码>废话-blah@....是资源,
资源管理器-sa@....
应该可以访问该资源。谢谢
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@')"
  }
}