【问题标题】:How to allow a GCP Identity to modify specific service accounts如何允许 GCP 身份修改特定的服务帐户
【发布时间】: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


    【解决方案1】:

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

    使用 Terraform 查看 google_service_account_iam_member 资源。这将为您提供您询问的粒度,并且不允许提升权限。

    【讨论】:

    • 使用服务帐户作为资源正是我在这里要做的。 blah-blah@.... 是资源,resource-manager-sa@.... 应该有权访问该资源。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-06-28
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多