自建方案 vs 云原生方案:什么时候该用自建Vault,什么时候直接上云服务?

这个话题,我几乎在每个客户那里都会被问到。说白了,这是个灵魂拷问:到底是我自己搭一套HashiCorp Vault,还是直接用云厂商的Secrets Manager?

我的答案从来都不是二选一。你想想看,一个跨国企业,可能AWS上跑着电商业务,Azure上挂着AD,GCP上做着AI训练。这时候你非要统一用一种方案,不是跟自己过不去吗?

下面这张图,是我这些年总结出来的决策框架。先有个整体印象,我们再细聊。

自建 vs 云原生 Secrets 决策框架 你的核心需求是什么? 需要自建 控制力 > 运维成本 合规:必须自持密钥 定制化:需要插件、 自定义引擎、审计 可变现资产: 构建内部平台 出问题能接受: 负责 SLA/P1 排障 上云服务 小团队:没精力搞运维 快速交付:两周内上线 云原生集成: EC2/Lambda 直接取 预算买服务 < 养团队 自动托管免运维 标准化需求: 跟随厂商最佳实践 结论:没有银弹,混合策略才是常态

核心决策因素:控制力 vs 运维成本

先说说最关键的判断依据。我个人习惯把它看作一道算术题:你愿意投入多少人手,去换取多大的控制权?

我在一个金融客户那里遇到过这样的情况:合规要求所有密钥必须由公司自有硬件生成、存储,连云厂商的HSM都不能用。你说这时候能用AWS Secrets Manager吗?不行。只能用自建Vault,后面接自己的HSM。这种情况下,控制力就是硬门槛,没得商量。

维度 SaaS 原生(AWS Secrets Manager) 托管 Vault(HCP Vault) 自建 Vault
运维投入 几乎为零 少量(升级、配置) 1-2 名专职 SRE
控制力 弱(厂商锁定) 中等 完全控制
定制化 无 有限(插件受限) 完全开放
合规灵活度 依赖厂商认证 依赖厂商 + 部分自控 全链条可审计
月度成本(1000条Secrets) 约 $400 约 $800 服务器 + 人力 ≈ $2000+
我的习惯:先看合规清单,再看预算。合规说「必须自持」,那就别想云服务了。预算养不起团队,那就别想自建了。

什么时候必须自建 Vault?

我用四个具体场景来说清楚。

1. 合规压着你,你必须控制密钥生命周期

比如 PCI-DSS、FedRAMP 或者你自己的内部审计要求。有些审计员明确要求「密钥的生成、轮换、销毁必须在客户自有环境中完成」。云厂商的托管服务虽然也有审计日志,但密钥其实还是在厂商的HSM里。审计员不认。

这时候自建 Vault,配合自有的 HSM 或 KMS,是唯一解。

2. 你需要高度定制

标准的 Secrets Manager 只支持静态密钥、自动轮转。但你的场景可能是:

  • 动态数据库凭证(每次连接自动生成临时用户)
  • SSH 证书自动签发
  • 自定义审计插件,把每一次访问记录写入自建的 SIEM

云厂商的服务不会给你这些能力。自建 Vault 的插件系统就是为了干这个的。

3. 你想把它做成公司的内部平台

我见过一个互联网公司,把所有基础设施的凭证、数据库密码、、MFA 全部交给自建 Vault,然后对外封装了一层 Web 控制台,给内部所有开发团队用。这就是把 Secrets 管理变成了可复用的平台能力。你用云服务很难做到这种「可变现资产」的程度。

4. 甚至你愿意为「出问题」负责

自建 Vault 意味着:

  • HA 架构你得自己搭
  • 灾备切换你得自己写脚本
  • 出故障了,你(或者你的团队)得凌晨爬起来修

如果你的团队有这个能力和觉悟,那就自建。否则,别勉强。

什么时候直接上云服务?

反过来,有些场景我觉得直接上云服务,省心省力,性价比很高。

1. 你只有一个小团队,甚至就你一个人

我接触过不少初创公司,整个 DevOps 就两三号人。这时候你去搭一套 Vault,从安装、配置、TLS、存储后端、HA、监控、升级……全走一遍,至少要一个月。而且你心里还没底:万一挂了怎么办?

不如直接买云服务,两天集成完,剩下的时间去搞业务。

