ADR-02 私域授权模型
状态:proposed(M0 起草,待 owner 过目)。定授权维度的存储落点 + 最小字段 + 输出门,不冻结授权审批流程 UI。
1. 上下文
边界不变量 3:私域 / 受限来源必须保留授权与适用限制,不得越权输出;状态不变量 ②:受限 / 未授权资产不得对外输出。L3 §11.6 把 Authorization 定为维度(绑定 Source / 受限 Information Asset),非独立建模对象。私域职业信号是差异化主线(P2,与 P1 并列),其合规边界是能否真正资产化的前提。
现行代码事实(brief):dn_crawler_source、dn_kol 无任何授权 / licensing / 适用限制 / 输出限制字段,仅 tags(业务标签)。→ 不变量 3 与状态不变量 ② 当前无字段可依,输出门无法据授权拦截,等同形同虚设。
2. 决策点
授权维度落在哪里、最小要存什么,才能让「输出前按授权拦截」可执行?两个子问题:① 落 Source 表字段 vs 独立授权表;② M0 最小字段集。
3. 选项与取舍
| 选项 | 描述 | 优 | 劣 |
|---|---|---|---|
| A 字段落 Source 表(推荐 M0) | dn_crawler_source/dn_kol 加 auth_status + applicable_limit + output_limit | 改动小、输出门可直接 join source 一次校验、贴 L3「授权是维度非对象」 | 无授权变更历史 / 审计轨迹;适用限制表达力受限于列 |
| B 独立授权表 | dn_source_authorization(source_id、auth_status、scope、授权方、证据、granted/expires/revoked_at…) | 全审计 / 历史 / 到期处理、表达力强 | 每次输出校验多一跳 join;授权简单时过度工程 |
| C 混合 | 状态位 + 输出限制落 Source 表(快速门),授权明细 / 历史落独立表 | 兼顾快门与审计 | M0 即上两套结构,偏重 |
4. 结论(proposed)
M0 采选项 A(字段落 Source 表),最小集,把审计 / 历史(选项 B/C 的独立表)留后续(按需,触发条件 = 出现授权到期批量处理或合规审计需求):
M0 在 dn_crawler_source(必要时 dn_kol)补三字段:
auth_status枚举:已授权 / 受限 / 过期 / 撤销 / 未知(对应 L3 §11.6 授权维度状态轮廓;未知为现存量历史源默认值,须显式区别于「已授权」)。applicable_limit(JSON/文本):适用限制(可用于何种消费方 / 何种用途 / 脱敏要求;私域职业信号的可回测 vs 实时跟单边界)。output_limit(JSON):输出限制(可否对外 / 仅内部 / 仅特定消费方 / 需脱敏;接 pkg/xprivacy 已有脱敏能力)。
输出门(M0 必做):交付前校验「auth_status ∈ {已授权} 且不违反 output_limit」,否则拦截(不变量 3 / 状态不变量 ②)。受限 Information Asset 的授权继承自来源(资产级 受限 状态承接 ADR-08 资产状态机),到期 / 撤销 → 关联资产转「受限」。
不选 B/C 作为 M0:当前无审批流 / 到期批处理需求,独立表是过度工程;先让输出门成立,审计表按需补。
5. 约束(引边界不变量)
- 不变量 3(私域必留授权与适用限制、不越权输出):本 ADR 核心驱动;三字段 + 输出门是其最小落地。
- 状态不变量 ②(受限 / 未授权不输出):输出门拦截即其实现。
- 与 ADR-08 一致:授权是七维度之一,本 ADR 定其落点为「Source 表字段,资产级继承」,ADR-08 约束 1 的授权部分以此为准。
- 默认安全:存量源
auth_status默认未知,未知不得当作已授权放行(否则历史私域源会被误放)。
6. 影响节
- L3 §11.6(授权维度状态轮廓)、§17(边界安全 / 输出前校验)——以本 ADR 落字段。
- gap-map WP-P2-01(私域来源与授权边界)、WP-P2-04(私域职业信号资产化)。
- 关联 ADR-08(授权维度落点)、pkg/xprivacy(脱敏,output_limit 的执行)。
7. 待 owner 过目确认点
- M0 采 A(字段落 Source 表、审计表留后续)是否认可,还是私域合规需要 M0 即上独立授权表(B/C)?
applicable_limit/output_limit用结构化 JSON 还是先文本占位(结构由 WP-P2-01 细化)?- 存量源默认
未知、且「未知不放行」是否接受(会使现存私域源在补授权前默认不对外,可能影响当前转发行为——这正是不变量 3 要的,但需确认运营冲击可接受)?