Skip to content
bitzorcas
EN

Concept

授权

多策略授权 — RBAC(基于角色)、ABAC(基于属性)、AppScope(应用级)和 ReBAC(基于关系)策略评估器,默认失败关闭。

Last updated

BitzOrcas 实现了四策略授权管道,按顺序评估策略。系统默认失败关闭——如果没有评估器明确允许访问,请求被拒绝。

架构

请求 → AuthorizationPipelineBehavior
├── RbacPolicyEvaluator (角色 → 权限)
├── AppScopePolicyEvaluator (跨租户应用范围)
├── AbacPolicyEvaluator (上下文感知规则)
└── ReBacPolicyEvaluator (关系图)
IAuthorizationDecisionService → 允许 / 拒绝

四种策略

评估器策略描述
RbacPolicyEvaluator基于角色的 AC通过 SysRoleModulePermission 将用户角色映射到权限
AppScopePolicyEvaluator应用范围跨租户应用级权限
AbacPolicyEvaluator基于属性上下文感知规则(资源所有者、时间、IP)
ReBcPolicyEvaluator基于关系基于图的访问(如”是频道成员”)

RBAC 模型

主要授权模型:

用户 → 角色 → RoleType → SysRoleModulePermission → 权限

权限格式

// 模块 + 动作模式
"ticket.create"
"ticket.view"
"ticket.assign"
"chat.message.send"
"chat.channel.manage"
"file.upload"

权限矩阵

通过 CSV 种子数据定义(sys_role_module_permission.csv):

角色类型ticket.createticket.viewticket.assignticket.manage
Admin
Operator
EndUser✅ (自己的)

数据范围

IDataScopeResolver 确定用户可访问多少数据:

public enum DataScope
{
Own, // 仅自己的数据(如自己的工单)
Tenant, // 租户内所有数据
CrossTenant // 所有租户(管理员/审计员)
}

AuthorizationPipelineBehavior

在每条命令/查询上强制授权的 Mediator 管道行为:

// 在 Mediator 管道中注册(位置 2)
typeof(AuthorizationPipelineBehavior<,>)

它在处理器执行前评估授权决策服务。

模块级权限

每个模块定义自己的权限常量:

// Tickets 模块
public static class TicketPermissions
{
public const string Create = "ticket.create";
public const string View = "ticket.view";
// ...
}
// Chat 模块
public static class ChatPermissions
{
public const string ChannelCreate = "chat.channel.create";
// ...
}

另见