访问控制 RBAC / ABAC 总览待审核
when/where · 环境

when[where]:同一请求,换个时间地点就从准变拒

有一类条件,既不属于「人」也不属于「物」,而属于请求发生的现场 —— 环境 / 情境 (environment / context):当前时刻、星期几、来自哪个网络 (公司 / 家里 / 境外)、 使用何种设备 (公司托管 / 个人)、是否已通过 MFA。将 who / what / action 全部固定,只改动情境, 观察完全相同的请求如何在「工作日 10:00 从公司」被准许、在「深夜从境外」被拒绝。

选个场景 (它固定 who / action / what,只留情境给你调)

when —— 时间

10:00

where —— 地点 / 设备

policy 规则 (亮 = 命中;高亮 = 决定性规则)

决策 (deny-overrides)

可对照以下两组:
其一,场景「admin 导出预算」:office + 托管设备 → ;将网络切换至境外r-abroad 一票否决 → ; 或将设备切换为个人且关闭 MFA → r-mfa 拦截 →
其二,场景「approver 审批」:工作日 10:00 → ;将时刻拖至 22:00 或星期切换为周日 → 不在工作时间、 r-approve 不再命中 → 无人放行 → 默认拒绝
这正是「授权需要考量环境条件」。同一个人、同一个动作、同一份资源,仅因情境不同便给出相反结论 —— 这是 RBAC 的静态「role→permission 表」天然表达不了的。把 context 纳入函数参数,授权才谈得上 「异地登录加验、深夜高危操作收紧、个人设备降权」这些真实风控。