创建DLI自定义委托权限
使用Flink 1.15和Spark 3.3及以上版本的引擎执行作业时,当您所需的委托没有包含在DLI系统委托dli_management_agency时,您需要在IAM页面创建相关委托,并在作业配置中添加新建的委托信息。dli_management_agency包含跨源操作、消息通知、用户授权操作所需的权限,除此之外的其他委托权限需求,都需自定义DLI委托。了解dli_management_agency请参考DLI委托概述。
本节操作介绍自定义委托,并完成服务授权,以及在作业配置中添加新建的委托信息的操作步骤。
DLI自定义委托场景
场景 |
委托名称 |
适用场景 |
权限策略 |
---|---|---|---|
允许DLI按表生命周期清理数据 |
dli_data_clean_agency |
数据清理委托,表生命周期清理数据、Lakehouse表数据清理使用。 该委托需新建后自定义权限,但委托名称固定为dli_data_clean_agency。 |
|
允许DLI读写OBS将日志转储 |
自定义 |
DLI Flink作业下载OBS对象、OBS/DWS数据源(外表)、日志转储、使用savepoint、开启checkpoint,DLI Spark作业下载OBS对象、读写OBS外表。 |
|
允许DLI在访问DEW获取数据访问凭证 |
自定义 |
DLI 作业使用DEW-CSMS凭证管理能力。 |
|
允许访问DLI Catalog元数据 |
自定义 |
DLI 访问DLI元数据。 |
|
允许访问LakeFormation Catalog元数据 |
自定义 |
DLI 访问LakeFormation元数据。 |
操作流程
约束与限制
- 自定义委托名称不可与系统默认委托重复,即不可以是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委托概述。
- 常见新建委托场景:允许DLI读写OBS数据、日志转储、Flink checkopoint;允许DLI在访问DEW获取数据访问凭证、允许访问Catalog获取元数据等场景。以上场景的委托权限请参考常见场景的委托权限策略。
步骤1:在IAM控制台创建云服务委托并授权
- 登录管理控制台。
- 单击右上方登录的用户名,在下拉列表中选择“统一身份认证”。
- 在左侧导航栏中,单击“委托”。
- 在“委托”页面,单击“创建委托”。
- 在“创建委托”页面,设置如下参数:
- 委托名称:按需填写,例如“dli_obs_agency_access”。
- 委托类型:选择“云服务”。
- 云服务:(“委托类型”选择“云服务”时出现此参数项。)在下拉列表中选择“DLI"。
- 持续时间:选择“永久”。
- 描述:非必选,可以填写“拥有OBS OperateAccess权限的委托”。
图2 创建委托
- 配置完委托的基本信息后,单击“下一步”。
- 授予当前委托所需的权限策略,单击“新建策略”。
- 配置策略信息。
- 输入策略名称,本例:dli-obs-agency。
- 选择“JSON视图”。
- 在策略内容中粘贴自定义策略。
本例权限包含访问和使用OBS的权限,适用于以下场景:DLI Flink作业下载OBS对象、OBS/DWS数据源(外表)、日志转储、使用savepoint、开启Checkpoint。DLI Spark作业下载OBS对象、读写OBS外表。
更多Flink作业常见委托权限配置请参考常见场景的委托权限策略。{ "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" ] } ] }
- 按需输入策略描述。
- 新建策略完成后,单击“下一步”,返回委托授权页面。
- 选择步骤8新建的自定义策略。
图3 选择自定义策略
- 单击“下一步”,选择委托的授权范围。
了解更多授权操作说明请参考创建用户组并授权。
- 所有资源:授权后,IAM用户可以根据权限使用账号中所有资源,包括企业项目、区域项目和全局服务资源。
- 全局服务资源:全局服务部署时不区分区域,访问全局级服务,不需要切换区域,全局服务不支持基于区域项目授权。如对象存储服务(OBS)、内容分发网络(CDN)等。授权后,用户根据权限使用全局服务的资源。
- 指定区域项目资源:授权后,IAM用户根据权限使用所选区域项目中的资源,未选择的区域项目中的资源,该IAM用户将无权访问。
- 指定企业项目资源:授权后,IAM用户根据权限使用所选企业项目中的资源。如企业项目A包含资源B,资源B部署在北京四和上海二,IAM用户所在用户组关联企业项目A后,北京四和上海二的资源B用户都可访问,不在企业项目A内的其他资源,该IAM用户将无权访问。
本例自定义策略中是OBS权限,因此选择全局服务资源。如果使用的是DLI权限,推荐选择“指定区域项目资源”。
- 单击“确定”,完成授权。
步骤2:在作业中设置委托权限
使用Flink 1.15和Spark 3.3及以上版本的引擎执行作业时,需要在作业配置中添加新建的委托信息。
否则Spark3.3.1作业不指定委托时,无法使用OBS;Flink1.15作业不指定委托时,无法开启checkpoint、savepoint,作业提交日志无法转储,无法使用OBS、DWS等数据源。
- 仅有运行在弹性资源池队列上的Flink 1.15和Spark3.3.1作业支持指定委托。
- 作业指定委托后,授予委托的权限要谨慎修改,委托权限变动可能会影响作业的正常运行。
- Flink Jar作业指定委托
- Flink OpenSource SQL作业指定委托
- Spark作业指定委托