3、密钥类型与适用场景
密钥不是越复杂越好,选对类型比选对算法更重要。我见过不少团队盲目上非对称加密,结果把轮换流程搞得一团糟。
这一节帮你理清每种密钥该用在哪。你想想看,要是对称密钥拿去签名,非对称密钥当密码存——那基本是给自己挖坑。
对称密钥
说白了就是一把钥匙开一把锁。加密和解密用同一个密钥,快,但分发和保护是老大难。
- 适用场景:静态数据加密(比如数据库列加密、全盘加密)、大流量传输加密(TLS 中的对称会话密钥)。
- 不适用:数字签名、非对抗环境下的密钥交换。
- 我常用的算法:AES-256-GCM,带认证加密,省得再单独算 HMAC。
典型用例:对象存储里的加密,K8s Secret 的 etcd 加密,都是对称密钥干的活。
我个人习惯对称密钥每 90 天轮换一次。但如果是短生命周期的容器场景,可以跟着 Pod 销毁重建,按天轮换也没问题。
非对称密钥
公钥私钥成对出现。公钥可以随便扔,私钥必须锁好。每次加密解密都慢,所以不碰大块数据。
- 适用场景:数字签名(CI/CD 代码签名、JWT 签发)、密钥交换(TLS 握手)、身份认证(SSH 无密码登录)。
- 轮换痛点:私钥泄露要吊销并重新分发公钥。我在项目中遇到过,500 个微服务同时更新公钥,差点把配置中心打挂。
避坑指南:我曾经把 RSA-2048 私钥当成 存进环境变量——结果审计时发现私钥被 CI 日志打印出来了。记住:非对称私钥必须用 HSM 或密钥管理服务托管,别裸跑在代码里。
X.509 证书
本质是非对称密钥的包装器。里面的公钥和主体信息由 CA 背书,形成信任链。每个证书都有有效期,过期就是废纸。
- 适用场景:mTLS 通信、服务间身份验证、Web 服务器 HTTPS。
- 轮换策略:我建议证书有效期压到 90 天以内,用 ACME/Let's Encrypt 自动续期。以前三年期的证书,忘记轮换被运维追着骂。
短寿命证书是趋势。我在给一家金融客户做架构时,强制所有内部 mTLS 证书 ≤ 30 天,配合 cert-manager 自动轮换,运维事故直接降到零。
用一串随机字符串代替密码,简单粗暴。但很多团队把 当万能钥匙,泄露了只能全量重置。
- 适用场景:服务间轻量级认证、第三方 API 调用鉴权、客户端 SDK 身份标识。
- 禁忌:我用 一定配合 IP 白名单或请求签名(HMAC),否则相当于裸奔。
- 轮换方式:支持双密钥滚动——旧 Key 过期前 24 小时允许新旧同时通过,前端无缝切换。
个人经验:我设计过一套 轮换系统,Key 携带有效期,后台每分钟扫一次过期 Key 自动吊销。上线后安全告警降了 70%。
数据库密码
虽然可能不算严格意义上的“密钥”,但它在自动化轮换里出镜率最高。别忘了数据库密码大多是人机共用的,轮换起来特别麻烦。
- 适用场景:应用程序连接数据库、DBA 日常登录。
- 轮换挑战:改了密码应用就得重启?不。动态密码、连接池重建、服务熔断……我用 DynamoDB + Lambda 做密码自动旋转,把修改注入到 RDS Proxy 里,应用无感。
我曾经踩过的坑:直接改数据库密码,结果连接池里的旧连接没释放,应用阻塞了半小时。现在轮换前一定先检查连接池空闲超时时间,留足缓冲。
SSH 密钥
服务器钥匙串。单个用户一个密钥对,公钥放 authorized_keys,私钥随身带。轮换频率通常很低,但一旦私钥泄露就得全员换锁。
- 适用场景:服务器运维登录、Git 操作认证、自动化 CI/CD 对远端机器的访问。
- 自动化轮换:我建议用 SSH CA(比如 Vault 的 SSH Secrets Engine)签发短寿命证书,代替静态密钥对。证书过期自动失效,省去吊销麻烦。
如果还在用 password-based SSH,赶紧换成密钥+双因素。我在项目里推广 SSH CA 后,运维再也不用满世界找 authorized_keys 了。
各类型对照一览
| 密钥类型 | 核心特点 | 典型轮换周期 | 我推荐的工具链 |
|---|---|---|---|
| 对称密钥 | 快,单密钥 | 90 天 / 随应用生命周期 | AWS KMS / HashiCorp Vault |
| 非对称密钥 | 公钥分发,私钥保护 | 1 年 / 泄露即换 | GCP Cloud KMS / Azure Key Vault |
| X.509 证书 | CA 背书,链式信任 | 30-90 天 | cert-manager / ACME |
| 简短字符串,易泄露 | 按需 / 最长 6 个月 | API Gateway + Lambda 旋转函数 | |
| 数据库密码 | 人机共用,轮换难 | 30 天 / 动态密码 | Vault Database Secrets Engine |
| SSH 密钥 | 静态公钥管理繁琐 | 证书制 24 小时 / 静态按季度 | Vault SSH CA / Teleport |
密钥类型与场景关系图
下面这张图把六类密钥和它们的核心使用场景串起来。你看一眼就能知道在什么场合该掏什么钥匙。
这张图我每次带新人看密钥体系都会贴出来。核心就一点——对称管加密,非对称管签名和握手,证书管信任, 管轻量鉴权,密码管数据库,SSH 管登录。
记住:没有万能的密钥类型。选型时先问自己三个问题:这个密钥要给谁用?怎么分发?坏了怎么换? 想清楚再动手,后面自动化轮换才会顺。