google-cloud-platform - 使用不在 IAM 中的用户创建的 Google Cloud 资源
问题描述
情况:
- 我有一个 GCP 项目 (
owner
) 属于我无权访问的组织,所以我在No Organization
- 用户 (
xyz@domain.com
) 为现有的 pubsub 主题创建了订阅,我在活动和审计日志下看到 - 此用户在 IAM 中对我不可见(例如,作为
editor
,或具有某些 pubsub 特定角色) - 我也无法在任何与发布/订阅相关的主题/订阅中看到该用户,具有角色,特别是在他创建订阅的主题中
概括:
xyz@domain.com
创建了一个潜艇。- 我不知道他从哪里得到这个角色(继承?)
问题:
- 这个人是否有可能
editor
在组织中(或项目上方的某个文件夹),但我在项目的 IAM 部分中没有看到该角色? - 如果不是,该角色可以从哪里继承?
解决方案
创建订阅
要订阅 Pub/Sub 主题,用户应该能够创建订阅对象。为此,需要对主题的pubsub.subscriptions.create权限。它可以通过以下方式显式分配到主题或从父级别(项目、文件夹、组织)继承:
- 从项目级别或更高级别继承的自定义角色;
- 在 Pub/Sub 主题级别分配或从父级别继承的预定义角色pubsub.editor或pubsub.admin ;
- 从项目或服务资源级别或更高级别继承的原始角色编辑器或所有者;例如,新创建的 VM 实例正在代表的Compute Engine 默认服务帐户在它所属的项目中具有编辑角色。
查看角色分配
要跟踪从何处继承有效权限,需要列出以下 Permssions:
- resourcemanager.organizations.getIamPolicy
- resourcemanager.folders.getIamPolicy
- resourcemanager.projects.getIamPolicy
包含该权限的 IAM 预定义角色是:
- resourcemanager.organizationAdmin
- iam.securityAdmin
- iam.securityReviewer
可以追溯到文件夹级别的 IAM 预定义角色是:
- resourcemanager.folderAdmin
- resourcemanager.folderEditor
- resourcemanager.folderIamAdmin
IAM 原始角色:
- 查看器
- 编辑
- 所有者
要获得所产生权限的全面视图,您应该被授予在 IAM 层次结构中尽可能高分配的上述角色(最好是在组织级别),以获得足够的管理范围进行调查。
您看不到位于您拥有的管理范围之外的绑定。因此,您看不到权限继承的级别以及授予权限的安全主题。
回到问题
- 这个人是否有可能在组织(或项目上方的某个文件夹)中拥有例如编辑器,但我在项目的 IAM 部分中没有看到该角色?
- 是的
- 如果不是,该角色可以从哪里继承?
- 项目上方的组织级别和所有文件夹级别(可以嵌套)。
供应商文件
推荐阅读
- leaflet - MapQuest/Leaflet - 如何使用 gps 坐标跟踪标记之间的路线?
- react-native - 为以后的选项、Stripe、React Native、Expo 节省付款
- android - 将文件上传到服务器时出现 OutOfMemoryError
- python - 对训练中的数据进行子集化,并在 Python 中进行测试
- java - JdbcTemplate queryForObject() 与参数一起使用时出错
- python - 创建具有相同功能的各种按钮后,如何删除 tkinter 中的特定按钮?
- scala - Scala Akka 项目中 .properties 文件的位置
- node.js - 使用 .sfz soundfonts 通过 WebMScore 渲染音频
- intellij-idea - 如何将每个文件的历史记录显示为 Intellij 中的默认 Git 面板?
- javascript - 如何根据 nexts js 中的一些选择选项呈现动态价格?