更新时间:2024-10-18 GMT+08:00

配置调度身份

数据开发模块的作业执行中会遇到如下问题:

  • 数据开发模块的作业执行机制是以启动作业的用户身份执行该作业。对于按照周期调度方式执行的作业,当启动该作业的IAM账号在调度周期内被停用或删除后,系统无法获取用户身份认证信息,导致作业执行失败。
  • 如果作业被低权限的用户启动,也会因为权限不足导致作业执行失败。

若需解决以上两个问题,则可配置作业调度身份。配置作业调度身份后,作业执行过程中,以配置的调度身份与其他服务交互,可以避免上述两种场景下作业执行失败。

在作业进行周期调度时,该作业的默认用户被删除后,如果使用其他用户对该作业进行版本提交并执行调度,那该作业的执行用户就默认为提交版本的用户。

调度身份的分类

调度身份分为委托和IAM账户两大类。

  • 委托:由于云各服务之间存在业务交互关系,一些云服务需要与其他云服务协同工作,需要您创建云服务委托,将操作权限委托给这些服务,让这些服务以您的身份使用其他云服务,代替您进行一些资源运维工作。
    委托可以分为:
    • 公共委托:工作空间级别的全局委托。适用于该空间内的所有作业。配置公共委托请参考配置公共委托
    • 作业委托:适用于单个作业级别。配置作业委托请参考配置作业委托
  • IAM账号:通过用户组统一配置,权限管理相对于委托来说,流程简便;并且使用IAM账号的兼容性更好,可支持MRS相关的节点(MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce),通过直连方式的(MRS Spark SQL、MRS Hive SQL)节点,以及目标端为DWS的ETL Job节点,解决部分MRS集群和部分ETL Job节点不支持委托方式提交作业的问题。
    IAM账户可分为:
    • 公共IAM账户:工作空间级别的全局IAM账户。适用于该空间内的所有作业。配置公共IAM账户请参考配置公共IAM账号
    • 执行用户:作业级别的IAM账户,适用于单个作业级别。配置执行用户请参考配置执行用户

      配置执行用户调度功能当前需申请白名单后才能使用。如需使用该特性,请联系客服或技术支持人员

调度身份的优先级

系统按照作业委托>公共委托>执行用户>公共IAM账号的优先级顺序来获取权限,然后以该权限来执行作业。

作业执行机制默认以启动作业的用户身份执行该作业。如果作业被低权限的用户启动,也会因为权限不足导致作业执行失败,您可通过配置调度身份来解决该问题。

约束限制

  • 创建或修改委托需要用户具有Security Administrator权限。
  • 配置工作空间级的调度身份,需要用户具有DAYU Administrator或者Tenant Administrator权限。
  • 配置作业级委托,需要用户具有查看列表委托的权限。

配置公共委托

公共委托是工作空间级别的,会委托影响该空间下所有的作业,请慎重配置。 特别是部分作业中包含 MRS相关的节点。

  1. 参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。
  2. DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。
  3. 在数据开发主界面的左侧导航栏,选择配置管理 > 配置
  4. 单击“调度身份配置”,公共调度身份选择“公共委托”。
  5. 单击右边的“+”在委托列表中选择合适的委托,也可重新创建委托。创建委托和配置权限,请参见参考:创建委托参考:配置委托权限
    图1 配置工作空间级委托
  6. 单击“确定”,回到调度身份配置页面,再单击,完成公共委托配置。

    公共委托配置后的生效条件:批处理作业下一周期生效,实时作业需要手动重启一下生效。

配置作业委托

支持新建作业时,配置作业级委托。也支持修改已有作业的委托。

新建作业时配置委托

  1. DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。
  2. 在数据开发主界面的左侧导航栏,选择数据开发 > 作业开发
  3. 在作业目录处,单击右键,选择“新建作业”。系统弹出新建作业对话框,若已配置过工作空间级委托,则该作业默认使用工作空间级委托。您也可从委托列表中,选择其他已创建的委托。创建委托和配置权限,请参见参考:创建委托参考:配置委托权限
    图2 配置作业委托

    修改已有作业的委托

  1. 在数据开发主界面的左侧导航栏,选择数据开发 > 作业开发
  2. 在作业目录处,双击选中已有作业。在节点编排页面右侧,选择“作业基本信息”。系统弹出作业信息基本配置对话框,若已配置过工作空间级委托,则该作业默认使用工作空间级委托。您也可从委托列表中,选择其他已创建的委托。

配置公共IAM账号

  1. DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。
  2. 在数据开发主界面的左侧导航栏,选择配置管理 > 配置
  3. 单击“调度身份配置”,公共调度身份选择“公共IAM账号”。
  4. 在右边的文本框中输入已创建好的公共IAM账号。
  5. 单击,完成公共IAM账号的设置。

