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 表达力强,但策略复杂、调试成本高,需要完善的策略引擎与审计日志。
| 对比维度 | RBAC | ABAC |
|---|---|---|
| 授权依据 | 角色 | 属性与策略 |
| 粒度 | 粗到中 | 细 |
| 管理成本 | 低 | 高 |
| 动态性 | 弱 | 强 |
| 典型场景 | 岗位权限 | 数据分区、时段、风险等级 |
| 审计友好度 | 高 | 中,需要策略日志 |
实践建议:金融模型服务常采用 RBAC + ABAC 混合模型。用 RBAC 管理基础岗位权限,用 ABAC 处理数据分区、模型版本、审批状态等动态约束,兼顾可管理性与细粒度。
四、案例与场景:一次模型推理请求的鉴权链路
假设风控分析师 Alice 通过前端调用“信贷评分模型 v3”的推理接口。完整链路如下:
- Alice 在 OIDC 授权服务器完成登录,获得 ID 与 Access 。
- 前端携带 Access 调用模型网关。
- 网关校验 JWT 签名、过期时间、签发者,完成认证。
- 网关查询 RBAC:Alice 角色为 risk_analyst,拥有 model:run 权限。
- 策略引擎执行 ABAC:模型 v3 属于 Alice 所在部门,风险等级为 2,当前为工作时段,允许执行。
- 推理完成后,审计系统记录:主体、令牌 ID、模型版本、输入摘要、决策结果、时间戳。
五、误区与复盘
误区一:把 JWT 当 Session 用。JWT 无法主动撤销,若用户被禁用,旧令牌在过期前仍然有效。应设置短过期时间(如 15 分钟),配合刷新令牌与黑名单机制。
误区二:只做认证不做授权。很多接口只校验“令牌有效”,却不校验“该用户是否有权访问该模型”。金融场景必须做到接口级、数据级双重授权。
误区三:RBAC 角色设计过粗。例如“管理员”角色拥有全部权限,一旦泄露影响面巨大。应遵循最小权限原则,按岗位与数据分区拆分角色。
误区四:审计日志缺少令牌标识。只记录用户 ID,无法关联具体会话与令牌,出现安全事件时难以定位。应记录 _id、jti、签发时间与请求链路 ID。
复盘要点:认证、授权、会话、令牌、OAuth2、OIDC、JWT、RBAC、ABAC 不是孤立概念,而是一条从“身份确认”到“权限判定”再到“行为留痕”的完整链路。理解每个环节的职责边界,才能在金融模型服务中构建既安全又可审计的鉴权体系。