更新时间:2025-09-15 GMT+08:00

DLI权限体系概述

DLI服务有两套权限体系,两种权限控制机制共同使用,权限相互叠加,且权限机制可以互补,共同提供更全面的权限控制。

表1 DLI权限体系类型和说明

类型

说明

相关说明

DLI服务权限管理

DLI服务提供了对IAM用户的资源权限控制资源操作权限控制的能力,可用于给不同的IAM用户分配不同资源和操作权限。例如,对某IAM用户可以授予只能查询表的权限,而管理员用户可以进行查询表、删除表、访问表元数据等多种操作权限。

  • 资源权限控制:DLI服务中的各种资源(如弹性资源池、队列、数据库、表等)可以被设置不同的访问权限。这些权限可以精确到具体的读写操作。例如,可以设置某个IAM用户显示表权限,但不具备查询表权限。
  • 资源操作权限控制:DLI服务还对用户可以执行的操作进行权限控制。例如,可以设置某个IAM用户查询表的权限,但不具备添加列的权限。

DLI权限管理概述

IAM权限管理

IAM提供权限的细粒度管理能力,允许创建和管理细粒度的权限策略。这些策略可以精确地定义用户或用户组在DLI服务中的操作权限。例如,可以创建一个权限并添加允许创建DLI弹性资源池的策略,并将该权限与用户组绑定,那么所有添加到该用户组中的用户都具备创建弹性资源池的权限。

IAM权限管理概述

DLI服务的权限管理侧重于对DLI服务内部资源和操作的精细管理,而IAM权限管理则侧重于从身份认证和全局权限策略的角度进行控制。通过两者的结合,可以实现从用户身份到具体资源操作的全方位权限管理。

例如对用户组A中的用户A赋予删除数据库资源的权限,但是用户组A中的其他用户不具备删除数据库资源池权限,那么通过IAM权限授予用户组A中的权限时不添加删除数据库权限“dli:database:dropDatabase”,但是通过DLI管理控制台提供的表权限管理可以精确地控制仅对用户A授予删除数据库的权限。

从这个例子可以看出DLI权限体系与IAM鉴权体系的作用范围是明确区分的,这也确保了两种权限控制机制相互独立不会受到互相干扰。

DLI权限管理与IAM项目、IAM权限管理与企业项目

本节介绍DLI权限管理与IAM项目、IAM权限管理与企业项目的项目作用。

首先了解IAM项目和企业项目的区别。

IAM项目

IAM项目是针对同一个区域内的资源进行分组和隔离,是物理隔离

华为云的区域为默认项目,在区域下新建的项目为当前区域的子项目。

图1 IAM项目

DLI服务是区域项目级服务,所以DLI的授权是基于区域项目级的。

DLI的数据库、表、增强型跨源连接支持DLI项目授权、跨租户项目授权,这里的项目都是当前区域下的子项目。

企业项目

企业项目是IAM项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。企业项目可以实现对特定云资源的授权,

图2 IAM企业项目

例如:将任一弹性资源池添加至企业项目,对企业项目进行授权后,可以控制用户仅能使用后该弹性资源池。

如果您开通了企业管理,将不能创建IAM项目。

权限管理的基本原则

  • 优先级原则:如果存在明确的拒绝(Deny)权限,那么无论其他权限如何,鉴权结果都应该是拒绝。
  • 默认拒绝:如果没有明确的允许(Allow)权限,即使没有拒绝权限,鉴权结果也应该是拒绝。
  • 明确允许:只有当存在明确的允许权限时,鉴权结果才是允许。

两种权限的访问机制冲突时如何工作?

  • 没有策略授予Allow权限时,默认情况即为Deny权限。当有策略授权Allow权限,且没有其他策略Deny该权限时,Allow的权限才能生效。

    例如,IAM鉴权策略中对某个数据库DB1已经存在“创建表”的Allow权限的策略,再新增“创建视图”的Allow权限的策略,会在原权限的基础上进行叠加,增大用户的权限;

    如果新“增删除数据库”的Deny权限的策略,则会根据Deny优先原则调整用户的权限,即使通过DLI控制台授予了该数据库的允许删除数据库的操作权限,但是最后也会按照Deny优先原则拒绝用户具备“删除数据库”的权限。

  • 基于最小权限原则, Deny始终优先于Allow。

    例如,在DLI控制台授予某IAM用户允许在数据库DB1中创建表的权限,但IAM鉴权策略中添加了“dli:database:createTable”的Deny权限,即禁止该用户创建数据表,那么用户最终将无法访问该数据表。

    图3 DLI两种权限工作机制

不同DLI资源类型支持的权限管理方式

DLI SQL资源即可使用SQL语句创建的资源,例如数据库和表。使用SQL资源需要具备“SQL操作权限”和“SQL资源权限”,其中SQL操作权限即授予使用该类型资源的DLI API的相关权限。

  • SQL资源:元数据、数据库、表(包含视图)列。

    在提交DLI作业前,您需要预先授予IAM用户使用DLI元数据、数据库、表、列的权限,确保作业在执行过程中能够顺利访问所需的数据和资源。

  • 其他DLI资源:队列、弹性资源池、作业、全局变量、程序包、增强型跨源连接、跨源认证
    表2 不同DLI资源类型支持的权限管理方式

    资源类型

    授权类型

    Spark 2.x

    Spark 3.3.x

    HetuEngine 2.x

    SQL资源

    IAM细粒度授权(角色或策略授权)

    支持

    支持

    不支持

    SQL资源

    DLI 资源授权

    支持

    支持

    DLI SQL资源授权

    仅支持在DLI Console和API授权。

    其他DLI资源

    IAM细粒度授权(角色或策略授权)

    支持

    支持

    支持

    其他DLI资源

    DLI 资源授权

    支持

    支持

    支持