任务调度XXL-JOB权限策略参考

更新时间:
复制 MD 格式

本文介绍任务调度XXL-JOB支持的所有系统权限策略及其相应的权限描述,以供您授权 RAM 身份时参考。同时,还提供了自定义权限策略的创建方法及示例,以实现精细化授权。

注意事项

如果您使用的是子账号,在配置XXL-JOB任务调度权限时,无论是系统权限还是自定义权限策略,都需要配置云监控只读策略

什么是系统权限策略

权限策略是用语法结构描述的一组权限的集合,可以精确地描述被授权的资源集、操作集以及授权条件。阿里云访问控制(RAM)产品提供了两种类型的权限策略:系统策略和自定义策略。系统策略统一由阿里云创建,策略的版本更新由阿里云维护,用户只能使用不能修改。自定义策略由用户管理,策略的版本更新由用户维护。用户可以自主创建、更新和删除自定义策略。在产品迭代过程中,分布式任务调度会向系统策略中添加新的权限,用来支持新的功能和能力。系统策略的更新将会影响所有授予了该策略的 RAM 身份,包括 RAM 用户、RAM 用户组和 RAM 角色。有关 RAM 权限策略的更多信息,请参阅权限策略概览

说明

产品系统策略旨在帮助用户快速入门,仅需简单配置即可通过控制台访问该产品及其依赖产品。虽然系统策略包含的权限同样适用于 OpenAPI 或 CLI 等访问方式,但为了提高安全性,我们推荐您在这些场景下使用自定义策略,按需授予人员及应用特定 API 的访问权限。

系统策略可进一步细分为产品系统策略、服务角色策略和服务关联角色策略三类。部分云产品仅提供三类策略中的一类或两类,请以本文实际展示的策略类型为准。

产品系统策略

AliyunMSEFullAccess

您可以将 AliyunMSEFullAccess 策略授权给RAM身份。本策略定义了管理微服务引擎(MSE)的权限,并包括对SchedulerXXXL-JOB的管理权限。

查看策略详情

AliyunMSEReadOnlyAccess

您可以将 AliyunMSEReadOnlyAccess 策略授权给RAM身份。本策略定义了只读访问微服务引擎(MSE)的权限,并包括对SchedulerXXXL-JOB的只读访问权限。

查看策略详情

云监控只读策略

XXL-JOB默认集成了云监控,需给RAM子账号授予只读访问云监控的系统策略,否则在基本信息中无法看到调度统计大盘。

  1. 使用RAM管理员登录RAM控制台

  2. 在左侧导航栏权限管理 > 授权页面,单击新增授权,选择授权主体RAM子账号,授权AliyunCloudMonitorReadOnlyAccess云监控只读策略。

授权操作参考

RAM 身份默认没有任何权限,需要由阿里云账号管理员为其授权后才能访问阿里云账号下的资源。为保证资源的数据安全,建议您遵循最小授权原则为允许访问云资源的身份授予恰好够用的权限。授权的详细操作请参见:

什么是自定义权限策略

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

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

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

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

操作文档

权限说明

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

自定义策略主体结构

{
  "Statement": [
    { 
      "Action": "schedulerx3:*",
      "Effect": "Allow",
      "Resource": "*"
    }
  ],
  "Version": "1",
}

操作Action

XXL-JOB的操作Action定义结构如下:

schedulerx3:*

以下接口仅支持授权到账号级别,无法支持按实例权限筛选展示,所有账号必须要授权该权限。

Action

权限说明

是否为只读类型

ListClusters

查看集群列表

ListClusterVersions

查看引擎版本列表

分为5个类型:查询、创建、更新、删除、运维操作。以下接口支持到实例级别,支持Action级别RAM权限。

类型

Action

权限说明

是否为只读

查询

ListAppNames

查询AppName列表

ListApps

查询应用列表

ListCalendar

查询日历列表

ListCalendarNames

查询自定义日历名字列表

ListExecutors

查询执行器列表

ListJobs

查询任务列表

ListJobExecutions

查询任务执行列表

ListScheduleTimes

查询未来5次调度时间

ListAlarmEvent

查询报警事件列表

ListScheduleEvent

查询调度事件列表

ListJobScriptHistory

查询脚本任务历史版本

ListK8sResource

查询k8s资源

ListWorkflowExecutions

查询工作流执行列表

ListWorkflowVersions

查询工作流DAG版本

GetCluster

查询实例基本信息

创建

CreateCluster

创建集群

CreateApp

创建应用

CreateJob

创建任务

更新

UpdateCluster

更新集群

UpdateCalendar

更新日历

删除

DeleteCluster

删除集群

DeleteCalendar

删除日历

