分布式任务调度自定义权限策略参考

更新时间:

如果系统权限策略不能满足您的要求,您可以创建自定义权限策略实现最小授权。使用自定义权限策略有助于实现权限的精细化管控,是提升资源访问安全的有效手段。本文介绍分布式任务调度使用自定义权限策略示例。

什么是自定义权限策略

在基于RAM的访问控制体系中,自定义权限策略是指在系统权限策略之外,您可以自主创建、更新和删除的权限策略。自定义权限策略的版本更新需要由您来维护。

  • 创建自定义权限策略后,需为RAM用户、用户组或RAM角色绑定权限策略,这些RAM身份才能获得权限策略中指定的访问权限。

  • 已创建的权限策略支持删除,但删除前需确保该策略未被引用。如果该权限策略已被引用,您需要在该权限策略的引用记录中移除授权。

  • 自定义权限策略支持版本控制,您可以按照RAM规定的版本管理机制来管理您创建的自定义权限策略版本。

操作文档

SchedulerX权限说明

主账号默认拥有该账号下所有资源的操作管理权限。在后续权限控制中,建议采用RAM访问控制进行权限策略分配。SchedulerX基于RAM用户与用户组,便于批量设置权限策略,因此在原SchedulerX对应用的管理下,无需逐个对单独的用户进行独立授权。SchedulerX的权限策略支持共享系统权限策略配置。

系统策略

说明

AdministratorAccess

管理所有阿里云资源,包含对SchedulerX下所有操作及资源的访问操作权限。

下面将对SchedulerX如何自定义权限策略配置细节进行说明,在RAM中定义权限策略主要包括:操作Action和资源Resource,您可根据SchedulerX定义的规则自行创建权限策略。

自定义策略主体结构

{
  "Statement": [
    { 
      "Action": "edas:*", // 操作Action配置项,配置说明参考下一节《操作Action》
      "Effect": "Allow",
      "Resource": "*"     // 操作对象Resource配置项,配置说明参考下一节《资源Resource》
    }
  ],
  "Version": "1",
}

操作Action

SchedulerX的操作Action定义结构如下:

edas:${type}Schedulerx*

${type}分为4个类型:Read、Manage、Delete、Create。包含相关操作如下所示:

类型

相关操作

Create

创建命名空间、创建应用、创建任务、创建工作流。

Manage

  • 修改命名空间。

  • 导入任务、导出任务、修改任务、启用任务、禁用任务、手动运行任务、重跑任务、指定机器。

  • 停止任务实例、重跑任务实例、任务实例置为成功、流程实例置为成功、重跑子任务。

  • 修改流程、流程导入任务、手动运行流程、重跑流程、启用流程、禁用流程。

  • 修改应用分组。

Delete

删除命名空间、删除应用分组、删除任务、删除流程。

Read

查询应用分组、查询任务、查询任务实例、查询流程、查询在线实例。

资源Resource

SchedulerX的资源Resource定义结构如下:

acs:edas:${regionid}:${accountid}:namespace/${namespace_id}/${resourceType}/${resourceId}

参数

描述

${regionid}

区域,针对某个区域资源访问。默认可配置*

${accountid}

账号,针对某个账户资源访问。默认可配置*

${namespace_id}

命名空间ID,针对某个命名空间。

  • 非EDAS用户获取方式:

    1. 登录分布式任务调度平台

    2. 在左侧导航栏,单击命名空间,将鼠标悬停至目标命名空间ID右侧,单击image.png图标复制ID号替换${namespace_id}参数。

      image.png

  • EDAS用户获取方式:

    1. 登录EDAS控制台

    2. 在左侧导航栏,选择资源管理>微服务空间,在微服务空间页面,将鼠标悬停至目标微服务空间名称/ID/namespace右侧,单击image.png图标复制ID号替换${namespace_id}参数。

      image.png

${resourceType}

资源种类,可选:JobGroup(SchedulerX下的任务应用分组)。

${resourceId}

上述资源类型${resourceType}具体的ID。如果资源类型为JobGroup,该项配置为调度应用管理中的GroupId。

${resourceId}获取方式:

  1. 登录分布式任务调度平台

  2. 在左侧导航栏,单击应用管理,将鼠标悬停至应用ID右侧,单击image.png图标复制ID号替换${resourceId}参数。

    image.png

常见自定义权限策略示例

给RAM用户授权所有资源的管理权限

管理SchedulerX的所有权限策略,允许访问SchedulerX下的所有操作和资源。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "edas:*Schedulerx*"
            ],
            "Resource": [
                "acs:edas:*:*:*"
            ]
        }
    ]
}

给RAM用户授权所有资源的只读权限

设置ScheudlerX下所有资源的只读查询权限,允许查看SchedulerX下的所有资源信息。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "edas:ReadSchedulerx*"
            ],
            "Resource": [
                "acs:edas:*:*:*"
            ]
        }
    ]
}

给RAM用户授权指定命名空间下所有Action的权限

设置指定空间或者部分空间下所有应用任务资源的管理权限,命名空间ID值需要从EDAS微服务空间下自行获取并进行配置。如下表示对两个空间(命名空间ID-01、命名空间ID-02)具备调度相关资源信息的管理权限。您还可以自行调整切换其中的Action配置来限制对上述资源的操作(如:Action定义为"edas:ReadSchedulerx*",则表示为对上述两个空间具备只读查询权限)。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "edas:*Schedulerx*"
            ],
            "Resource": [
                "acs:edas:*:*:namespace/命名空间ID-01/*",
              	"acs:edas:*:*:namespace/命名空间ID-02/*"
            ]
        }
    ]
}

image.png

给RAM用户授权指定应用下所有Action的权限

设置任务调度中部分应用下的资源访问管理权限,Resource指定如下空间对应的JobGroup的应用ID信息即可设置相应应用下的访问权限。您也可以通过前缀加“*”模式(如下:"TestGroup*",表示TestGroup前缀的所有应用)来指定符合相应前缀的应用分组进行快速批量设置。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "edas:*Schedulerx*"
            ],
            "Resource": [
                "acs:edas:*:*:namespace/命名空间ID-01/JobGroup/TestGroup*",
              	"acs:edas:*:*:namespace/命名空间ID-02/JobGroup/AppGroup"
            ]
        }
    ]
}

image.png