认证与授权
认证确认请求主体,授权判断资源访问权限。本文负责信任边界、权限模型和多租户隔离。
1. 面试核心
先记住这几条,再读正文- 认证与授权。 认证确认主体身份,授权结合资源、动作和上下文判定权限。卡 · 授权决策
- 角色与属性。 RBAC 按角色分配权限,ABAC 按属性计算权限。
- 资源归属。 资源服务通过可信租户和资源归属约束数据访问。
- 权限撤销。 权限缓存的撤销窗口由失效机制和 TTL 共同决定。卡 · 权限变更与撤销
- 关系授权。 ReBAC 根据用户、群组与资源之间的关系计算权限。卡 · RBAC 与 ABAC
2. 信任边界
浏览器、网关、服务和消息队列各有信任边界。每个边界都需要验证调用者身份。网络位于内网,也要按主体限制访问范围。
网关传递身份时,应删除外部同名 header。下游仅接受受保护的身份上下文。可以用认证连接或签名绑定调用来源。内部调用和异步消费也需要等价约束。
3. 身份验证
用户可通过密码、多因素或 passkey 登录。服务可使用 mTLS 或工作负载身份。验证结果包含稳定主体、发行者和认证强度。
服务端从已认证上下文取得用户身份。客户端传入的用户名只是待验证数据。租户选择也需核对当前主体的成员关系。
4. 授权决策
授权规则以主体、动作、资源和上下文为输入:
principal + action + resource + context → allow / deny
ROLE_USER 表示角色。订单所有者、所属租户和状态决定具体操作权限。服务端默认拒绝缺少规则的请求。
授权检查应覆盖每次资源访问。批量操作要核对集合内的每项资源。Controller、Service 与查询层应遵循同一策略。
5. RBAC 与 ABAC
RBAC 将权限分给角色,再将角色分给用户。职责稳定的系统适合用角色表达基础权限。
ABAC 使用主体、资源与环境属性计算权限。例如退款要求租户一致,且金额低于审批额度。属性应来自可信数据源,并随业务状态更新。
角色可授予基础权限,属性条件再收紧范围。大量组合角色会增加维护成本。此时可将地区、金额等条件转为属性。
5.1 关系型访问控制
ReBAC 根据主体与资源的关系授予权限。例如用户属于编辑组,编辑组拥有文件夹编辑权。文件从所属文件夹继承该权限。
关系模型适合文档共享、组织成员和资源继承。删除成员关系后,权限缓存也要失效。关系路径需要限制深度,并检测继承环。
6. 多租户边界
查询从可信上下文取得 tenant ID。查询条件同时约束租户与资源标识:
SELECT * FROM orders WHERE tenant_id = ? AND id = ?;
第一个参数来自已验证的租户成员关系。第二个参数来自请求中的订单标识。返回资源后还需判断具体动作的权限。
缓存 key、消息和对象路径也应绑定租户。数据库行级安全或独立库可进一步隔离。管理员跨租户操作使用临时授权,并记录原因。
7. 网关与服务的授权分工
网关验证凭据并检查 API scope。领域服务掌握资源所有者和业务状态,负责最终授权。
异步任务保存发起主体和租户信息。执行时按业务约定重新验证权限。高风险延迟任务应使用执行时的权限状态。
8. 权限变更与撤销
token 内固化的角色会持续到该 token 失效。令牌撤销机制见 JWT 撤销。本节讨论服务端授权决策缓存。
缓存键应覆盖主体、资源、动作和策略版本。资源归属变化也应使旧结果失效。TTL 决定失效通知丢失后的最长缓存窗口。
高风险操作实时检查权限或撤销版本。若策略服务故障,应拒绝无法确认的高风险操作。低风险读取可使用尚在有效期内的授权结果。过期结果按预定策略拒绝。
9. 授权审计
授权记录包含主体、动作、资源、结果和策略版本。高风险操作还关联审批记录。拒绝日志只保留诊断所需字段,并限制写入速率。
审计存储与业务管理权限隔离。日志保护机制见 审计日志。
10. 常见问题
10.1 管理员的资源范围
管理员也受策略范围约束。租户管理员只管理指定租户。跨租户操作应另行授予权限,并限制有效期。
10.2 服务凭据的隔离
每个服务使用独立身份,便于单独撤销和审计。共享 token 会扩大泄漏影响。目标服务还需按调用主体和动作授权。
11 · 面试题卡片
本页题目与参考回答
11.1 为什么网关完成鉴权后仍可能发生水平越权?
出现公司:滴滴
考察重点:身份、资源归属与多租户条件。
参考回答
网关的身份校验没有覆盖订单归属时,就会发生越权。
攻击者修改订单 ID,服务若直接查询就会返回他人数据。
领域服务应校验租户、所有者和具体动作。查询同时绑定可信 tenant 与资源标识。内部调用与异步消费也采用同一策略。
11.2 文档共享权限适合使用 RBAC、ABAC 还是 ReBAC?
出现公司:暂无已核验的公开来源(本站自测)
考察重点:角色、属性与资源关系。
相关内容:RBAC 与 ABAC、关系型访问控制。
参考回答
文件夹继承和群组共享适合用 ReBAC 表达。
角色可提供基础管理权限。ABAC 可追加设备、时间等属性条件。
关系变化后应使相关缓存失效。服务需明确继承规则、拒绝规则和可审计的授权路径。
11.3 撤销权限后,怎样限制旧授权缓存的生效时间?
出现公司:暂无已核验的公开来源(本站自测)
考察重点:失效通知、TTL 与故障时的决策。
相关内容:权限变更与撤销。
参考回答
主动失效缩短撤销延迟,TTL 限定失效丢失后的窗口。
缓存还需绑定策略版本和资源归属版本。
高风险操作实时核对撤销状态。策略服务不可用时拒绝这类操作。低风险读取仅在约定的有效缓存窗口内继续。