Skip to content

authz: 高危位(viewAllRecords/modifyAllRecords)授予的授权期 advisory lint #3247

Description

@os-zhuang

背景

ADR-0099 两轴 Amendment(#3245)确立:per-object 超级位 viewAllRecords/modifyAllRecords 是 Layer 1 的范围轴——一个合法的、可委派给非管理员岗位的原语(审计员读全部发票 = Salesforce 对象级 View All 同款)。这是刻意保留的能力,不做运行时收窄。

本 issue 原提议给它加一条授权期 advisory lint。


关闭(not planned,2026-07-18)

复审后判定不做。理由:

  1. 与 ADR-0099 立场自相矛盾:上一轮刻意拒绝 P2 收窄,理由正是「view-all 委派是一等合法能力」。再对每次使用它都 warn,等于一边确立原语、一边警告使用者——典型的 lint 反模式(对常见合法配置报警 = 告警疲劳)。企业软件里给审计员/风控/客服主管授对象级 view-all 是日常,不是可疑操作。

  2. 原动机(澄清:viewAllRecords / modifyAllRecords 在 public_read_write 下失效,是否为开源版有意设计? #3005)挂钩不准确澄清:viewAllRecords / modifyAllRecords 在 public_read_write 下失效,是否为开源版有意设计? #3005 的困惑是 viewAllRecordspublic 对象上「不生效」(以为生效、其实没有);本 lint 的 warn 是反向的(「你会看到全行」),并不解决 澄清:viewAllRecords / modifyAllRecords 在 public_read_write 下失效,是否为开源版有意设计? #3005 那个困惑。

  3. 授权期本已可见:Studio 权限矩阵编辑器勾 viewAllRecords 时授权者即知在授 view-all;真正的 AI 防错手段是 explain(归因「这个位让谁看到什么」),已存在。lint warn 冗余。

考虑过的窄版本(仅对 isDefault:true/全员基线集在敏感对象上授 view-all → warn)也不成立:「敏感对象」无法客观判定、全员基线授 view-all 也可能有意(公开知识库),收益低。

两轴模型已把语义讲清(位定对象内范围、posture 定租户边界),explain 可解释,无需再加一个制造噪音的 lint。避免留伪待办误导后来者,故 close not-planned。若未来出现真实误配面(如统计上频发的"全员集意外授 view-all"事故),再以数据驱动重开。

关联:ADR-0099 两轴 Amendment(#3245)· #3211(已收口)· #3005

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions