3. 身份凭证与密钥体系

身份权限治理的根基不是账号名,而是“凭证”。账号只是标识,真正决定一次访问能否被信任的,是请求方能否出示一份可验证的凭证。在密码服务体系中,凭证形态多样:数字证书、非对称密钥对、访问令牌、API密钥、数据库口令与各类秘密凭据。它们的安全属性、生命周期管理方式差异很大,若用同一套流程粗放管理,往往会在轮换、吊销环节留下缺口。

一、五类凭证的本质差异

理解生命周期机制前,先要区分它们“证明什么”。数字证书由CA签发,把公钥与主体身份绑定,靠签名链验证,适合机器身份、双向TLS、代码签名;密钥对是公私钥的集合,私钥是签名与解密能力的根源,证书只是公钥的载体;令牌(Token)通常是短期、可撤销的授权凭据,如OAuth 2.0的访问令牌、JWT,它承载的是“被授予的权限范围”,而非身份本身;API密钥是长期共享秘密,用于标识调用方并做简单鉴权,粒度粗、易泄露;秘密凭据是数据库口令、连接串、加密密钥等,通常需要被应用直接读取使用。

关键区别在于:证书和密钥对依赖密码学验证,令牌依赖签发方与校验方共享的信任,API密钥和秘密凭据则完全依赖“保密”。这决定了它们的轮换与吊销策略不能一刀切。

凭证生命周期:生成 → 分发 → 使用 → 轮换 → 吊销 → 销毁 生成 分发 使用 轮换 吊销/销毁 轮换后新凭证接替使用 数字证书 CA签发,公钥+身份 签名链验证 有效期:月~年 吊销:CRL / OCSP 密钥对 私钥签名/解密 公钥验签/加密 HSM/KMS托管 销毁:密钥材料清零 令牌 Token 短期授权凭据 JWT / OAuth 2.0 有效期:分~小时 吊销:撤销列表/短TTL API密钥 长期共享秘密 标识调用方 粒度粗,易泄露 轮换:双密钥并行 秘密凭据 数据库口令 连接串/加密密钥 应用直接读取 销毁:安全擦除 关键机制对照 生成: 证书走CSR+CA签发;密钥对在HSM/KMS内生成;令牌由授权服务器签发;API密钥用高熵随机数;秘密凭据由密钥管理系统生成。 分发: 证书/公钥可公开分发;私钥、API密钥、秘密凭据必须走加密通道,禁止明文邮件或代码硬编码。 轮换与吊销: 证书到期前自动续签;令牌靠短TTL+撤销列表;API密钥双活并行切换;秘密凭据由KMS动态下发。

二、生成:从源头控制强度与归属

生成环节决定了凭证的“先天安全”。数字证书的生成通常从CSR(证书签名请求)开始:应用或设备生成密钥对,私钥不出安全边界,只把公钥和主体信息封装成CSR提交给CA。以OpenSSL为例,一条典型的CSR生成命令如下:

openssl req -new -newkey rsa:3072 -nodes \
  -keyout device.key -out device.csr \
  -subj "/C=CN/O=Acme/CN=device-001.example.com"

这里rsa:3072表示密钥长度,-nodes表示私钥不加密(仅适合在受控环境临时使用,生产环境应加密或交由HSM生成)。CSR提交后,CA验证主体身份并签发证书,证书中会包含有效期、序列号、扩展密钥用法等字段。

密钥对的生成应优先在HSM或KMS内部完成,私钥永不以明文形式离开硬件边界。令牌由授权服务器签发,应包含签发者、主体、受众、过期时间、权限范围等声明。API密钥和秘密凭据则必须使用密码学安全随机数生成,长度建议不低于128位熵,避免使用可预测的字符串拼接。

三、分发:最小暴露面

