
# 创建DLI自定义委托权限
使用Flink 1.15和Spark 3.3及以上版本的引擎执行作业时，当您所需的委托没有包含在DLI系统委托dli_management_agency时，您需要在IAM页面创建相关委托，并在作业配置中添加新建的委托信息。dli_management_agency包含跨源操作、消息通知、用户授权操作所需的权限，除此之外的其他委托权限需求，都需自定义DLI委托。了解dli_management_agency请参考[DLI委托概述](https://support.huaweicloud.com/usermanual-dli/dli_01_0419.html)。
本节操作介绍创建自定义委托，完成服务授权，并在作业配置中添加新建的委托信息的操作步骤。
#### DLI自定义委托场景
表1DLI自定义委托场景 
| 场景                           | 委托名称                  | 适用场景                                                                                                          | 权限策略                                                                                                                              |
|:---|:---|:---|:---|
| 允许DLI按表生命周期清理数据              | dli_data_clean_agency | 数据清理委托，表生命周期清理数据、Lakehouse表数据清理使用。 该委托需新建后自定义权限，但委托名称固定为dli_data_clean_agency。 | [数据清理委托权限配置](https://support.huaweicloud.com/usermanual-dli/dli_01_0617.html#dli_01_0617__section1320218173917)                   |
| 允许DLI读写OBS将日志转储              | 自定义                   | DLI Flink作业下载OBS对象、OBS/DWS数据源（外表）、日志转储、使用savepoint、开启checkpoint，DLI Spark作业下载OBS对象、读写OBS外表。                   | [访问和使用OBS的权限策略](https://support.huaweicloud.com/usermanual-dli/dli_01_0617.html#dli_01_0617__section02775191915)                  |
| 允许DLI在访问DEW获取数据访问凭证          | 自定义                   | DLI 作业使用DEW-CSMS凭证管理能力。                                                                                       | [使用DEW加密功能的权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0617.html#dli_01_0617__section1943510461382)                 |
| 允许访问DLI Catalog元数据           | 自定义                   | DLI 访问DLI元数据。                                                                                                 | [访问DLI Catalog元数据的权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0617.html#dli_01_0617__section1563832810618)          |
| 允许访问LakeFormation Catalog元数据 | 自定义                   | DLI 访问LakeFormation元数据。                                                                                       | [访问LakeFormation Catalog元数据的权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0617.html#dli_01_0617__section149103715508) |
   
#### 操作流程
图1自定义委托操作流程   
![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000001842062193.png "点击放大")
#### 约束与限制
- 自定义委托名称不可与系统默认委托重复，即不可以是dli_admin_agency、dli_management_agency、dli_data_clean_agency。
- 允许DLI按表生命周期清理数据的委托名称必须为dli_data_clean_agency。
- 仅Flink 1.15和Spark 3.3.1（Spark通用队列场景）及以上版本的引擎执行作业支持配置自定义委托。
- 更新委托权限后，系统将升级您的dli_admin_agency为dli_management_agency，新的委托包含跨源操作、消息通知、用户授权操作所需的权限。除此之外的其他委托权限需求都需要用户自定义委托。了解dli_management_agency请参考[DLI委托概述](https://support.huaweicloud.com/usermanual-dli/dli_01_0419.html)。
- 常见新建委托场景：允许DLI读写OBS数据、日志转储、Flink checkopoint；允许DLI在访问DEW获取数据访问凭证、允许访问Catalog获取元数据等场景。以上场景的委托权限请参考[常见场景的委托权限策略](https://support.huaweicloud.com/usermanual-dli/dli_01_0617.html)。
- 使用新委托前请确保使用IAM提供的"身份策略授权"授予IAM用户"iam:agencies:pass"策略，否则IAM用户无法使用新委托提交作业。
 
 #### 步骤1：在IAM控制台创建云服务委托并授权
1. 登录管理控制台。
2. 单击右上方登录的用户名，在下拉列表中选择"统一身份认证"。
3. 在左侧导航栏中，单击"委托"。
4. 在"委托"页面，单击"创建委托"。
5. 在"创建委托"页面，设置如下参数：
   - 委托名称：按需填写，例如"dli_obs_agency_access"。
   
   - 委托类型：选择"云服务"。
   
   - 云服务：（"委托类型"选择"云服务"时出现此参数项。）在下拉列表中选择"DLI"。
   
   - 持续时间：选择"永久"。
   
   - 描述：非必选，可以填写"拥有OBS OperateAccess权限的委托"。
     图2创建委托   
     ![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000001843343597.png "点击放大") 
    
6. 配置完委托的基本信息后，单击"下一步"。
7. 授予当前委托所需的权限策略，单击"新建策略"。
8. 配置策略信息。
   1. 输入策略名称，本例：dli-obs-agency。
   
   2. 选择"JSON视图"。
   
   3. 在策略内容中粘贴自定义策略。 本例权限包含访问和使用OBS的权限，适用于以下场景：DLI Flink作业下载OBS对象、OBS/DWS数据源（外表）、日志转储、使用savepoint、开启Checkpoint。DLI Spark作业下载OBS对象、读写OBS外表。
      更多Flink作业常见委托权限配置请参考[常见场景的委托权限策略](https://support.huaweicloud.com/usermanual-dli/dli_01_0617.html)。
      ```
      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "obs:bucket:GetBucketPolicy",
                      "obs:bucket:GetLifecycleConfiguration",
                      "obs:bucket:GetBucketLocation",
                      "obs:bucket:ListBucketMultipartUploads",
                      "obs:bucket:GetBucketLogging",
                      "obs:object:GetObjectVersion",
                      "obs:bucket:GetBucketStorage",
                      "obs:bucket:GetBucketVersioning",
                      "obs:object:GetObject",
                      "obs:object:GetObjectVersionAcl",
                      "obs:object:DeleteObject",
                      "obs:object:ListMultipartUploadParts",
                      "obs:bucket:HeadBucket",
                      "obs:bucket:GetBucketAcl",
                      "obs:bucket:GetBucketStoragePolicy",
                      "obs:object:AbortMultipartUpload",
                      "obs:object:DeleteObjectVersion",
                      "obs:object:GetObjectAcl",
                      "obs:bucket:ListBucketVersions",
                      "obs:bucket:ListBucket",
                      "obs:object:PutObject"
                  ],
                  "Resource": [
                      "OBS:*:*:bucket:bucketName",//请替换bucketName为对应的桶名称
                      "OBS:*:*:object:*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "obs:bucket:ListAllMyBuckets"
                  ]
              }
          ]
      }
      ```
      
   
   4. 按需输入策略描述。
    
9. 新建策略完成后，单击"下一步"，返回委托授权页面。
10. 选择步骤[8]新建的自定义策略。
    图3选择自定义策略   
    ![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000001794439950.png "点击放大") 
11. 单击"下一步"，选择委托的授权范围。 了解更多授权操作说明请参考[创建用户组并授权](https://support.huaweicloud.com/usermanual-iam/iam_03_0001.html)。
    - 所有资源：授权后，IAM用户可以根据权限使用账号中所有资源，包括企业项目、区域项目和全局服务资源。
    
    - 全局服务资源：全局服务部署时不区分区域，访问全局级服务，不需要切换区域，全局服务不支持基于区域项目授权。如对象存储服务（OBS）、内容分发网络（CDN）等。授权后，用户根据权限使用全局服务的资源。
    
    - 指定区域项目资源：授权后，IAM用户根据权限使用所选区域项目中的资源，未选择的区域项目中的资源，该IAM用户将无权访问。
    
    - 指定企业项目资源：授权后，IAM用户根据权限使用所选企业项目中的资源。如企业项目A包含资源B，资源B部署在北京四和上海二，IAM用户所在用户组关联企业项目A后，北京四和上海二的资源B用户都可访问，不在企业项目A内的其他资源，该IAM用户将无权访问。
    
    
    本例自定义策略中是OBS权限，因此选择全局服务资源。如果使用的是DLI权限，推荐选择"指定区域项目资源"。
    
12. 单击"确定"，完成授权。 授权后需等待15-30分钟才可生效。
    
 
#### 步骤2：在作业中设置委托权限
使用Spark 3.3.1和Flink 1.15及以上版本的引擎执行作业时，需要在作业配置中添加新建的委托信息。
否则Spark3.3.1作业不指定委托时，无法使用OBS；Flink1.15作业不指定委托时，无法开启checkpoint、savepoint，作业提交日志无法转储，无法使用OBS、DWS等数据源。
![](https://support.huaweicloud.com/usermanual-dli/public_sys-resources/caution_3.0-zh-cn.png)
- 仅有运行在弹性资源池队列上的Flink 1.15和Spark3.3.1作业支持指定委托。
- 作业指定委托后，授予委托的权限要谨慎修改，委托权限变动可能会影响作业的正常运行。
 
- **Flink Jar作业指定委托**
  1. 登录DLI管理控制台，选择"作业管理 \> Flink作业"。
  
  2. 选择待编辑的Flink Jar作业，单击操作列的"编辑"。
  
  3. 在作业配置区域配置委托信息：
     - Flink版本：选择1.15。
     
     - 委托：选择[步骤1：在IAM控制台创建云服务委托并授权]中新建的委托。
       本例配置为：dli_obs_agency_access
       
     
     
     图4Flink Jar作业指定委托   
     ![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002192158600.png "点击放大") 
   
- **Flink OpenSource SQL作业指定委托**
  1. 登录DLI管理控制台，选择"作业管理 \> Flink作业"。
  
  2. 选择待编辑的Flink OpenSource SQL作业，单击操作列的"编辑"。
  
  3. 在作业配置区域配置委托信息：
     - 在"运行参数"页签，确保所选的Flink版本为1.15。
     
     - 委托：选择[步骤1：在IAM控制台创建云服务委托并授权]中新建的委托。
       本例配置为：dli_obs_agency_access
       
     
     
     图5Flink OpenSource SQL作业指定委托   
     ![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002227646641.png "点击放大") 
   
- **Spark作业指定委托**
  1. 登录DLI管理控制台，选择"作业管理 \> Spark作业"。
  
  2. 选择待编辑的Spark作业，单击操作列的"编辑"。
  
  3. 在作业配置区域配置委托信息：
     - Spark版本：确保所选的Spark版本为3.3.1。
     
     - 委托：选择[步骤1：在IAM控制台创建云服务委托并授权]中新建的委托。
       本例配置为：dli_obs_agency_access
       
     
     
     图6Spark作业指定委托   
     ![](https://support.huaweicloud.com/usermanual-dli/zh-cn_image_0000002227650069.png "点击放大") 
   
 
