【发布时间】:2021-03-02 23:29:26
【问题描述】:
我想为每个文件夹构建 GCP 访问权限,因此文件夹用户只能在文件夹中拥有项目查看器,并且在文件夹中创建的每个项目都应该只允许有权访问文件夹的团队在项目中使用特定资源。
我设法创建了文件夹部分,项目将通过 terraform 创建,现在我有一个阻止程序,如何使用预定义角色执行每个项目的 iam 权限。假设我有一个小组需要处理由 terraform 创建的项目 X,并且该小组将使用 Cloud SQL、Compute Engine、网络管理。所以理想情况下,我会在 TF 中创建google_project_iam_binding,其中成员将是该组,角色将包含这些资源的预定义 IAM 角色列表。但这是不可能的,我需要指导如何实现这一点。
resource "google_project_iam_custom_role" "km-role" {
role_id = "KnowledgeManagementRole"
title = "Knowledge Management Custom Role"
description = "Test role for KM"
permissions = [
"compute.*",
"networkmanagement.*",
"resourcemanager.projects.get",
"resourcemanager.projects.list",
"serviceusage.quotas.get",
"serviceusage.services.get",
"serviceusage.services.list",
]
}
不幸的是,不支持*,所以在这种情况下,我必须编写 30+ 计算机权限。您也不能将预定义角色用作自定义 iam 角色中的列表:/。
【问题讨论】:
-
可以使用
google_project_iam_binding进行用户组绑定,也许我不完全了解您的情况,您是否在创建自定义角色时遇到问题,或者是什么问题不允许您完成这一步? -
问题是权限列表。例如,如果我想添加所有计算机权限,其中有 40 多个,我需要将所有这些权限都列在 aim_custom_role 中。
google_project_iam_binding在代码中仅支持 ONE 权限。您不能在那里定义权限列表 - 这就是问题所在。我知道如何克服这个问题的唯一方法是使用iam_custom_role,但是你需要把所有可能的权限都放在computer.*中,因为不支持*表达式。
标签: google-cloud-platform terraform google-iam terraform-provider-gcp