分发是凭证最容易泄露的环节。原则是:能公开的公开,不能公开的走加密通道且尽量缩短暴露时间。证书和公钥可以公开分发;私钥、API密钥、秘密凭据必须通过加密通道传递,并尽量采用“拉取”而非“推送”模式——应用启动时从KMS或密钥管理服务按需获取,而不是把密钥写进配置文件或镜像。

对于API密钥,常见做法是只在创建时展示一次,服务端只存储其哈希值或加密后的密文。对于秘密凭据,应使用动态秘密机制:每次应用实例启动时,由密钥管理系统生成一份短期有效的数据库凭据,实例销毁后凭据自动失效。这样即使凭据泄露,攻击窗口也被压缩到分钟级。

四、轮换:让泄露窗口可控

轮换的核心目标是:即使某份凭证已经泄露但尚未被发现,也能通过定期更换把它变成废纸。不同凭证的轮换节奏差异很大:

  • 数字证书:有效期通常为90天到1年,建议在到期前1/3时间点自动续签,避免集中到期引发故障。
  • 令牌:访问令牌有效期通常为15分钟到1小时,刷新令牌为数天到数周,靠短TTL天然实现“准轮换”。
  • API密钥:建议每90天轮换一次,采用双密钥并行策略——先启用新密钥,确认调用方切换完成后再禁用旧密钥。
  • 秘密凭据:数据库口令建议每30到90天轮换,或直接采用动态秘密,每次连接生成新凭据。

轮换必须可编排、可回滚。以API密钥双活切换为例,操作顺序是:生成新密钥并同时启用新旧两把;通知或自动更新调用方配置;观察旧密钥调用量归零;最后禁用并删除旧密钥。若跳过“观察归零”直接禁用,可能造成调用方中断。

五、吊销与销毁:终止信任的两种方式

吊销是“提前终止凭证的有效性”,销毁是“让凭证材料不可恢复”。证书吊销依赖CRL(证书吊销列表)或OCSP(在线证书状态协议),但两者都存在传播延迟,因此短有效期证书正逐渐取代频繁吊销。令牌吊销依赖授权服务器的撤销列表或短TTL,JWT一旦签发,在过期前无法真正撤回,只能靠短有效期和撤销列表兜底。

密钥对的销毁必须确保私钥材料被安全擦除,而不是简单删除文件。在HSM中应调用密钥销毁接口,使密钥句柄和底层存储均不可恢复。API密钥和秘密凭据的销毁则是从密钥管理系统中删除记录,并确认所有引用方已切换。销毁后应保留审计日志,记录销毁时间、操作人和凭证标识,但日志本身不得包含凭证明文。

常见误区:把“删除配置文件中的密钥”当作销毁。文件删除后数据仍可能残留在磁盘、备份或日志中。真正的销毁需要覆盖写、加密擦除或HSM密钥销毁,并确认备份与副本同步清理。

六、一张可执行的轮换检查清单

以下清单可直接用于API密钥或秘密凭据的轮换操作,字段和判断依据均围绕凭证生命周期设计:

检查项判断依据不通过时的处理
新凭证已生成并登记密钥管理系统中有唯一标识、创建时间、负责人补登记,禁止无主凭证
新旧凭证并行可用调用方使用新凭证成功,旧凭证仍可回退暂不禁用旧凭证,排查调用方配置
旧凭证调用量归零监控面板中旧凭证的调用计数连续24小时为0联系调用方确认,延长观察期
旧凭证已禁用并删除密钥管理系统中状态为“已销毁”,无残留副本执行安全擦除,检查备份与日志
审计日志完整记录轮换时间、操作人、凭证标识、结果补录日志,日志中不得含凭证明文

凭证治理的难点不在单点技术,而在“全生命周期的一致性”。生成时控制强度,分发时压缩暴露面,使用时监控异常,轮换时保证平滑,吊销和销毁时确保不可恢复——每一步都需要与身份权限系统联动,才能让凭证真正成为可信的访问依据,而不是治理链条上最薄弱的一环。