
# DLI权限体系概述
DLI服务有两套权限体系，两种权限控制机制共同使用，权限相互叠加，且权限机制可以互补，共同提供更全面的权限控制。
表1DLI权限体系类型和说明 
| 类型        | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 相关说明                                                                         |
|:---|:---|:---|
| DLI服务权限管理 | DLI服务提供了对IAM用户的**资源权限控制** 和**资源操作权限控制**的能力，可用于给不同的IAM用户分配不同资源和操作权限。例如，对某IAM用户可以授予只能查询表的权限，而管理员用户可以进行查询表、删除表、访问表元数据等多种操作权限。 - **资源权限控制**：DLI服务中的各种资源（如弹性资源池、队列、数据库、表等）可以被设置不同的访问权限。这些权限可以精确到具体的读写操作。例如，可以设置某个IAM用户显示表权限，但不具备查询表权限。  - **资源操作权限控制**：DLI服务还对用户可以执行的操作进行权限控制。例如，可以设置某个IAM用户查询表的权限，但不具备添加列的权限。   | [DLI权限管理概述](https://support.huaweicloud.com/usermanual-dli/dli_01_0690.html) |
| IAM权限管理   | IAM提供权限的细粒度管理能力，允许创建和管理细粒度的权限策略。这些策略可以精确地定义用户或用户组在DLI服务中的操作权限。例如，可以创建一个权限并添加允许创建DLI弹性资源池的策略，并将该权限与用户组绑定，那么所有添加到该用户组中的用户都具备创建弹性资源池的权限。                                                                                                                                                                                                                                                                                                                                                 | [IAM权限管理概述](https://support.huaweicloud.com/usermanual-dli/dli_01_0417.html) |
   
DLI服务的权限管理侧重于对DLI服务内部资源和操作的精细管理，而IAM权限管理则侧重于从身份认证和全局权限策略的角度进行控制。通过两者的结合，可以实现从用户身份到具体资源操作的全方位权限管理。
例如对用户组A中的用户A赋予删除数据库资源的权限，但是用户组A中的其他用户不具备删除数据库资源池权限，那么通过IAM权限授予用户组A中的权限时不添加删除数据库权限"dli:database:dropDatabase"，但是通过DLI管理控制台提供的表权限管理可以精确地控制仅对用户A授予删除数据库的权限。
从这个例子可以看出DLI权限体系与IAM鉴权体系的作用范围是明确区分的，这也确保了两种权限控制机制相互独立不会受到互相干扰。
#### DLI权限管理与IAM项目、IAM权限管理与企业项目
本节介绍DLI权限管理与IAM项目、IAM权限管理与企业项目的项目作用。
首先了解IAM项目和企业项目的区别。
**IAM项目**
IAM项目是针对同一个区域内的资源进行分组和隔离，是**物理隔离**。
华为云的区域为默认项目，在区域下新建的项目为当前区域的子项目。
图1IAM项目   
![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002348096830.png "点击放大")
DLI服务是区域项目级服务，所以DLI的授权是基于区域项目级的。
DLI的数据库、表、增强型跨源连接支持DLI项目授权、跨租户项目授权，这里的项目都是当前区域下的子项目。
**企业项目**
企业项目是IAM项目的升级版，针对企业不同项目间资源的分组和管理，**是逻辑隔离。** **企业项目中可以包含多个区域的资源**，且项目中的资源可以迁入迁出。企业项目可以实现对特定云资源的授权，
图2IAM企业项目   
![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002381737277.png "点击放大")
例如：将任一弹性资源池添加至企业项目，对企业项目进行授权后，可以控制用户仅能使用后该弹性资源池。
**如果您开通了企业管理，将不能创建IAM项目。**
您可以通过这个视频了解使用企业项目进行资源权限管理：[管理企业项目并授权](https://support.huaweicloud.com/em_video/index.html)。
#### 权限管理的基本原则
- 优先级原则：如果存在明确的拒绝（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权限，即禁止该用户创建数据表，那么用户最终将无法访问该数据表。
  图3DLI两种权限工作机制   
  ![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002348096834.png "点击放大") 
 
#### 不同DLI资源类型支持的权限管理方式
DLI SQL资源即可使用SQL语句创建的资源，例如数据库和表。使用SQL资源需要具备"SQL操作权限"和"SQL资源权限"，其中SQL操作权限即授予使用该类型资源的DLI API的相关权限。
- **SQL资源：** 元数据、数据库、表（包含视图）列。
  在提交DLI作业前，您需要预先授予IAM用户使用DLI元数据、数据库、表、列的权限，确保作业在执行过程中能够顺利访问所需的数据和资源。
  
- **其他DLI资源：** 队列、弹性资源池、作业、全局变量、程序包、增强型跨源连接、跨源认证
  表2不同DLI资源类型支持的权限管理方式 
  | 资源类型    | 授权类型              | Spark 2.x | Spark 3.3.x |
  |:---|:---|:---|:---|
  | SQL资源   | IAM细粒度授权（角色或策略授权） | 支持        | 支持          |
  | SQL资源   | IAM细粒度授权（身份策略授权）  | 不支持       | 不支持         |
  | SQL资源   | DLI 资源授权          | 支持        | 支持          |
  | 其他DLI资源 | IAM细粒度授权（角色或策略授权） | 支持        | 支持          |
  | 其他DLI资源 | IAM细粒度授权（身份策略授权）  | 支持        | 支持          |
  | 其他DLI资源 | DLI 资源授权          | 支持        | 支持          |
     
  
 