2. 你的应用和云厂商深度绑定

如果你的应用全部跑在 AWS 上,EC2 自动从 Secrets Manager 拿 RDS 密码,Lambda 直接读 。那用 AWS Secrets Manager 是天作之合。

你再自建一个 Vault,还要考虑怎么打通 IAM 角色。这不是给自己找麻烦吗?

但要注意:如果你是多云架构(比如 AWS 和 GCP 混用),那单个云厂商的原生服务就不好使了。你不可能让 GCP 的 workload 去调 AWS Secrets Manager。这时候要么用自建 Vault 做统一抽象层,要么用第三方的多云 Secrets 平台。这是后几章的话题。

3. 你的预算逻辑是「买服务比养人划算」

算一笔简单的账:

  • AWS Secrets Manager: 每 10000 条密钥每月 $400,加上 API 调用费
  • 自建 Vault: 3 台 EC2(至少 c5.large),加上 RDS(存储后端),加上专职 SRE 一个人(年薪折合每月 30000?),每个月至少 35000+

当然,规模上去以后自建会更便宜。但如果你就管理几百几千条密钥,云服务是省钱的。

4. 你希望降低运维复杂度

你想想看,Vault 的存储后端选 consul 还是 raft?TLS 证书怎么自动续?性能达到瓶颈了该怎么扩?迁移版本时怎么保证不停服?

这些问题,用云服务全都不用担心。厂商帮你兜底了。对于很多非核心业务系统,这个「不用操心」本身就值回票价。

真正的艺术:混合策略

大多数成熟团队的最终方案,其实不是非黑即白。我就说说我在一个中型电商公司看到的真实案例:

  • 核心支付链路:自建 Vault + 自有 HSM,密钥 100% 自控,满足 PCI-DSS
  • 业务应用(RDS 密码、):AWS Secrets Manager,通过 Vault 的 AWS Secret Engine 动态生成并自动注入
  • 测试环境:直接用 AWS Parameter Store,便宜,不要求高可用

你看,三个场景三种方案。自建 Vault 作为中心控制平面,负责高安全需求的密钥;云服务处理大量低敏感、高频率的调用;Parameter Store 存非机密配置。这种分层的做法,兼顾了安全、成本和效率。

给团队的建议:别急着决定「全自建」还是「全上云」。先画一张矩阵图:横轴是业务重要性,纵轴是合规等级。左上角(高重要+高合规)放自建 Vault,右下角(低重要+低合规)直接用云服务。中间区域,用 Vault 的 Seal Wrap 和转发能力来衔接两者。

避坑指南:我踩过最大的坑

我曾经帮一家公司从自建 Vault 迁移到 AWS Secrets Manager。听起来很简单是吧?结果审计发现问题了:

  • 旧的 Vault 里有一些密钥是用 AES256-GCM 加密的,AWS 不支持这个算法
  • 还有一些密钥是动态生成的(每次读取都会改变),AWS Secrets Manager 只存静态值
  • 转过去以后,有些老应用的调用方式变了,需要改代码

整个迁移花了三个月,比预计多了一倍。所以我的教训是:不要先选工具,先列清楚你的密钥类型和消费方式。

另一个坑:有人用自建 Vault,但遭遇了集群脑裂(split-brain)。因为他们用了 consul 做存储后端,网络分区导致两个 Vault 节点都以为自己是主节点。结果密钥版本不一致,下游应用拿到的是过期密码,直接报 401 认证失败。

如果你要自建,请务必在存储后端上做对选型:

  • 小规模:用 raft(Vault 内置)
  • 大规模:用 consul 或 etcd,但要做好网络容错设计和备份策略
最后分享一个我最近在用的模式:用 Terraform 把自建 Vault 和一些云 Secrets 服务的管理封装成模块。这样,团队成员其实不用关心密钥存在哪里,他们只需要声明「我需要哪个密钥」,Terraform 自动判断走哪个后端。这种抽象,才是多云 Secrets 管理的终极形态。

总而言之,自建还是上云,没有标准答案。你得从控制力需求、运维能力、预算预算、合规等级四个维度去权衡。如果拿捏不定,就先找个最小的业务试点,走一遍从选型到上线的完整流程。嗯,试试看,你就知道适合自己了。