配置执行用户

配置作业的执行用户

  1. 在作业目录处,双击选中已有作业。
  2. 单击画布右侧“作业基本信息”页签,展开配置页面,可设置作业的执行用户。

参考:创建委托

  1. 登录IAM服务控制台。
  2. 选择“委托”,单击“创建委托”。
  3. 设置“委托名称”。例如:DGC_agency。
  4. 在创建委托页面,委托类型选择“云服务”,云服务选择“数据湖治理中心DGC”,将操作权限委托给DataArts Studio,让DataArts Studio以您的身份使用其他云服务,代替您进行一些资源运维工作。
    图3 创建委托

  5. 单击“下一步”,进入授权页面。
  6. 在授权页面中搜索“Tenant Administrator”策略,勾选“Tenant Administrator”策略并单击“下一步”。
    • 因Tenant Administrator策略具有除统一身份认证服务IAM外,其他所有服务的所有执行权限。所以给委托服务DataArts Studio配置Tenant Administrator,可访问周边所有服务。
    • 若您想达到对权限较小化的安全管控要求,Tenant Administrator可不配置,仅配置OBS OperateAccess权限(因作业执行过程中,需要往OBS写执行日志信息,因此需要添加 OBS OperateAccess权限)。然后再根据作业中的节点类型,配置不同的委托权限。例如某作业仅包含Import GES节点,可配置GES Administrator权限和OBS OperateAccess权限即可。详细方案请参考参考:配置委托权限
      图4 配置权限

  7. 单击“确定”完成委托创建。

参考:配置委托权限

将账号的操作权限委托给DataArts Studio服务后,需要配置委托身份的权限,才可与其他服务进行交互。

为实现对权限较小化的安全管控要求,可根据作业中的节点类型,以服务为粒度,参见表1配置相应的服务Admin权限。

也可精确到具体服务的操作、资源以及请求条件等。根据作业中的节点类型,以对应服务API接口为粒度进行权限拆分,满足企业对权限最小化的安全管控要求。参见表2进行配置。例如包含Import GES节点的作业,您只需要创建自定义策略,并勾选ges:graph:getDetail(查看图详情),ges:jobs:getDetail(查询任务状态),ges:graph:access(使用图)这三个授权项即可。

  • 当满足如下条件之一时,MRS集群才支持委托方式提交作业。
    • 非安全集群。
    • 安全集群,集群版本大于 2.1.0,并且安装了MRS 2.1.0.1及以上版本的补丁。
  • 当MRS集群不支持委托方式提交作业时,如下节点相关作业不能配置委托。

    MRS相关的节点(MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce),以及通过API方式连接的(MRS Spark SQL、MRS Hive SQL)节点。

  • 配置服务级Admin权限

    因作业执行过程中,需要往OBS写执行日志信息,因此粗粒度授权时,所有作业都需要添加OBS OperateAccess权限。

表1 配置相关节点的admin权限

节点名称

系统权限

权限描述

CDM Job、DIS Stream、DIS Dump、DIS Client

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

MRS Fullaccess

KMS Administrator

MRS Administrator:RBAC策略下MapReduce服务的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。

MRS Fullaccess:细粒度策略下MRS管理员权限,拥有该权限的用户可以拥有MRS所有权限。

KMS Administrator:数据加密服务加密密钥的管理员权限。

MRS Spark SQL、MRS Hive SQL、MRS Kafka、Kafka Client(通过代理方式连接集群)

DAYU Administrator

KMS Administrator

Administrator:数据治理中心服务的所有执行权限。

KMS Administrator:数据加密服务加密密钥的管理员权限。

DLI Flink Job、DLI SQL、DLI Spark

DLI Service Admin

数据湖探索的所有执行权限。

DWS SQL、Shell、RDS SQL(通过代理方式连接数据源)

DAYU Administrator

KMS Administrator

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、DIS Stream、DIS Dump、DIS Client节点隶属于DataArts Studio模块,DataArts Studio不支持细粒度授权。因此包含这几类节点的作业,给服务配置权限仅支持DataArts Studio Administarator。
  • CSS不支持细粒度授权,且需要通过代理执行。因此包含这类节点的作业,需要配置DataArts Studio Administarator和Elasticsearch Administrator权限。
  • SMN不支持细粒度授权,因此包含这类节点的作业,需要配置SMN Administarator权限。
表2 自定义策略

节点名称

授权项

Import GES

  • ges:graph:access
  • ges:graph:getDetail
  • 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