定义了从一种权限模型迁移到另一种权限模型的分阶段过程,使用影子评估、差异证据、显式切换群组、回滚和失败关闭的执行边界。
包状态: 参考上下文,准备人工审核。合约和测试场景已完成,但不保证采用的实现已通过它们。
决策
旧策略引擎和新策略引擎并行运行,但每个群组仅保留一个权威结果。记录伪匿名差异,进行修正,然后通过有界群组和可逆的策略版本切换完成切换。
范围
- 策略转换、影子比较、群组切换、会话行为、缓存版本控制和回滚。
- 跨同步 API、作业、导出、搜索、缓存和管理工具的执行。
- 退役旧策略所需的证据。
不在此范围内
- 在迁移表示的同时更改产品权限。
- 迁移后维护两个独立的真实来源。
合约
- 每个执行请求携带租户、主体、操作、资源和选定的策略版本。
- 影子输出不能授权或拒绝用户操作;只有群组的权威引擎可以。
- 差异记录将预期的转换差异与无法解释的允许和拒绝分开分类。
- 权限和决策缓存的键包含策略版本和租户范围。
- 每个群组的切换是单调的,除非显式回滚将该群组切回。
- 旧策略退役要求无无法解释的高风险差异,测试过的回滚,以及覆盖非 HTTP 执行路径。
实施指导
- 创建规范的权限词汇表,然后为两种模型编写适配器。
- 使用具有代表性、隐私降低的决策夹具和生产影子样本。
- 在切换后,将策略版本传播到会话中,或在执行层重新评估会话。
- 设计回滚以切换权威,而不反向写入部分迁移的分配。
失败处理和保障措施
- 如果新引擎对已迁移群组不可用,遵循声明的失败关闭或受保护的回退策略;绝不默默使用无版本缓存。
- 如果差异量失去可观测性,停止群组扩展。
- 如果分配转换存在歧义,将该分配隔离以供审查,而非扩大访问权限。
验证和运维
- 按操作/风险类别、评估延迟、缓存未命中、迁移覆盖率、回滚时间和无法解释的授权失败来衡量差异。
- 每个群组基于证据窗口和指定审批人进行门控。
- 在回滚窗口期间保持旧引擎只读,然后有意删除所有调用路径。
本包中看似可执行的示例是夹具和验收合约。从集合根目录运行
python tools/validate.py 检查包结构和元数据;然后在目标仓库中实现并执行场景。
采用假设
example.yaml中的名称和数值是采用配置文件,不是通用默认值。- 采用团队必须将参与者、数据类别、错误词汇和所有权映射到其系统。