GCP IAM角色和组织文件夹的拒绝规则

127次阅读
没有评论

问题描述

在使用GCP组织文件夹时,有一些人需要对整个GCP进行完全只读访问权限,而另一些人需要对一个或多个文件夹的项目进行只读访问权限。然而,用户希望拒绝这些人访问Secrets Manager或Billing。用户尝试了几种方法,但都没有达到预期的效果。用户想知道是否有其他更好的方法来解决这个问题,以及Google是如何处理这种情况的。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据用户的描述,目前没有办法使用拒绝策略来实现用户的需求。但是,可以在项目、文件夹或组织级别上附加拒绝策略。具体操作如下:
1. 使用Terraform创建一个拒绝策略。
2. 在拒绝策略中指定被拒绝的主体和权限。
以下是一个使用Terraform创建拒绝策略的示例:

terraform {
  required_providers {
    google = {
      version = "~> 4.53.1"
    }
  }
}

provider "google" {
  project = "myProject"
  region  = "europe-west1"
}

resource "google_iam_deny_policy" "deny" {
  provider     = google-beta
  parent       = urlencode("cloudresourcemanager.googleapis.com/folders/1234567890")
  name         = "my-deny-rule"
  display_name = "Deny Rule for trying it out"

  rules {
    description = "Deny Access to confidential resources"

    deny_rule {
      denied_principals  = ["principal://goog/subject/ralph@example.com"]
      denied_permissions = ["dns.googleapis.com/managedZones.list"]
    }
  }
}

在上面的示例中,我们使用Terraform创建了一个名为my-deny-rule的拒绝策略。我们指定了被拒绝的主体和权限。请根据实际情况修改parentdenied_principals字段的值。

需要注意的是,应用拒绝策略需要一些特定的权限。请确保你具有适当的权限,以避免出现问题。

方案2

根据用户的描述,另一种解决方案是为第二类用户创建一个自定义角色。第一类用户继续使用roles/viewer角色,而第二类用户使用roles/restricted-viewers或其他自定义角色。以下是实现这个解决方案的步骤:
1. 创建一个自定义角色,例如roles/restricted-viewers
2. 在自定义角色中定义允许访问的权限。
3. 将第二类用户分配到自定义角色。
请注意,这种方法需要用户手动维护viewer角色的权限,并将其应用到自定义角色中。

以上是两种解决方案,根据用户的具体需求选择适合的方法。

正文完