如何允许 GCP 身份修改特定服务帐户
How to allow a GCP Identity to modify specific service accounts
我有一个 Terraform 用来管理我的云资源的服务帐户,我们称它为 resource-manager-sa
。我需要给它足够的访问权限 create/delete/edit 其他服务帐户,但不能更改它自己或项目中它不应该接触的其他 SA。
我尝试在那里添加一个条件,但似乎 'service accounts' 不是 you can use 在条件 (?) 中的资源类型之一。这是我用于绑定该角色的 HCL 片段(我使用 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
拥有的权限远远超过它需要的权限。它甚至可以修改自己来提升自己的特权。我添加条件后,砰的一声,它无法访问任何服务帐户:
Error: Error when reading or editing Service Account "projects/***/serviceAccounts/blah-blah@***.iam.gserviceaccount.com"
: googleapi: Error 403: Permission iam.serviceAccounts.get
is required to perform this operation on service account projects/***/serviceAccounts/blah-blah@***.iam.gserviceaccount.com
., forbidden
我觉得我在这里做的事情根本上是错误的,但我找不到一个很好的示例配置来实现我在这里想要实现的目标。
服务帐户也是一种资源。因此,您可以在服务帐户级别而非项目级别为身份分配 IAM 权限。这意味着您可以创建一个没有 permissions/roles 的服务帐户并将该服务帐户权限授予另一个服务帐户。
使用 Terraform 查看 google_service_account_iam_member 资源。这将为您提供您询问的粒度,并且不允许提升权限。
我有一个 Terraform 用来管理我的云资源的服务帐户,我们称它为 resource-manager-sa
。我需要给它足够的访问权限 create/delete/edit 其他服务帐户,但不能更改它自己或项目中它不应该接触的其他 SA。
我尝试在那里添加一个条件,但似乎 'service accounts' 不是 you can use 在条件 (?) 中的资源类型之一。这是我用于绑定该角色的 HCL 片段(我使用 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
拥有的权限远远超过它需要的权限。它甚至可以修改自己来提升自己的特权。我添加条件后,砰的一声,它无法访问任何服务帐户:
Error: Error when reading or editing Service Account
"projects/***/serviceAccounts/blah-blah@***.iam.gserviceaccount.com"
: googleapi: Error 403: Permissioniam.serviceAccounts.get
is required to perform this operation on service accountprojects/***/serviceAccounts/blah-blah@***.iam.gserviceaccount.com
., forbidden
我觉得我在这里做的事情根本上是错误的,但我找不到一个很好的示例配置来实现我在这里想要实现的目标。
服务帐户也是一种资源。因此,您可以在服务帐户级别而非项目级别为身份分配 IAM 权限。这意味着您可以创建一个没有 permissions/roles 的服务帐户并将该服务帐户权限授予另一个服务帐户。
使用 Terraform 查看 google_service_account_iam_member 资源。这将为您提供您询问的粒度,并且不允许提升权限。