本文介绍任务调度XXL-JOB支持的所有系统权限策略及其相应的权限描述,以供您授权 RAM 身份时参考。同时,还提供了自定义权限策略的创建方法及示例,以实现精细化授权。
注意事项
如果您使用的是子账号,在配置XXL-JOB任务调度权限时,无论是系统权限还是自定义权限策略,都需要配置云监控只读策略。
什么是系统权限策略
权限策略是用语法结构描述的一组权限的集合,可以精确地描述被授权的资源集、操作集以及授权条件。阿里云访问控制(RAM)产品提供了两种类型的权限策略:系统策略和自定义策略。系统策略统一由阿里云创建,策略的版本更新由阿里云维护,用户只能使用不能修改。自定义策略由用户管理,策略的版本更新由用户维护。用户可以自主创建、更新和删除自定义策略。在产品迭代过程中,分布式任务调度会向系统策略中添加新的权限,用来支持新的功能和能力。系统策略的更新将会影响所有授予了该策略的 RAM 身份,包括 RAM 用户、RAM 用户组和 RAM 角色。有关 RAM 权限策略的更多信息,请参阅权限策略概览。
产品系统策略旨在帮助用户快速入门,仅需简单配置即可通过控制台访问该产品及其依赖产品。虽然系统策略包含的权限同样适用于 OpenAPI 或 CLI 等访问方式,但为了提高安全性,我们推荐您在这些场景下使用自定义策略,按需授予人员及应用特定 API 的访问权限。
系统策略可进一步细分为产品系统策略、服务角色策略和服务关联角色策略三类。部分云产品仅提供三类策略中的一类或两类,请以本文实际展示的策略类型为准。
产品系统策略
AliyunMSEFullAccess
您可以将 AliyunMSEFullAccess 策略授权给RAM身份。本策略定义了管理微服务引擎(MSE)的权限,并包括对SchedulerX和XXL-JOB的管理权限。
AliyunMSEReadOnlyAccess
您可以将 AliyunMSEReadOnlyAccess 策略授权给RAM身份。本策略定义了只读访问微服务引擎(MSE)的权限,并包括对SchedulerX和XXL-JOB的只读访问权限。
云监控只读策略
XXL-JOB默认集成了云监控,需给RAM子账号授予只读访问云监控的系统策略,否则在基本信息中无法看到调度统计大盘。
使用RAM管理员登录RAM控制台。
在左侧导航栏
页面,单击新增授权,选择授权主体的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 | 查询应用列表 | 是 | |
ListCalendarNames | 查询自定义日历名字列表 | 是 | |
ListExecutors | 查询执行器列表 | 是 | |
ListJobs | 查询任务列表 | 是 | |
ListJobExecutions | 查询任务执行列表 | 是 | |
ListScheduleTimes | 查询未来5次调度时间 | 是 | |
创建 | CreateCluster | 创建集群 | 否 |
CreateApp | 创建XXL-JOB应用 | 否 | |
CreateJob | 创建XXL-JOB任务 | 否 | |
更新 | UpdateCluster | 更新集群 | 否 |
UpdateApp | 更新XXL-JOB应用 | 否 | |
UpdateJob | 更新XXL-JOB任务 | 否 | |
删除 | DeleteCluster | 删除集群 | 否 |
DeleteApp | 删除应用 | 否 | |
DeleteJobs | 批量删除任务 | 否 | |
运维操作 | OperateDesignateExecutors | 任务指定机器 | 否 |
OperateDisableJobs | 批量禁用任务 | 否 | |
OperateEnableJobs | 批量启用任务 | 否 | |
OperateExecuteJob | 运行一次任务 | 否 | |
OperateRerunJob | 重刷一段时间的任务记录 | 否 | |
OperateRetryJobExecution | 重跑失败的任务执行记录 | 否 | |
OperateStopJobExecution | 停止正在运行的任务执行记录 | 否 |
资源Resource
XXL-JOB的资源Resource定义结构如下:
acs:schedulerx3:*:*:cluster/*
常见自定义权限策略示例
如果您使用的是子账号,在配置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-prod
和testApp-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"
}