3. 身份凭证与密钥体系
身份权限治理的根基不是账号名,而是“凭证”。账号只是标识,真正决定一次访问能否被信任的,是请求方能否出示一份可验证的凭证。在密码服务体系中,凭证形态多样:数字证书、非对称密钥对、访问令牌、API密钥、数据库口令与各类秘密凭据。它们的安全属性、生命周期管理方式差异很大,若用同一套流程粗放管理,往往会在轮换、吊销环节留下缺口。
一、五类凭证的本质差异
理解生命周期机制前,先要区分它们“证明什么”。数字证书由CA签发,把公钥与主体身份绑定,靠签名链验证,适合机器身份、双向TLS、代码签名;密钥对是公私钥的集合,私钥是签名与解密能力的根源,证书只是公钥的载体;令牌(Token)通常是短期、可撤销的授权凭据,如OAuth 2.0的访问令牌、JWT,它承载的是“被授予的权限范围”,而非身份本身;API密钥是长期共享秘密,用于标识调用方并做简单鉴权,粒度粗、易泄露;秘密凭据是数据库口令、连接串、加密密钥等,通常需要被应用直接读取使用。
关键区别在于:证书和密钥对依赖密码学验证,令牌依赖签发方与校验方共享的信任,API密钥和秘密凭据则完全依赖“保密”。这决定了它们的轮换与吊销策略不能一刀切。
二、生成:从源头控制强度与归属
生成环节决定了凭证的“先天安全”。数字证书的生成通常从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 | 联系调用方确认,延长观察期 |
| 旧凭证已禁用并删除 | 密钥管理系统中状态为“已销毁”,无残留副本 | 执行安全擦除,检查备份与日志 |
| 审计日志完整 | 记录轮换时间、操作人、凭证标识、结果 | 补录日志,日志中不得含凭证明文 |
凭证治理的难点不在单点技术,而在“全生命周期的一致性”。生成时控制强度,分发时压缩暴露面,使用时监控异常,轮换时保证平滑,吊销和销毁时确保不可恢复——每一步都需要与身份权限系统联动,才能让凭证真正成为可信的访问依据,而不是治理链条上最薄弱的一环。