2. 权限模型基础:RBAC与ABAC模型简介、归档包权限的粒度划分、最小权限原则在归档场景的应用

2.1 两大主流权限模型:RBAC 与 ABAC

在归档包权限体系的设计中,RBAC(基于角色的访问控制)与ABAC(基于属性的访问控制)是两种最核心的理论模型。理解它们的差异,是正确配置归档包权限的前提。

对比维度 RBAC(基于角色) ABAC(基于属性)
授权依据 用户所属的角色(如:归档管理员、审计员) 用户、资源、环境的多维属性组合
粒度控制 粗粒度到中粒度(角色→权限集) 细粒度到极细粒度(属性表达式)
变更灵活性 需修改角色-权限映射或新建角色 动态调整属性规则,无需修改角色结构
适用场景 组织架构稳定、权限分类明确的归档环境 多租户、合规标签、临时授权等复杂场景
管理复杂度 较低,角色数量可控 较高,需维护属性字典与策略引擎
实践建议:大多数归档系统采用 RBAC 为主、ABAC 为辅 的混合模型。基础权限(如“创建归档包”“下载归档包”)通过角色分配;敏感操作(如“跨部门调阅”“删除已封存包”)则叠加 ABAC 属性规则进行二次校验。
RBAC 与 ABAC 核心对比 RBAC 模型 用户 A 归档管理员 权限集:创建/下载/审计 核心:用户 → 角色 → 权限 静态分配,变更需调整角色映射 ABAC 模型 用户属性 资源属性 环境属性 策略引擎(规则评估) 允许 / 拒绝 动态评估,支持细粒度条件表达式

2.2 归档包权限的粒度划分

归档包的权限粒度直接影响安全性与运维效率。根据实际生产经验,建议按以下层级进行划分:

  • 系统级粒度:控制是否允许访问归档模块,通常由全局管理员分配。
  • 存储库级粒度:按存储库(Repository)隔离权限,不同部门或项目组拥有独立库。
  • 归档包级粒度:针对单个归档包的读取、下载、删除、修改标签等操作。
  • 文件级粒度:控制归档包内特定文件的查看或提取权限(适用于敏感文档归档)。
  • 操作级粒度:区分“创建”“审核”“封存”“解封”“删除”等生命周期操作。
粒度层级 典型权限项 推荐模型 性能影响
系统级 访问归档模块 RBAC 低
存储库级 查看库列表、跨库检索 RBAC 低
归档包级 读取元数据、下载包体 RBAC + ABAC 中
文件级 预览/提取包内特定文件 ABAC 较高
操作级 创建、审核、封存、删除 RBAC + ABAC 中
粒度选择原则:在满足合规要求的前提下,尽量使用 归档包级 作为默认粒度。文件级权限会显著增加策略评估开销,仅在包含“机密级”或“个人隐私”数据的归档包中启用。

2.3 最小权限原则在归档场景的应用

最小权限原则(Principle of Least Privilege, PoLP)要求每个主体只拥有完成其任务所必需的最小权限集合。在归档包权限配置中,落实 PoLP 需要关注以下三个关键动作:

  1. 角色职责分离:将“创建归档包”“审核归档包”“封存归档包”“删除归档包”分配给不同角色,避免单人拥有完整生命周期控制权。
  2. 临时权限自动回收:对于紧急调阅或跨部门协作场景,使用 ABAC 属性规则设置 时间窗口 或 次数限制,过期自动失效。
  3. 默认拒绝策略:所有未显式授权的操作默认拒绝。归档包创建时,仅授予创建者“读取”和“修改元数据”权限,不自动授予“删除”或“封存”权限。
最小权限原则在归档包生命周期中的应用 归档包生命周期 & 最小权限分配 ① 创建 仅写入+读元数据 无删除/封存权 ② 审核 只读+审批操作 不可修改内容 ③ 封存 仅封存操作 不可解封/删除 ④ 调阅 只读+时间窗口 过期自动回收 最小权限落地要点 职责分离 → 临时权限自动回收 → 默认拒绝 → 定期权限审计
常见误区:不要将“归档管理员”角色赋予所有归档操作权限。正确的做法是将“创建”“审核”“封存”“删除”拆分为独立角色,并配合 ABAC 规则限制操作范围(如:只能操作本部门归档包)。否则一旦角色被滥用或账号泄露,攻击者可一次性删除所有归档数据。

2.4 权限模型选择决策树

在实际项目中,可通过以下决策步骤快速确定归档包的权限模型:

  1. 步骤 1:判断组织架构是否稳定且角色清晰 → 是则优先使用 RBAC。
  2. 步骤 2:判断是否存在跨部门、跨项目调阅需求 → 是则叠加 ABAC 属性规则。
  3. 步骤 3:判断是否需要控制归档包内单个文件的访问 → 是则启用文件级 ABAC。
  4. 步骤 4:判断是否需要临时授权(如:外部审计) → 是则使用 ABAC 时间/次数属性。
  5. 步骤 5:最终形成“RBAC 基础角色 + ABAC 动态策略”的混合权限矩阵。
场景 推荐模型 示例策略
内部员工日常归档 RBAC 角色“归档员”可创建和读取本库归档包
跨部门合规调阅 RBAC + ABAC 角色“合规审计员”+ 属性“部门=财务部”+ 时间“工作日 9:00-18:00”
外包人员临时维护 ABAC 属性“角色=维护员”+“IP 范围=公司 VPN”+“有效期=7 天”
归档包内涉密文件提取 ABAC 属性“文件密级=机密”+“用户安全等级=二级以上”+“审批单号=必填”
接口调用提示:在后续章节的 API 设计中,RBAC 角色信息通常放在 JWT 的 roles 字段中;ABAC 属性则通过请求头 X-Abac-Attributes 或请求体中的 context 对象传递。权限评估结果由后端策略引擎统一返回,前端仅展示允许的操作按钮。