基于角色的访问权限控制 (RBAC) 概览

本页面介绍使用基于角色的访问权限控制 (RBAC) 进行精细授权(可在 Cloud Data Fusion 6.5 及更高版本中使用)。

RBAC 限制您在 Cloud Data Fusion 中开发流水线的环境内的访问权限。RBAC 可帮助您管理哪些人有权访问 Cloud Data Fusion 资源、他们可以使用这些资源执行哪些操作,以及可以访问哪些区域(例如实例或命名空间)。Cloud Data Fusion RBAC 是一个授权系统,该系统提供由 Identity and Access Management (IAM) 提供支持的精细访问权限管理。

何时使用 RBAC

基于角色的访问权限控制在单个 Cloud Data Fusion 实例内提供命名空间级隔离。建议用于以下用例:

  • 帮助减少组织使用的实例数量。
  • 拥有多个开发者、团队或业务部门使用单个 Cloud Data Fusion 实例。

借助 Cloud Data Fusion RBAC,组织可以:

  • 允许用户仅在命名空间内运行流水线,但不能修改工件或运行时计算配置文件。
  • 允许用户仅查看流水线,但不能修改或运行流水线。
  • 允许用户创建、部署和运行流水线。

建议:即使您使用 RBAC,也为了保持隔离、安全性和性能稳定性,请对开发和生产环境使用单独的项目和实例。

限制

  • 用户可以在实例或命名空间级层授予一个或多个角色。
  • RBAC 仅适用于 Cloud Data Fusion 企业版
  • 命名空间数量:每个实例的命名空间数量没有硬性限制。
  • 用户:每个实例最多支持 50 个用户。
  • 自定义角色:不支持创建自定义 RBAC 角色。
  • Cloud Data Fusion RBAC 不支持对连接管理授权。
  • 使用服务帐号 OAuth 访问令牌访问启用了 RBAC 的 6.5 版实例时,必须指定以下范围,尤其是 userinfo.email 范围。如果没有这些权限,您可能会遇到权限遭拒错误。
    • https://www.googleapis.com/auth/userinfo.email
    • https://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/servicecontrol

Role assignments(角色分配)

角色分配由三个元素组成:主账号、角色定义和范围。

主账号

主帐号(以前称为成员)可以是 Google 帐号(针对最终用户)、服务帐号(针对应用和虚拟机)或请求访问 Cloud Data Fusion 资源的 Google 群组。您可以为这些主账号分配角色。

角色定义

一个角色包含一组权限,可让您对 Google Cloud 资源执行特定操作。

Cloud Data Fusion 提供了多种您可以使用的预定义角色

示例

  • Instance Admin 角色 (datafusion.admin) 允许主账号创建和删除命名空间并授予权限。
  • Developer 角色 (datafusion.developer) 让主帐号能够创建和删除流水线、部署流水线以及运行预览。

范围

范围是访问适用的资源集。分配角色时,您可以通过定义范围(例如,实例或命名空间)来进一步限制允许的操作。如果您想为某人分配 Developer 角色,但只想为一个命名空间分配,这会非常有用。

预定义的 Cloud Data Fusion 角色

Cloud Data Fusion RBAC 包含您可以使用的几个预定义角色:

Instance Access 角色 (datafusion.accessor)
授予主账号对 Cloud Data Fusion 实例的访问权限,但不授予对实例中任何资源的访问权限。可以将此角色与其他特定于命名空间的角色结合使用,以提供对命名空间的精细访问权限。
Viewer”角色 (datafusion.viewer)
向主账号授予对命名空间的访问权限,以查看流水线,但无权编写或运行流水线。
运算符角色 (datafusion.operator)
向命名空间上的主帐号授予访问权限,以访问和运行流水线、更改计算配置文件、创建计算配置文件或上传工件。可以执行与开发者相同的操作,但预览流水线除外。
Developer 角色 (datafusion.developer)
向主账号授予对命名空间的访问权限,以创建和修改命名空间中的有限资源(如流水线)。
Editor 角色 (datafusion.editor)
向主帐号授予对 Cloud Data Fusion 实例中命名空间下所有 Cloud Data Fusion 资源的完整访问权限。除 Instance Accessor 角色外,主账号还必须授予此角色。拥有此角色的主帐号可以在命名空间中创建、删除和修改资源。
Instance Admin 角色 (datafusion.admin)
授予对 Cloud Data Fusion 实例中所有资源的访问权限。通过 IAM 分配。未通过 RBAC 在命名空间级别分配。
操作 datafusion.accessor datafusion.viewer datafusion.operator datafusion.developer datafusion.editor datafusion.admin
实例
访问实例
命名空间
创建命名空间 *
访问已授予明确访问权限的命名空间
访问命名空间但未授予明确访问权限 *
修改命名空间
删除命名空间
命名空间服务帐号
添加服务账号
修改服务账号
移除服务账号
使用服务帐号
RBAC
授予或撤消命名空间中其他主账号的权限 *
时间表
创建时间表
查看时间表
更改时间表
计算配置文件
创建计算配置文件
查看计算配置文件
修改计算配置文件
删除计算配置文件
连接
创建连接
查看连接
修改连接
删除连接
使用连接
流水线
创建流水线
查看流水线
修改流水线
删除流水线
预览流水线
部署流水线
运行流水线
安全密钥
创建安全密钥
查看安全密钥
删除安全密钥
标记
创建标记
查看标记
删除标记
Cloud Data Fusion Hub
部署插件
源代码控制管理
配置源代码控制代码库
从命名空间同步流水线
沿袭
查看沿袭
日志
查看日志

* 主帐号必须具有 Data Fusion Admin IAM 角色,而不是 Instance Admin RBAC 角色。

安全建议

采用安全模型并使其满足组织的需求和要求可能具有挑战性。以下建议旨在帮助您简化采用 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 开发者使用开发者角色
  • 对于提供操作管理员或 DevOps 服务的用户,建议提供命名空间的操作员角色。它们能够执行开发者可以执行的所有操作(预览流水线除外),还可以部署工件和管理计算配置文件。
  • 命名空间的 Editor 角色是一个特权角色,用于向用户或 Google 群组授予对命名空间中所有资源的完整访问权限。Editor 可视为开发者与运营商角色的并集。
  • OperatorAdmin 应该谨慎安装不受信任的插件或工件,因为这可能会带来安全风险。

问题排查

本页面介绍了如何在 Cloud Data Fusion 中解决与 RBAC 相关的问题。

在 RBAC 中拥有命名空间的 Cloud Data Fusion Viewer 角色的主账号可以修改流水线

访问权限基于 IAM 和 RBAC 角色的组合。IAM 角色的优先级高于 RBAC 角色。 检查主帐号是否具有 Project EditorCloud Data Fusion Admin IAM 角色。

在 RBAC 中拥有实例管理员角色的主账号无法在 Google Cloud 控制台中查看 Cloud Data Fusion 实例

Cloud Data Fusion 中存在一个已知问题,即拥有 Instance Admin 角色的主帐号无法在 Google Cloud 控制台中查看实例。如需解决此问题,除了将 Project Viewer 或某一 Cloud Data Fusion IAM 角色授予实例的管理员之外,您还可以授予这些角色。此角色会授予对项目中所有实例的 Viewer 访问权限。

阻止主账号查看它们没有角色的命名空间

为了防止主帐号查看没有角色的命名空间,他们不得具有 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 角色,该主账号就会隐式分配给该主账号。如需验证主帐号是否在特定实例上具有该角色,请参阅 IAM 政策分析器

后续步骤