背景
B2/B4(ADR-0095 D2/D3,#2938)在 resolve-authz-context.ts 算出并携带了显式 ctx.posture(PLATFORM_ADMIN > TENANT_ADMIN > MEMBER > EXTERNAL)。但在修复租户墙 org_admin 越墙(#2946 / Finding 2)时实测确认:该字段没有被 plumb 进 enforcement 中间件收到的 ExecutionContext——rest-server.ts(~L1197-1215)与 runtime/resolve-execution-context.ts(~L143-204)构建执行上下文时都丢弃了 authz.posture。
后果:任何 enforcement 侧插件若直接读 context.posture 会永远 undefined → 静默 no-op。#2946 因此改用「平台专属能力探针」(hasPlatformAdminPosture)绕开,而非用 posture 作豁免门。
缺口
posture 目前是一个「算出来但传输层丢弃、enforcement 拿不到」的半成品字段。它已被 explain 引擎消费(report 侧),但 enforcement 侧不可用。这也是 security review 发现的 explain-vs-enforcement posture 分叉的根因之一。
建议
若要让 enforcement 真正按 posture 裁决(ADR-0095 D2/D3 的完整意图),需在两处补 plumbing:
packages/rest/src/rest-server.ts 构建 ExecutionContext 时带上 posture: authz.posture
packages/runtime/src/security/resolve-execution-context.ts 同上(覆盖 runtime/MCP 入口)
并把 ExecutionContext 类型加上可选 posture 字段。之后 #2946 的 hasPlatformAdminPosture 能力探针可考虑收敛为读 ctx.posture(单一真相)。
注意:这是「posture 透传进 enforcement」的一部分——B2 刻意止步于解析器层。是否让 enforcement 全面按 posture 重写是更大的 ADR 级决策;本 issue 只跟踪「把已算出的 posture 传下去」这一具体 plumbing 缺口。
关联
ADR-0095 D2/D3 · #2938(B2/B4)· #2946(租户墙修复,用能力探针绕开)· tracking #2920
发现于 #2920 的安全审查。
背景
B2/B4(ADR-0095 D2/D3,#2938)在
resolve-authz-context.ts算出并携带了显式ctx.posture(PLATFORM_ADMIN > TENANT_ADMIN > MEMBER > EXTERNAL)。但在修复租户墙 org_admin 越墙(#2946 / Finding 2)时实测确认:该字段没有被 plumb 进 enforcement 中间件收到的ExecutionContext——rest-server.ts(~L1197-1215)与runtime/resolve-execution-context.ts(~L143-204)构建执行上下文时都丢弃了authz.posture。后果:任何 enforcement 侧插件若直接读
context.posture会永远 undefined → 静默 no-op。#2946 因此改用「平台专属能力探针」(hasPlatformAdminPosture)绕开,而非用 posture 作豁免门。缺口
posture 目前是一个「算出来但传输层丢弃、enforcement 拿不到」的半成品字段。它已被 explain 引擎消费(report 侧),但 enforcement 侧不可用。这也是 security review 发现的 explain-vs-enforcement posture 分叉的根因之一。
建议
若要让 enforcement 真正按 posture 裁决(ADR-0095 D2/D3 的完整意图),需在两处补 plumbing:
packages/rest/src/rest-server.ts构建 ExecutionContext 时带上posture: authz.posturepackages/runtime/src/security/resolve-execution-context.ts同上(覆盖 runtime/MCP 入口)并把
ExecutionContext类型加上可选posture字段。之后 #2946 的hasPlatformAdminPosture能力探针可考虑收敛为读ctx.posture(单一真相)。注意:这是「posture 透传进 enforcement」的一部分——B2 刻意止步于解析器层。是否让 enforcement 全面按 posture 重写是更大的 ADR 级决策;本 issue 只跟踪「把已算出的 posture 传下去」这一具体 plumbing 缺口。
关联
ADR-0095 D2/D3 · #2938(B2/B4)· #2946(租户墙修复,用能力探针绕开)· tracking #2920
发现于 #2920 的安全审查。