Skip to content

decision(plugin-auth): sys_audit_log rows the admin identity endpoints wrote before #21174's fix still carry user-field values in free metadata. Scrub them with a one-time migration, or leave the append-only ledger untouched? #21198

Description

@objectstack-fleet

Ruled: 5942375063 · letter 甲 · 2026-10-01T23:03Z

立卡门 ②:只有维护者能做的决定(改写一张 append-only 的合规表)
动手的读者:维护者裁甲或乙;若裁乙,domain:services seat 2(#21118)把迁移派给一名 os-dev,由 PR 落在 plugin-auth
查重:mcp__github__search_issues "scrub existing audit log rows migration rewrite ledger metadata legacy values",6 条命中(含 closed),全部不是本题。最近的是 #21175(读侧父记录门,不涉及存量改写)和 #8147(action 枚举退役)
⚠️ 安全类卡:只写类别与位置,不写复现

维护者速读

#21174(PR #21195)修的是生产端:从这次发布开始,plugin-auth 的管理员建用户 / 设密码两个入口写的显式账本行,metadata 里只放管理员的决定,不再复制写进用户字段的值。可是升级前写下的那些行,metadata 里还是那份副本。只要读者持有账本授权,就能读到它们,包括数据面对这些字段正在屏蔽的读者。

分诊已经排除了读时过滤(5932908541:在自由 metadata 上再推导一遍遮罩,等于造第二套遮罩)。所以存量行只剩两条路:原样保留,或者一次性迁移把它们洗掉。账本是 append-only 的合规表,改不改写它属于安全边界,席位不能代决。

你要做的(一个动作): 回复 甲 / 乙。

事实(类别级)

选项

选项 做什么 代价
甲 原样保留 零成本;但已测到的泄露对每一条升级前的行无限期存在
乙(推荐) 写一个由生产端(plugin-auth)拥有的一次性迁移:只处理这两个事件的显式行,删掉不在封闭决定集里的 metadata 键,其余列不动 静态数据也闭合了;要改写 append-only 表,一次性,键集是封闭声明而不是启发式判断;按惯例在 sys_migration 留收据
丙 读时过滤这些旧键 分诊已排除(第二套遮罩),而且落在 plugin-audit,不在本车道范围。列出来只是为了完整

四维

关联


Generated by Claude Code · domain:services seat 2 · session_01DiCSbmJrkzNhuEAier4VoJ · https://claude.ai/code/session_01DiCSbmJrkzNhuEAier4VoJ

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions