第3章:常见云厂商 Secrets 服务介绍

做多云Secrets统一接管,你首先得知道各家的“原配”长什么样。说白了,就是AWS、Azure、GCP、阿里云它们各自自带的那个“保险柜”。

我见过不少团队,一上来就想搭一个统一的平台,结果连自家云上有啥能力都没摸清。最后搞出来的方案,要么重复造轮子,要么跟云原生生态脱节。今天这章,我们就把主流云厂商的Secrets服务拉出来遛遛。

我个人习惯先看产品的核心定位,再看它能跟什么服务“原生配合”。你想想看,一个Secrets服务如果跟你用的计算服务都集成了,你干嘛还要自己去写SDK?

常见云厂商 Secrets 服务架构对比 AWS Secrets Manager • 自动轮换RDS • 与Lambda深度集成 • 细粒度IAM权限 Azure Key Vault • 硬件安全模块(HSM) • 托管HSM高级版 • 与AD/AKS集成 GCP Secret Manager • 版本管理原生支持 • IAM条件绑定 • 审计日志全链路 阿里云 KMS • 密钥全生命周期 • 凭据托管集成 • 自动轮转策略 多云 Secrets 统一接管层 核心差异 API风格 / 权限模型 / 轮换机制 / 计费方式 统一抽象层需兼容上述差异

3.1 AWS Secrets Manager

AWS家的Secrets Manager,是我接触最早的云原生秘钥服务。当时我还觉得,这不就是存个密码嘛,能玩出什么花来?结果用上之后才发现,它跟RDS的自动轮换机制是真的省心。

核心能力:

  • 自动轮换:内置对RDS、Redshift、DocumentDB的轮换模板。我曾经帮一个客户把数据库密码轮换周期从人工30天改成自动7天,运维压力直接减半。
  • 细粒度权限:通过IAM Policy,你可以精确控制谁可以读哪个Secret的哪个版本。
  • 跨账户共享:使用Resource-based Policy,可以跨AWS账号授权。

但这里有个坑——计费。AWS Secrets Manager是按API调用次数收费的。我记得有个团队把Secret读到内存后,每次请求都去调用SDK取一次,一个月下来账单吓人。

我曾经... 见过一个案例:某创业公司在AWS上跑了300个微服务,每个服务启动时都去Secrets Manager拉配置,结果一个月API调用费比计算费还高。后来改成启动时拉一次+本地缓存120秒,费用降了90%。

3.2 Azure Key Vault

Azure Key Vault(简称AKV)给我的第一印象是——它不仅仅是一个Secrets服务,更像是一个“钥匙总管”。它把密钥、证书、机密分成了三类独立的资源类型。

几个值得说的点:

  • 硬件安全模块(HSM):AKV提供了两种SKU——Standard(软件加密)和Premium(HSM-backed)。如果业务有合规要求,比如PCI-DSS,那HSM基本上没得选。
  • 托管HSM:这是Azure的一个“隐藏大招”。它让你拥有一个独享的HSM池,密钥连Azure自己都看不到。我参与过一个金融项目,合规要求密钥必须“离云”管理,托管HSM就是唯一选项。
  • 与Azure生态的集成:AKV天然跟Azure AD、AKS(Kubernetes)、VM Extension、App Service打通。你甚至在ARM模板里就能引用Key Vault里的值。

说实话,Azure Key Vault的权限模型稍微复杂一些。它有访问策略(Access Policy)和Azure RBAC两套体系。我个人习惯统一用RBAC,这样跟其他Azure资源的管理方式一致。

一个小技巧: 如果你在AKS上用Secrets Store CSI Driver,把Key Vault挂载成Pod的卷,就不用在YAML里写敏感信息了。我这边有几个集群就是这么干的,安全审计直接给满分。

3.3 GCP Secret Manager

GCP的Secret Manager是三者中最“简单”的——API设计得很干净,概念少,学习曲线低。但这不代表它能力弱。

特性 说明 我的经验
版本管理 每个Secret有多个版本,可以启用/禁用/销毁特定版本 回滚操作非常快,直接enable旧版本即可
IAM条件绑定 可以基于资源标签、时间、IP等条件控制访问 配合VPC Service Controls,能实现零信任网络
审计日志 所有读写操作写入Cloud Audit Logs 有一次排查泄漏事件,全靠日志追踪到具体服务账号
复制策略 支持多区域复制,提升可用性 注意跨区域复制会产生额外网络费用

GCP Secret Manager有一个我很喜欢的设计:它不强制轮换。你需要自己通过Cloud Scheduler + Cloud Functions实现自动化轮换。这给了你更多灵活性,但也意味着你要自己负责轮换逻辑的健壮性。

避坑指南: GCP Secret Manager的list操作默认只返回元数据,不返回Secret值。想批量获取值时,需要逐个调用access API,这对高并发场景不友好。我建议使用缓存层或者把多个Secret打包成一个JSON存进去。

3.4 阿里云 KMS & 凭据管家

阿里云的KMS(Key Management Service)核心是密钥管理,而凭据管家是它上面一层专门管Secrets的服务。这个设计跟GCP有点类似,但更强调“凭据”的概念。

凭据管家的主要能力:

  • 支持数据库密码、、SSH密钥等常见的Secret类型。
  • 自动轮转:目前支持RDS MySQL、Redis等常用数据库。
  • 与RAM权限集成:通过RAM Policy控制谁可以访问哪个凭据。

说实话,阿里云的这套体系在国内云厂商里算是比较成熟的。我在一个国内电商项目里用过,它的KMS跟容器服务ACK(Kubernetes)做了csi-secrets-store-driver的集成,部署起来很顺畅。

但有一点需要注意:区域隔离。阿里云的KMS和凭据管家是区域级别的服务,不能跨Region直接访问。如果你的业务部署在多区域,需要在每个Region都创建一份凭据,然后通过同步工具或统一控制面来管理。

一个小建议: 如果是全球化业务,使用阿里云时最好在“中心Region”(如新加坡)部署一个统一凭据管理服务,其他Region通过私网连接访问,而不是在每个Region都创建副本。这样管理起来省心很多。

3.5 核心差异对比

上面讲完了各家的情况,你可能更关心它们到底有什么核心差异。下面这个表是我根据自己的经验整理的,供你参考。

对比维度 AWS Secrets Manager Azure Key Vault GCP Secret Manager 阿里云 KMS+凭据管家
API风格 JSON + HTTPS REST + Graph gRPC/REST REST + SDK
内置轮换 强(RDS原生) 中(需Function触发) 弱(需自行实现) 中(RDS部分支持)
HSM支持 CloudHSM集成 原生托管HSM Cloud HSM集成 KMS支持HSM
权限模型 IAM + Resource Policy Access Policy + RBAC IAM + Conditions RAM + KMS Policy
多区域复制 手动或借助备份 不支持原生复制 支持多区域副本 不支持原生复制
计费模式 API次数 + 存储 操作次数 + HSM费用 API次数 + 存储 操作次数 + 密钥数量

你看,每家都有自己的“杀手锏”。AWS轮换做得最好,Azure HSM最硬核,GCP API最简洁,阿里云在国内生态集成最全。统一接管要考虑的,就是如何在保持各自优势的前提下,构建一个公共的管理面。

我的实践建议: 如果你在使用多云环境,不要试图让所有云厂商用同一套API。这不是技术问题,而是策略问题。统一接管层应该是一个适配器,把各家的特性暴露给上层应用,而不是抹平差异。比如AWS的自动轮换就用AWS的API,GCP的版本管理就用GCP的API,上层只需要知道“我的Secret在哪”就行。