访问控制与授权
TaskFlow 提供了完整的访问控制和授权机制,用于保护工作流和任务的安全性。本文档详细介绍了授权系统的核心概念和配置方法。
核心概念
1. 身份验证(Authentication)
TaskFlow 支持多种身份验证方式:
- JWT Token
- OAuth 2.0
- API Key
- 自定义认证提供者
2. 授权模型(Authorization Model)
采用基于角色的访问控制(RBAC):
- 角色(Role):权限集合的抽象
- 权限(Permission):具体的操作权限
- 资源(Resource):被访问的对象
- 作用域(Scope):权限的应用范围
权限类型
工作流权限
权限名称 | 描述 | 作用域 |
---|---|---|
WORKFLOW_READ | 查看工作流定义和执行状态 | 全局/指定工作流 |
WORKFLOW_WRITE | 创建和修改工作流定义 | 全局/指定工作流 |
WORKFLOW_ADMIN | 管理工作流生命周期 | 全局/指定工作流 |
任务权限
权限名称 | 描述 | 作用域 |
---|---|---|
TASK_READ | 查看任务定义和执行状态 | 全局/指定任务 |
TASK_WRITE | 创建和修改任务定义 | 全局/指定任务 |
TASK_EXECUTE | 执行任务 | 全局/指定任务 |
系统权限
权限名称 | 描述 | 作用域 |
---|---|---|
SYSTEM_ADMIN | 系统管理权限 | 全局 |
USER_ADMIN | 用户管理权限 | 全局 |
METADATA_ADMIN | 元数据管理权限 | 全局 |
配置示例
1. 角色定义
{
"name": "workflow_developer",
"description": "工作流开发者角色",
"permissions": [
{
"action": "WORKFLOW_READ",
"scope": "*"
},
{
"action": "WORKFLOW_WRITE",
"scope": "app:*"
},
{
"action": "TASK_READ",
"scope": "*"
}
]
}
2. 用户权限分配
{
"userId": "user@example.com",
"roles": ["workflow_developer"],
"directPermissions": [
{
"action": "WORKFLOW_ADMIN",
"scope": "project:myapp"
}
]
}
3. API 访问控制
{
"apiPath": "/api/workflow/*",
"methods": ["GET"],
"requiredPermissions": [
{
"action": "WORKFLOW_READ",
"scope": "${path.workflowId}"
}
]
}
最佳实践
最小权限原则
- 仅授予必要的权限
- 使用具体的作用域而非全局权限
- 定期审查权限分配
角色设计
- 基于职责定义角色
- 避免角色权限重叠
- 维护角色层级结构
权限管理
- 实施权限变更审批流程
- 记录权限变更历史
- 定期进行权限审计
安全建议
身份验证
- 使用强密码策略
- 实施多因素认证
- 定期轮换密钥
访问控制
- 实施 IP 白名单
- 限制敏感操作的访问来源
- 监控异常访问模式
审计日志
- 记录所有权限相关操作
- 保留详细的审计日志
- 实施日志分析和告警
故障排除
常见问题
权限被拒绝
- 检查用户角色配置
- 验证权限作用域
- 确认 API 访问策略
令牌失效
- 检查令牌有效期
- 验证令牌签名
- 确认认证服务状态
调试方法
- 启用详细日志记录
- 使用权限测试工具
- 检查审计日志
API 参考
权限管理 API
# 创建角色
POST /api/security/roles
Content-Type: application/json
# 分配用户角色
PUT /api/security/users/{userId}/roles
# 查询权限
GET /api/security/permissions?scope={scope}
认证 API
# 获取访问令牌
POST /api/security/token
# 刷新令牌
POST /api/security/token/refresh
# 撤销令牌
POST /api/security/token/revoke