以下接口支持应用级别,通过Condition实现应用权限隔离,参考示例4

类型

Action

权限说明

是否为只读

创建

CreateJob

创建任务

CreateWorkflow

创建工作流

更新

UpdateApp

更新应用

UpdateJob

更新任务

UpdateJobScript

更新脚本任务的脚本

UpdateWorkflow

更新工作流基本信息

UpdateWorkflowDAG

更新工作流的DAG信息

UpdateWorkflowDAGVersion

更新工作流的DAG版本

删除

DeleteApp

删除应用

DeleteJobs

批量删除任务

DeleteWorkflow

删除单个工作流

DeleteWorkflows

批量删除工作流

运维操作

OperateDesignateExecutors

任务指定机器

OperateDisableJobs

批量禁用任务

OperateEnbaleJobs

批量启用任务

OperateExecuteJob

运行一次任务

OperateRerunJob

重刷任务的历史数据

OperateRetryJobExecution

重跑失败的任务执行记录

OperateStopJobExecution

停止正在运行的任务执行记录

OperateBackfillWorkflow

对工作流进行补数据操作

OperateDisableWorkflows

批量禁用工作流

OperateEnableWorkflows

批量启用工作流

OperateExecuteWorkflow

运行一次工作流

OperateHoldJobExecution

挂起还未执行的任务实例

OperateHoldWorkflowExecution

将工作流实例中还未执行的任务实例挂起

OperateMarkSuccessJobExecution

将任务实例标记为成功状态

OperateMarkSuccessWorkflowExecution

将工作流实例标记为成功状态

OperateRetryWorkflowExecution

重跑工作流实例中失败的节点

OperateSkipJobExecution

跳过任务实例

OperateStopWorkflowExecution

停止正在运行的工作流实例

OperateUnholdJobExecution

将挂起状态的任务实例恢复执行

OperateUnholdWorkflowExecution

将挂起状态的工作流实例恢复执行

OperateUnskipJobExecution

将跳过状态的任务实例恢复执行

常见自定义权限策略示例

如果您使用的是子账号,在配置XXL-JOB任务调度权限自定义权限时,需要配置云监控只读策略

示例1:授予RAM用户对实例xxljob-0pp1j8om80a的读写权限。

{
  "Statement": [
    {
      "Action": [
        "schedulerx3:ListClusters",
        "schedulerx3:ListClusterVersions"
      ],
      "Resource": "acs:schedulerx3:*:*:*",
      "Effect": "Allow"
    },
    {
      "Action": "schedulerx3:*",
      "Resource": "acs:schedulerx3:*:*:cluster/xxljob-0pp1j8om80a",
      "Effect": "Allow"
    }
  ],
  "Version": "1"
}

示例2:授予RAM用户对实例xxljob-0pp1j8om80a的只读权限。

{
  "Statement": [
    {
      "Action": [
        "schedulerx3:ListClusters",
        "schedulerx3:ListClusterVersions"
      ],
      "Resource": "acs:schedulerx3:*:*:*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "schedulerx3:List*",
        "schedulerx3:Get*"
      ],
      "Resource": "acs:schedulerx3:*:*:cluster/xxljob-0pp1j8om80a",
      "Effect": "Allow"
    }
  ],
  "Version": "1"
}

示例3:授予RAM用户对所有XXL-JOB实例的只读权限。

{
  "Statement": [
    {
      "Action": [
        "schedulerx3:ListClusters",
        "schedulerx3:ListClusterVersions"
      ],
      "Resource": "acs:schedulerx3:*:*:*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "schedulerx3:List*",
        "schedulerx3:Get*"
      ],
      "Resource": "acs:schedulerx3:*:*:cluster/*",
      "Effect": "Allow"
    }
  ],
  "Version": "1"
}

示例4:授予RAM用户对实例xxljob-7076602169e应用testApp-prodtestApp-gray的权限。

{
  "Statement": [
    {
      "Action": [
        "schedulerx3:ListClusters",
        "schedulerx3:ListClusterVersions"
      ],
      "Resource": "acs:schedulerx3:*:*:*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "schedulerx3:List*",
        "schedulerx3:Get*"
      ],
      "Resource": "acs:schedulerx3:*:*:cluster/xxljob-7076602169e",
      "Effect": "Allow"
    },
    {
      "Action": [
        "schedulerx3:Create*",
        "schedulerx3:Delete*",
        "schedulerx3:Update*",
        "schedulerx3:Operate*"
      ],
      "Resource": "acs:schedulerx3:*:*:cluster/xxljob-7076602169e",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "schedulerx3:AppName": [
            "testApp-prod",
            "testApp-gray"
          ]
        }
      }
    }
  ],
  "Version": "1"
}