Skip to content

访问控制与授权

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}"
    }
  ]
}

最佳实践

  1. 最小权限原则

    • 仅授予必要的权限
    • 使用具体的作用域而非全局权限
    • 定期审查权限分配
  2. 角色设计

    • 基于职责定义角色
    • 避免角色权限重叠
    • 维护角色层级结构
  3. 权限管理

    • 实施权限变更审批流程
    • 记录权限变更历史
    • 定期进行权限审计

安全建议

  1. 身份验证

    • 使用强密码策略
    • 实施多因素认证
    • 定期轮换密钥
  2. 访问控制

    • 实施 IP 白名单
    • 限制敏感操作的访问来源
    • 监控异常访问模式
  3. 审计日志

    • 记录所有权限相关操作
    • 保留详细的审计日志
    • 实施日志分析和告警

故障排除

常见问题

  1. 权限被拒绝

    • 检查用户角色配置
    • 验证权限作用域
    • 确认 API 访问策略
  2. 令牌失效

    • 检查令牌有效期
    • 验证令牌签名
    • 确认认证服务状态

调试方法

  1. 启用详细日志记录
  2. 使用权限测试工具
  3. 检查审计日志

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

飞流云