4. 鉴权与授权核心概念

在金融模型服务中,安全鉴权与审计的第一道防线,是准确区分“你是谁”和“你能做什么”。很多团队把认证、授权、会话、令牌混为一谈,导致接口越权、令牌泄露、审计断链。本节将围绕八个核心概念,建立一套可落地的概念坐标系,为后续实战打下基础。

一、核心原理:认证、授权与会话的三角关系

认证(Authentication)解决身份真实性问题,回答“你是谁”。常见手段包括用户名密码、短信验证码、数字证书、生物特征、 等。认证的产物是“身份凭证”,例如会话 ID 或令牌。

授权(Authorization)解决权限边界问题,回答“你能做什么”。授权发生在认证之后,决定某个已认证主体能否访问特定资源、执行特定操作。金融场景中,授权粒度往往要求到“模型版本 + 数据分区 + 操作类型”。

会话管理(Session Management)是认证结果的延续机制。传统 Web 使用服务端 Session,客户端只保存 Session ID;现代分布式服务更倾向无状态令牌,把状态编码进 JWT 或集中存储到 Redis。会话管理的关键是生命周期控制:创建、续期、失效、注销、并发控制。

一句话记忆:认证是“验身份”,授权是“查权限”,会话是“记住你”,令牌是“通行证”,OAuth2 是“授权框架”,OIDC 是“认证层”,JWT 是“令牌格式”,RBAC/ABAC 是“授权模型”。

二、方法流程:从 OAuth2 到 OIDC 再到 JWT

OAuth2 是一个授权框架,核心目标是让第三方应用在用户不暴露密码的前提下,获得对资源的有限访问权。它定义了四种角色:资源所有者、客户端、授权服务器、资源服务器,以及四种授权模式:授权码、隐式、密码、客户端凭证。金融模型服务推荐使用授权码模式 + PKCE,避免令牌在前端暴露。

OpenID Connect(OIDC)构建在 OAuth2 之上,补上了“认证”这一层。OIDC 引入 ID (一个 JWT),用于证明用户身份,并提供 UserInfo 端点。可以理解为:OAuth2 发“访问权限”,OIDC 发“身份证明”。

JWT(JSON Web )是一种令牌格式,由 Header、Payload、Signature 三部分组成,使用点号分隔。它自带声明(Claims),可携带用户 ID、角色、过期时间、签发者等信息。JWT 的优势是自包含、易校验;风险是无法主动撤销,因此必须配合短过期时间与刷新令牌。

# JWT 结构示例(解码后)
Header:  {"alg":"RS256","typ":"JWT"}
Payload: {"sub":"user_1024","role":"risk_analyst",
          "scope":"model:read model:run",
          "iss":"https://auth.finance.example.com",
          "exp":1735689600}
Signature: RS256(base64(header)+"."+base64(payload), privateKey)

三、授权模型:RBAC 与 ABAC 的取舍

RBAC(基于角色的访问控制)把权限赋予角色,再把角色赋予用户。结构清晰、易审计,适合岗位边界稳定的场景,例如“风控分析师”“模型审批人”“审计员”。缺点是角色爆炸:当权限需要按数据分区、时间、模型版本细分时,角色数量会迅速失控。

ABAC(基于属性的访问控制)通过主体属性、资源属性、环境属性和操作属性动态计算权限。例如:“仅当用户部门等于模型所属部门,且请求时间在工作时段,且模型风险等级低于 3 时,允许执行推理”。ABAC 表达力强,但策略复杂、调试成本高,需要完善的策略引擎与审计日志。

对比维度RBACABAC
授权依据角色属性与策略
粒度粗到中细
管理成本低高
动态性弱强
典型场景岗位权限数据分区、时段、风险等级
审计友好度高中,需要策略日志

实践建议:金融模型服务常采用 RBAC + ABAC 混合模型。用 RBAC 管理基础岗位权限,用 ABAC 处理数据分区、模型版本、审批状态等动态约束,兼顾可管理性与细粒度。

四、案例与场景:一次模型推理请求的鉴权链路

假设风控分析师 Alice 通过前端调用“信贷评分模型 v3”的推理接口。完整链路如下:

  1. Alice 在 OIDC 授权服务器完成登录,获得 ID 与 Access 。
  2. 前端携带 Access 调用模型网关。
  3. 网关校验 JWT 签名、过期时间、签发者,完成认证。
  4. 网关查询 RBAC:Alice 角色为 risk_analyst,拥有 model:run 权限。
  5. 策略引擎执行 ABAC:模型 v3 属于 Alice 所在部门,风险等级为 2,当前为工作时段,允许执行。
  6. 推理完成后,审计系统记录:主体、令牌 ID、模型版本、输入摘要、决策结果、时间戳。
模型推理请求:认证 → 授权 → 审计 链路 Alice 客户端 携带 Access OIDC 授权服务器 签发 ID/Access 模型网关 JWT 校验 / 认证 策略引擎 RBAC + ABAC 判定 模型服务 v3 执行推理 审计日志 主体/令牌/模型/结果 审计要素:who · when · what · model_version · decision · _id 满足金融合规追溯要求

五、误区与复盘

误区一:把 JWT 当 Session 用。JWT 无法主动撤销,若用户被禁用,旧令牌在过期前仍然有效。应设置短过期时间(如 15 分钟),配合刷新令牌与黑名单机制。

误区二:只做认证不做授权。很多接口只校验“令牌有效”,却不校验“该用户是否有权访问该模型”。金融场景必须做到接口级、数据级双重授权。

误区三:RBAC 角色设计过粗。例如“管理员”角色拥有全部权限,一旦泄露影响面巨大。应遵循最小权限原则,按岗位与数据分区拆分角色。

误区四:审计日志缺少令牌标识。只记录用户 ID,无法关联具体会话与令牌,出现安全事件时难以定位。应记录 _id、jti、签发时间与请求链路 ID。

复盘要点:认证、授权、会话、令牌、OAuth2、OIDC、JWT、RBAC、ABAC 不是孤立概念,而是一条从“身份确认”到“权限判定”再到“行为留痕”的完整链路。理解每个环节的职责边界,才能在金融模型服务中构建既安全又可审计的鉴权体系。