跳到主要内容
约 4 分钟3 张卡

认证与授权

认证确认请求主体,授权判断资源访问权限。本文负责信任边界、权限模型和多租户隔离。

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 服务凭据的隔离​

11 · 面试题卡片​

本页题目与参考回答

11.1 为什么网关完成鉴权后仍可能发生水平越权?​

出现公司:滴滴

考察重点:身份、资源归属与多租户条件。

相关内容:授权决策、多租户边界。

参考回答

网关的身份校验没有覆盖订单归属时,就会发生越权。

攻击者修改订单 ID,服务若直接查询就会返回他人数据。

领域服务应校验租户、所有者和具体动作。查询同时绑定可信 tenant 与资源标识。内部调用与异步消费也采用同一策略。

11.2 文档共享权限适合使用 RBAC、ABAC 还是 ReBAC?​

出现公司:暂无已核验的公开来源(本站自测)

考察重点:角色、属性与资源关系。

相关内容:RBAC 与 ABAC、关系型访问控制。

参考回答

文件夹继承和群组共享适合用 ReBAC 表达。

角色可提供基础管理权限。ABAC 可追加设备、时间等属性条件。

关系变化后应使相关缓存失效。服务需明确继承规则、拒绝规则和可审计的授权路径。

11.3 撤销权限后,怎样限制旧授权缓存的生效时间?​

出现公司:暂无已核验的公开来源(本站自测)

考察重点:失效通知、TTL 与故障时的决策。

相关内容:权限变更与撤销。

参考回答

主动失效缩短撤销延迟,TTL 限定失效丢失后的窗口。

缓存还需绑定策略版本和资源归属版本。

高风险操作实时核对撤销状态。策略服务不可用时拒绝这类操作。低风险读取仅在约定的有效缓存窗口内继续。

12. 参考资料​