数据开发模块的作业执行中会遇到如下问题:
- 数据开发模块的作业执行机制是以启动作业的用户身份执行该作业。对于按照周期调度方式执行的作业,当启动该作业的IAM帐号在调度周期内被删除后,系统无法获取用户身份认证信息,导致作业执行失败。
- 如果作业被低权限的用户启动,也会因为权限不足导致作业执行失败。
若需解决以上两个问题,则可配置委托。配置委托后,作业执行过程中,以委托的身份与其他服务交互,可以避免上述两种场景下作业执行失败。
委托的作用
由于云各服务之间存在业务交互关系,一些云服务需要与其他云服务协同工作,需要您创建云服务委托,将操作权限委托给这些服务,让这些服务以您的身份使用其他云服务,代替您进行一些资源运维工作。
委托的分类
委托分两类,工作空间委托和作业委托。
- 工作空间委托:工作空间级别的,全局委托。适用于该空间内的所有作业。
- 作业委托:适用于单个作业级别。
作业委托优先级高于工作空间委托,如果工作空间与作业级别的委托都没有配置,作业会以启动者的身份去执行。
约束限制
- 创建或修改委托需要用户具有Security Administrator权限。
- 配置工作空间级委托,需要用户具有DAYU Administrator或者Tenant Administrator权限。
- 配置作业级委托,需要用户具有查看列表委托的权限。
创建委托
- 登录IAM服务控制台。
- 选择“委托 > 创建委托”。
- 设置“委托名称”。例如:DataArts Studio_agency。
- “委托类型”选择“云服务”,在“云服务”中选择数据治理中心DataArts Studio,将操作权限委托给DataArts Studio,让DataArts Studio以您的身份使用其他云服务,代替您进行一些资源运维工作。
- “持续时间”选择“永久”。
- 在“权限选择”区域中,单击“配置权限”。
- 在弹出页面中搜索“Tenant Administrator”策略,勾选“Tenant Administrator”策略并单击“确定”,如下图所示。
− 因Tenant Administrator策略具有除统一身份认证服务IAM外,其他所有服务的所有执行权限。所以给委托服务DataArts Studio配置Tenant Administrator,可访问周边所有服务。
− 若您想达到对权限较小化的安全管控要求,Tenant Administrator可不配置,仅配置OBS OperateAccess权限(因作业执行过程中,需要往obs写执行日志信息,因此需要添加 OBS OperateAccess权限。)。然后再根据作业中的节点类型,配置不同的委托权限。例如某作业仅包含Import GES节点,可配置GES Administrator权限和OBS OperateAccess权限即可。详细方案请参考配置权限。
- 单击“确定”完成委托创建。
配置权限
将帐号的操作权限委托给DataArts Studio服务后,需要配置委托身份的权限,才可与其他服务进行交互。
为实现对权限较小化的安全管控要求,可根据作业中的节点类型,以服务为粒度,参见下表配置相应的服务Admin权限。
也可精确到具体服务的操作、资源以及请求条件等。根据作业中的节点类型,以对应服务API接口为粒度进行权限拆分,满足企业对权限最小化的安全管控要求。参见下表进行配置。例如包含Import GES节点的作业,您只需要创建自定义策略,并勾选ges:graph:getDetail(查看图详情),ges:jobs:getDetail(查询任务状态),ges:graph:access(使用图)这三个授权项即可。
须知
- MRS相关的节点(MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce),以及通过直连方式的(MRS Spark SQL、MRS Hive SQL)节点,由于部分MRS集群不支持委托方式提交作业,所以这类作业不能配置委托。
- 支持委托方式提交作业的MRS集群如下:
- 非安全集群
- 安全集群,集群版本大于2.1.0,并且安装了MRS 2.1.0.1及以上版本的补丁。
- 配置服务级Admin权限
因作业执行过程中,需要往obs写执行日志信息,因此粗粒度授权时,所有作业都需要添加 OBS OperateAccess权限。
配置相关节点的admin权限
节点名称 | 系统权限 | 权限描述 |
---|---|---|
CDM Job | DAYU Administrator | 数据治理中心服务的所有执行权限。 |
Import GES | GES Administrator | 图引擎服务的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。 |
MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce MRS Spark SQL、MRS Hive SQL(通过MRS API方式连接MRS集群的) |
MRS Administrator KMS Administrator |
MRS Administrator:MapReduce服务的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。 KMS Administrator:数据加密服务加密密钥的管理员权限。 |
MRS Spark SQL、MRS Hive SQL、MRS Kafka、Kafka Client(通过代理方式连接集群) | DAYU Administrator KMS Administrator |
DAYU Administrator:数据治理中心服务的所有执行权限。 KMS Administrator:数据加密服务加密密钥的管理员权限。 |
DLI Flink Job、DLI SQL、DLI Spark | DLI Service Admin | 数据湖探索的所有执行权限。 |
DWS SQL、Shell、RDS SQL(通过代理方式连接数据源) | DAYU Administrator KMS Administrator |
DAYU Administrator:数据治理中心服务的所有执行权限。 KMS Administrator:数据加密服务加密密钥的管理员权限。 |
CSS | DAYU Administrator Elasticsearch Administrator |
DAYU Administrator:数据治理中心服务的所有执行权限。 Elasticsearch Administrator:云搜索服务的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。 |
Create OBS、Delete OBS、OBS Manager | OBS OperateAccess | 查看桶、上传对象、获取对象、删除对象、获取对象ACL等对象基本操作权限 |
SMN | SMN Administrator | 消息通知服务的所有执行权限。 |
- 配置细粒度权限(根据各服务支持的授权项,创建自定义策略。)
创建自定义策略的详细操作请参见统一身份认证用户指南中的有关“创建自定义策略”的章节。
说明
作业执行过程中,需要向OBS中写入执行日志。当采取精细化授权方式时,任何类型的作业均需要添加OBS的如下授权项:
obs:bucket:GetBucketLocation
obs:object:GetObject
obs:bucket:CreateBucket
obs:object:PutObject
obs:bucket:ListAllMyBuckets
obs:bucket:ListBucket
CDM Job节点隶属于DataArts Studio模块,DataArts Studio不支持细粒度授权。因此包含这几类节点的作业,给服务配置权限仅支持DataArts Studio Administarator。
CSS不支持细粒度授权,且需要通过代理执行。因此包含这类节点的作业,需要配置DataArts Studio Administarator和Elasticsearch Administrator权限。
SMN不支持细粒度授权,因此包含这类节点的作业,需要配置SMN Administarator权限。
自定义策略
节点名称 | 授权项 |
---|---|
Import GES | ges:graph:access ges:graph:getDetai ges:jobs:getDetail |
MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce MRS Spark SQL、MRS Hive SQL(通过MRS API方式连接MRS集群的) |
mrs:job:delete mrs:job:stop mrs:job:submit mrs:cluster:get mrs:cluster:list mrs:job:get mrs:job:list kms:dek:crypto kms:cmk:get |
MRS Spark SQL、MRS Hive SQL、MRS Kafka、Kafka Client(通过代理方式连接集群) | kms:dek:crypto kms:cmk:get DataArts Studio Administarator(角色) |
DLI Flink Job、DLI SQL、DLI Spark | dli:jobs:get dli:jobs:update dli:jobs:create dli:queue:submit_job dli:jobs:list dli:jobs:list_all |
DWS SQL、Shell、RDS SQL(通过代理方式连接数据源) | kms:dek:crypto kms:cmk:get DataArts Studio Administarator(角色) |
Create OBS、Delete OBS、OBS Manager | obs:bucket:GetBucketLocation obs:bucket:ListBucketVersions obs:object:GetObject obs:bucket:CreateBucket obs:bucket:DeleteBucket obs:object:DeleteObject obs:object:PutObject obs:bucket:ListAllMyBuckets obs:bucket:ListBucket |
配置工作空间级委托
注意
工作空间级别的委托影响所有的作业,请慎重配置。特别是部分作业中包含MRS相关的节点。
- 登录DataArts Studio控制台。选择实例,点击“进入控制台”,选择对应工作空间的“数据开发”模块,进入数据开发页面。
详见下图:选择数据开发
- 在数据开发主界面的左侧导航栏,选择“配置管理 > 配置”。
- 单击“委托配置”,在工作空间委托配置页面配置委托。
- 在委托列表中选择合适的委托,也可重新创建委托。创建委托和配置权限,请参见上述“创建委托”。
详见下图:配置工作空间级委托
- 单击“确定”,回到工作空间委托配置页面,再单击,创建工作空间级委托成功。
配置作业级委托
说明
支持新建作业时,配置作业级委托。也支持修改已有作业的委托。
新建作业时配置委托
- 登录DataArts Studio控制台。选择实例,点击“进入控制台”,选择对应工作空间的“数据开发”模块,进入数据开发页面。
详见下图:选择数据开发
- 在数据开发主界面的左侧导航栏,选择“数据开发 > 作业开发”。
- 在作业目录处,单击右键,选择“新建作业”。系统弹出新建作业对话框,若已配置过工作空间级委托,则该作业默认使用工作空间级委托。您也可从委托列表中,选择其他已创建的委托。
详见下图:配置作业委托
修改已有作业的委托
- 在数据开发主界面的左侧导航栏,选择“数据开发 > 作业开发”。
- 在作业目录处,双击选中已有作业。在节点编排页面右侧,选择“作业基本信息”。系统弹出作业信息基本配置对话框,若已配置过工作空间级委托,则该作业默认使用工作空间级委托。您也可从委托列表中,选择其他已创建的委托。