基于部署组的权限管理
TCT 中对资源(部署组、任务、工作流、执行记录)的权限管理是基于部署组的。TCT 中的任务、工作流、执行记录等资源的权限直接继承对应部署组的权限。也就是说用户对部署组 A 有权限,那么他对部署组 A 上创建的任务、工作流、任务的执行记录、工作流的执行记录也有权限。
对于工作流的情况稍微复杂一些,一个工作流可能会涉及多个部署组(例如工作流节点 A 使用部署组 A,节点 B 使用部署组 B),用户只有对所有涉及的部署组都有权限才对该工作流有权限。
TCT 中的权限分为以下三种:
- r:可读,如果用户对部署组有可读权限,那么他拥有该部署组对应任务、执行记录等资源的查看权限,但是没有操作权限。
- w:可写或者全读写权限,是三个权限中最大的权限,他包含了所有操作的权限。如果用户对部署组有全读写权限,那么它对部署组或者部署组相关的任务有所有操作的权限,包括执行任务、删除/编辑任务。
- x:可执行权限,拥有该权限的用户对任务或者工作流有执行的权限,这里的执行包括执行相关的所有操作,例如启用/停用任务、执行一次任务、重跑、挂起、暂停工作流等操作。和全读写权限(w)相比,它只少了任务/工作流的编辑、删除、设置当前版本,执行看板的创建、编辑、删除操作。
系统级别权限管理
对应于 TCT 中的三种权限,TCT 定义了三种系统级别权限策略。用户如果绑定了这些权限策略,那么就拥有了租户下所有资源的该权限,例如用户绑定 TCTExecuteAccess 权限策略,那么用户可以执行租户下所有的任务、工作流。
- TCTReadOnlyAccess: TCT 系统级别权限策略,拥有 TCT 的只读权限(r),可以查看 TCT 里所有的部署组、任务、工作流、执行看板等,但是没有操作的权限(创建、删除、编辑、运行等)。
- TCTExecuteAccess:TCT 系统级别权限策略,该权限允许用户执行任务/工作流,包括暂停、继续、终止、强制终止、重跑、挂起、解除挂起、跳过等操作。
- TCTFullAccess:TCT 系统级别权限策略,拥有 TCT 的全部操作权限, 能够进行增删改查以及执行相关的所有操作。
系统级别权限策略可以直接在【访问管理】中的用户下进行绑定。
资源级别权限管理
如果希望对 TCT 中的资源进行细粒度的权限控制,例如对任务 A 有执行权限、对任务 B 有只读权限,那么就需要进行资源级别的权限管理。
TCT 中我们通过部署组来实现权限控制,部署组资源的权限是通过项目来实现的,TCT 的部署组作为资源加入到项目中,用户绑定项目级别权限策略加入到项目中,从而拥有项目中对应资源的权限。
权限策略
TCT 中项目级别权限策略同样对应于 r、x、w 三个级别:
- ProjectTCTReadOnlyAccess:TCT 项目级别权限策略,绑定该策略的用户拥有对应项目下所有 TCT 部署组的只读权限(r),从而拥有部署组对应任务、工作流、执行记录的只读权限。
- ProjectTCTExecuteAccess:TCT 项目级别权限策略,绑定该策略的用户拥有对应项目下所有 TCT 部署组的可执行权限(x),从而拥有部署组对应任务、工作流、执行记录的可执行权限。
- ProjectTCTFullAccess:TCT 项目级别权限策略,绑定该策略的用户拥有对应项目下所有 TCT 部署组的全读写权限(w),从而拥有部署组对应任务、工作流、执行记录的全读写权限。
如何绑定权限
接下来我们看看如何通过项目来实现资源级别的权限控制。
首先我们可以在 云平台的 【资源管理】中创建一个项目。
创建项目后,我们需要将用户添加到项目中,并为之授权,例如用户以 ProjectTCTFullAccess 权限策略加入到项目中。

在 TCT 中创建部署组时,我们选择这个项目,这样该部署组会作为资源归属于该项目,该项目中的成员则会拥有该部署组对应的权限。
对于存量的部署组,我们也可以在【资源管理】中直接将部署组作为资源转入到项目中,如下图所示。

执行器注册认证鉴权
执行器(客户端实例)通过 SDK 注册到 TCT 上,接收 TCT 的任务调度,执行器实例在注册的时候是通过 AK/SK 来进行认证鉴权的。AK/SK 可以在云平台的账号信息中获取。
TCT 收到客户端发来的注册请求后,会先进行认证,即校验 AK/SK 的有效性(并同时获取对应的用户信息),认证通过后再进行鉴权,验证用户对注册的目标部署组是否有写权限(w),如果验证通过则注册成功。这里需要注意的是,由于 TSF 未接入平台项目管理,因此我们对 TSF 类型的部署组只做认证而不做鉴权,如果希望进行鉴权,请使用 TCT 部署组(通过在客户端配置中配置 TCT 部署组 ID 实现,详情请参考开发指南)。