本页介绍了 Cloud Data Fusion 中基于角色的访问权限控制 (RBAC) 的精细授权。
在 Cloud Data Fusion 实例中启用 RBAC 后,您可以控制实例和命名空间中的访问权限,例如哪些人可以访问 Cloud Data Fusion 资源以及他们可以对这些资源执行哪些操作。
RBAC 的使用场景
RBAC 在单个 Cloud Data Fusion 实例中提供命名空间级别隔离。建议用于以下用例:
- 帮助减少组织使用的实例数量。
- 拥有多个开发者、团队或业务部门使用单个 Cloud Data Fusion 实例。
借助 Cloud Data Fusion RBAC,组织可以:
- 仅允许用户在命名空间内运行流水线,不允许修改工件或运行时计算配置文件。
- 允许用户仅查看流水线,但不允许修改或运行流水线。
- 允许用户创建、部署和运行流水线。
建议:即使您使用 RBAC,为了保持隔离、安全和性能稳定性,请为开发环境和生产环境使用单独的项目和实例。
限制
- 用户可以在实例或命名空间级层授予一个或多个角色。
- RBAC 仅适用于 Cloud Data Fusion 企业版。
- 命名空间数量:每个实例对命名空间数量没有硬性限制。
- 如需了解启用 RBAC 的实例中的并发用户数上限,请参阅价格。
- 自定义角色:不支持创建自定义 RBAC 角色。
- Cloud Data Fusion RBAC 不支持对连接管理进行授权。
- 使用服务账号 OAuth 访问令牌访问启用了 6.5 版 RBAC 的实例时,必须指定以下范围,尤其是
userinfo.email
范围。如果没有这些权限,您会遇到权限被拒绝的错误。https://www.googleapis.com/auth/userinfo.email
https://www.googleapis.com/auth/cloud-platform
或https://www.googleapis.com/auth/servicecontrol
角色分配
角色分配由三个元素组成:主账号、角色定义和范围。
主账号
您可以向主账号授予角色,以更改其对 Cloud Data Fusion 资源的访问权限。
角色定义
一个角色包含一组权限,可让您对Google Cloud 资源执行特定操作。
Cloud Data Fusion 提供了多个您可以使用的预定义角色。
示例:
- Instance Admin 角色 (
datafusion.admin
) 允许主账号创建和删除命名空间并授予权限。 - Developer 角色 (
datafusion.developer
) 可让主账号创建和删除流水线、部署流水线以及运行预览。
范围
范围是访问权限适用的资源集。分配角色时,您可以通过定义范围(例如实例或命名空间)来进一步限制允许的操作。如果您想为某人分配开发者角色,但仅分配给一个命名空间,这会非常有用。
安全建议
采用安全模型并使其满足组织的需求和要求可能具有挑战性。以下建议旨在帮助您简化采用 Cloud Data Fusion 的 RBAC 模型的过程:
- 应谨慎授予 Instance Admin 角色。此角色可以授予对实例及其所有底层 Cloud Data Fusion 资源的完整访问权限。具有此角色的主账号可以使用 REST API 向其他人授予权限。
- 如果主账号需要访问 Cloud Data Fusion 实例中的各个命名空间,则不应授予 Instance Admin 角色。请改为将 Instance Accessor 角色授予部分命名空间上的 Viewer/Developer/Operator/Editor 角色之一。
- 首先可以安全地分配 Instance Accessor 角色,因为它可以授予主账号对实例的访问权限,但不会授予对实例中任何资源的访问权限。此角色通常与 Viewer/Developer/Operator/Editor 中的一个搭配使用,以授予对实例中一个或部分命名空间的访问权限。
- 建议将 Viewer 角色分配给想要自助服务以了解正在运行的作业的状态,或使用 Cloud Data Fusion 实例查看管道或日志的用户或 Google 群组。例如,想知道处理是否已完成的日报的消费者。
- 建议负责创建、测试和管理流水线的 ETL 开发者使用 Developer 角色。
- 对于提供运营管理员或 DevOps 服务的用户,建议使用命名空间的 Operator 角色。他们能够执行开发者能执行的所有操作(预览流水线除外),还能部署工件和管理计算配置文件。
- 命名空间的 Editor 角色是一个特权角色,用于向用户或 Google 群组授予对命名空间中所有资源的完整访问权限。Editor 可视为开发者与运营商角色的并集。
- Operator 和 Admin 应该谨慎安装不受信任的插件或工件,因为这可能会带来安全风险。
问题排查
本页面部分介绍了如何解决 Cloud Data Fusion 中与 RBAC 相关的问题。
在 RBAC 中拥有命名空间的 Cloud Data Fusion 查看者角色的主账号可以修改流水线
访问权限基于 IAM 和 RBAC 角色的组合。IAM 角色优先于 RBAC 角色。检查主账号是否具有 Project Editor 或 Cloud Data Fusion Admin IAM 角色。
在 RBAC 中具有“实例管理员”角色的正文无法在 Google Cloud 控制台中查看 Cloud Data Fusion 实例
Cloud Data Fusion 存在一个已知问题,即具有“实例管理员”角色的主账号无法在 Google Cloud 控制台中查看实例。如需解决此问题,请为主账号授予 Project Viewer 或 Cloud Data Fusion IAM 角色之一,并将其设为实例的管理员。这会向“查看者”授予对项目中所有实例的主账号的访问权限。
阻止主账号查看其没有角色的命名空间
如需阻止主账号查看其没有角色的命名空间,则该主账号不得具有 Project Viewer 或任何 Cloud Data Fusion IAM 角色。相反,请仅在主账号需要操作的命名空间中向其授予 RBAC 角色。
具有此类访问权限的正文不会在 Google Cloud 控制台中看到 Cloud Data Fusion 实例列表。请改为向他们提供指向实例的直接链接,类似于以下内容:https://INSTANCE_NAME-PROJECT_ID.REGION_NAME.datafusion.googleusercontent.com/
当主账号打开实例时,Cloud Data Fusion 会显示已向主账号授予 RBAC 角色的命名空间列表。
向主账号授予 Cloud Data Fusion Accessor 角色
为主账号分配任何 Cloud Data Fusion 实例的任何其他 RBAC 角色时,系统会隐式为其分配 Accessor 角色。如需验证某个主账号是否在特定实例中具有该角色,请参阅 IAM 政策分析器。