问题描述
在使用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
的拒绝策略。我们指定了被拒绝的主体和权限。请根据实际情况修改parent
和denied_principals
字段的值。
需要注意的是,应用拒绝策略需要一些特定的权限。请确保你具有适当的权限,以避免出现问题。
方案2
根据用户的描述,另一种解决方案是为第二类用户创建一个自定义角色。第一类用户继续使用roles/viewer
角色,而第二类用户使用roles/restricted-viewers
或其他自定义角色。以下是实现这个解决方案的步骤:
1. 创建一个自定义角色,例如roles/restricted-viewers
。
2. 在自定义角色中定义允许访问的权限。
3. 将第二类用户分配到自定义角色。
请注意,这种方法需要用户手动维护viewer
角色的权限,并将其应用到自定义角色中。
以上是两种解决方案,根据用户的具体需求选择适合的方法。