OpenBao 介绍与选型指南
OpenBao 软件概述、核心架构、功能特性、快速开始与同类选型对比:基于 Ubuntu 22.04 与 OpenBao v2.7.1 实测,含许可变更背景与选型矩阵。
OpenBao 介绍与选型指南
目标:讲清楚 OpenBao 是什么、从哪来、能做什么、不能做什么,并给出与同类组件的选型对比;全文命令与输出均在 Ubuntu 22.04 + OpenBao v2.7.1 环境实测通过。
一、环境信息
本篇所有实测在以下环境中完成,读者复现时版本对齐即可:
- 操作系统:Ubuntu 22.04 LTS(x86_64)
- OpenBao:v2.7.1(commit
a5db72cef75c24b920ade02065b18dd8eb666bac,提交时间 2026-10-01) - bao CLI:官方 zip 包安装至
/usr/local/bin/bao(安装方式见第五节快速开始) - 服务地址:
http://127.0.0.1:8200(默认端口 8200) - 数据目录:
/opt/data/openbao/file(本地持久化存储后端) - 生态数据(stars、发布时间等)查询日期:2026-10-17,来源 GitHub 官方仓库 API
版本验证命令与实测回显:
bao version
OpenBao v2.7.1 (a5db72cef75c24b920ade02065b18dd8eb666bac), committed 2026-10-01T15:32:54Z
二、软件概述
2.1 一句话定位
OpenBao 的官方自述是:"OpenBao is a software solution to manage, store, and distribute sensitive data including secrets, certificates, and keys."——一个用于管理、存储和分发敏感数据(密钥、证书、加密密钥)的开源软件,即"集中式密钥与加密管理平台"。
2.2 出身:HashiCorp Vault 的开源分支
OpenBao 的历史背景是理解它的重要前提,时间线如下(均为公开事实):
| 时间 | 事件 |
|---|---|
| 2023-08-10 | HashiCorp 宣布将旗下产品(含 Vault)的许可从 MPL-2.0 改为 BSL 1.1(Business Source License,非开源许可) |
| 2023-08 | 由多家公司与社区开发者宣布从 Vault 最后一个 MPL-2.0 版本(Vault 1.14 分支)创建开源分支 OpenBao,继续以开源许可演进 |
| 2023-11-09 | GitHub openbao/openbao 仓库建立,项目交由 LF Edge 基金会(Linux 基金会下属项目)托管治理 |
| 2024-07-17 | OpenBao 首个 GA 大版本 v2.0.0 发布 |
| 2026-10-01 | 本文实测版本 v2.7.1 发布 |
💡 说明:许可变更背景如实记录——Vault 自 1.15 起采用 BSL 1.1,对多数使用场景免费但对云厂商转售有约束;OpenBao 则延续 MPL-2.0 完全开源许可,并由中立基金会(LF Edge)治理,这是两者最根本的差异。上述许可与治理信息可从两个仓库的 LICENSE 文件与官方公告核实。
2.3 许可与社区活跃度(实查数据,查询日期 2026-10-17)
| 维度 | 数据 |
|---|---|
| 源码许可 | MPL-2.0(GitHub license 识别结果:MPL-2.0) |
| 治理归属 | LF Edge 基金会 |
| GitHub Stars | 8,484 |
| GitHub Forks | 633 |
| 开放 Issue 数 | 319 |
| 开发语言 | Go |
| 首个 GA 版本 | v2.0.0(2024-07-17 发布) |
近期发布节奏(GitHub Releases 实查):v2.6.0(2026-07-14)→ v2.6.1(2026-07-22)→ v2.6.2(2026-08-18)→ v2.7.0(2026-09-23)→ v2.6.3 与 v2.7.1(2026-10-01 同日发布)。可见其采用双线维护(2.6 补丁线 + 2.7 特性线),发布节奏约每月一次,补丁响应速度快。
三、核心架构
OpenBao 是单进程服务端(bao server)+ CLI 客户端(bao)+ HTTP API 的架构,核心概念如下:
| 组件 | 职责 |
|---|---|
| Barrier(屏障) | 服务端最外层的加密层:所有进入存储后端的数据都会先经过 AES-256-GCM 加密,存储后端里落盘的永远是密文 |
| Seal(封印) | 保护 barrier 主密钥(根密钥)的机制。主密钥本身被 Shamir 分片或云 KMS(auto-unseal)保护,服务启动后必须"解封"才能服务 |
| Storage Backend(存储后端) | 持久化密文的存储引擎,本地持久化用 pebbledb,生产高可用推荐集成 Raft,另有 Consul 等外部后端 |
| Secrets Engine(密码引擎) | 挂载在某个路径下的"密码学服务":K/V(静态密钥)、PKI(证书签发)、Transit(加解密即服务)、Database(动态数据库凭据)等 |
| Auth Method(认证方式) | 客户端身份验证方式:token、userpass、LDAP、AppRole、OIDC 等 |
| Policy / ACL | 基于 HCL 的访问控制策略,精确到路径与能力(read/write/list/delete…) |
| Expiration Manager(租约管理) | 为动态凭据与 token 管理租约(lease):到期自动回收,支持续约与主动吊销 |
| Audit Device(审计设备) | 将每次请求的审计记录写入文件/syslog,内容加密哈希防篡改 |
| HTTP API / CLI / UI | 同一套能力的三种访问面:REST API(8200 端口)、bao 命令行、内置 Web UI |
💡 技术拓展:Seal(封印)方式不止本文的 Shamir 分片一种,常见方式对比——
封印方式 原理/特点 适用场景 Shamir 分片(默认) 根密钥被拆成 N 个分片、凑齐 T 片才能还原 不依赖外部系统,人工治理密钥 云 KMS auto-unseal 根密钥外包给 AWS KMS/GCP KMS/Azure KeyVault 等,启动自动解封 云上自动化部署、减少人工解封 Transit auto-unseal 由另一个 OpenBao/Vault 实例的 transit 引擎解封 多集群级联管理 PKCS#11(HSM) 由硬件加密机保护根密钥 金融/强合规场景(v2.7 起以外部插件提供) 单机快速上手用默认 Shamir;生产自动化程度要求高时选 auto-unseal。本文实测采用默认 Shamir 分片。
💡 技术拓展:存储后端也有多种选择,常见选项对比——
后端 原理/特点 适用场景 pebbledb 本地嵌入式 LSM 存储,持久化、非 HA(v2.7 起替代已移除的 file 后端) 单机、测试、边缘部署 raft(集成存储) 内置 Raft 协议,多节点自动选主、支持快照备份 生产首选,无需外部依赖 consul 依赖外部 Consul 集群 已有 Consul 的存量架构 inmem 内存存储,重启即失 开发体验(dev 模式即此) 注意:OpenBao v2.7.0 已移除 file 存储后端(官方 CHANGELOG:
command/server: Remove file storage backend support),本地持久化场景官方默认配置已改为 pebbledb。本文实测环境即使用 pebbledb。
四、功能特性
下表为本篇实测过(或明确实查)的功能清单,实测环境为 Ubuntu 22.04 + OpenBao v2.7.1:
| 功能 | 说明 | 实测结论 |
|---|---|---|
| K/V v2 版本化存储 | 密钥多版本、回滚、软删除/恢复、彻底销毁 | 实测通过:写入 v1→v3,-version 读历史、rollback 生成新版本、destroy 后元数据标记 destroyed: true |
| Shamir 封印/解封 | init 产出 N 片密钥、凑 T 片解封 | 实测通过:5 分片阈值 3,三次解封成功,封印后 API 拒绝服务 |
| ACL 策略 | HCL 策略精确控制路径与能力 | 实测通过:受限 token 读写被拒路径返回 HTTP 403 permission denied |
| userpass 认证 | 本地用户名密码认证 | 实测通过:登录签发 token,策略正确附加 |
| Transit 加解密 | 加解密即服务,密钥不出服务端 | 实测通过:AES-256-GCM 加解密往返成功 |
| 动态数据库凭据 | 按需生成数据库账号,随租约回收 | 实测通过:租约 renewable: true,renew 延长、revoke 后立即失效 |
| PKI 证书签发 | 内置 CA 与角色化证书签发 | 实测通过:内部根 CA 签发服务端证书(注:v2.7.1 中 PKI 签发不再生成租约,证书吊销走 CRL/serial 路径) |
| Token 租约管理 | token/lease 的 renew 与 revoke | 实测通过:-increment 续约生效,revoke 后立即 403 |
| HTTP API | 全功能 REST API | 实测通过:curl 携带 X-Vault-Token 头读写成功 |
| Web UI | 8200 端口内置管理界面 | 已开启(配置 ui = true),浏览器访问验证 |
dev 模式启动后的默认挂载表实测回显(可见基础引擎集合):
bao secrets list
Path Type Accessor Description
---- ---- -------- -----------
cubbyhole/ cubbyhole cubbyhole_838ca962 per-token private secret storage
identity/ identity identity_e2635d2b identity store
sys/ system system_670a41b8 system endpoints used for control, policy and debugging
⚠️ 注意:v2.7.1 中无论 dev 模式还是全新初始化的正式模式,都不再自动挂载
secret/(实测secrets list只有cubbyhole/、identity/、sys/三项),K/V 引擎需要手动bao secrets enable -path=secret kv-v2开启(实测确认,见快速开始与部署指南篇)。
五、快速开始
本节给出 0→1 最小可用路径:安装 bao CLI → dev 模式启动 → 读写第一条密钥。
5.1 安装 bao CLI(官方 zip 包)
官方推荐用 GitHub Releases 的 zip 包安装,二进制为静态链接,无任何依赖:
cd /tmp
curl -LO https://github.com/openbao/openbao/releases/download/v2.7.1/bao_2.7.1_linux_amd64.zip
# 校验:下载同一 release 页的 SHA256SUMS 文件进行比对(bao_2.7.1_SHA256SUMS)
unzip -o bao_2.7.1_linux_amd64.zip
sudo install -m 0755 bao /usr/local/bin/bao
bao version
实测回显:
OpenBao v2.7.1 (a5db72cef75c24b920ade02065b18dd8eb666bac), committed 2026-10-01T15:32:54Z
⚠️ 注意:内网服务器若无法直连 GitHub Releases,可在有网机器下载 zip 与 SHA256SUMS 后离线拷贝安装;务必校验 sha256 再替换系统路径中的二进制。
5.2 dev 模式启动(体验用,数据不落盘)
dev 模式一条命令起服务:自动初始化、自动解封、内存存储、单分片单阈值,并直接打印 Unseal Key 与 Root Token:
bao server -dev -dev-listen-address=0.0.0.0:8200
实测启动横幅(输出节选,实测首尾):
==> OpenBao server configuration:
Api Address: http://0.0.0.0:8200
Cgo: disabled
Cluster Address: https://0.0.0.0:8201
Go Version: go1.27.1
Listener 1: tcp (addr: "0.0.0.0:8200", cluster address: "0.0.0.0:8201", max_request_duration: "1m30s", max_request_json_memory: "34078720", max_request_json_strings: "1000", max_request_size: "33554432", tls: "disabled")
Log Level:
Recovery Mode: false
Storage: inmem
Version: OpenBao v2.7.1, committed 2026-10-01T15:32:54Z
Version Sha: a5db72cef75c24b920ade02065b18dd8eb666bac
==> OpenBao server started! Log data will stream in below:
...(中间为滚动日志行,此处保留首尾节选)...
The unseal key and root token are displayed below in case you want to
seal/unseal the Vault or re-authenticate.
Unseal Key: Ygne6VQzgq3knwdb3BbP…(已脱敏)
Root Token: dev-root-token-123456
Development mode should NOT be used in production installations!
⚠️ 注意:dev 模式默认只监听
127.0.0.1:8200,若需要从其他地址访问(实测中端口转发后连不上的典型原因)必须显式加-dev-listen-address=0.0.0.0:8200。dev 模式的 root token 可用-dev-root-token-id=dev-root-token-123456固定,便于客户端复测。
5.3 验证服务与读写第一条密钥
另开一个终端,指定地址与 token:
export BAO_ADDR=http://127.0.0.1:8200
export BAO_TOKEN=dev-root-token-123456
bao status
实测回显:
Key Value
--- -----
Seal Type shamir
Initialized true
Sealed false
Total Shares 1
Threshold 1
Version 2.7.1
Commit Date 2026-10-01T15:32:54Z
Storage Type inmem
Cluster Name vault-cluster-bd8c0c11
Cluster ID 52aa1817-57c4-1c0a-7b8a-73e56e766d5f
HA Enabled false
读写密钥:
bao kv put secret/demo app=openbao env=dev
bao kv get secret/demo
实测回显(put):
== Secret Path ==
secret/data/demo
======= Metadata =======
Key Value
--- -----
created_time 2026-10-17T09:12:02.939131001Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1
实测回显(get):
== Secret Path ==
secret/data/demo
======= Metadata =======
Key Value
--- -----
created_time 2026-10-17T09:12:02.939131001Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 1
=== Data ===
Key Value
--- -----
app openbao
env dev
到这里最小可用路径完成。生产形态(pebbledb 持久化 + 5 分片封印 + 初始化/解封全流程)请见《OpenBao Docker Compose 部署指南》,机制原理与更多实测请见《OpenBao 2.7.1 核心原理详解》。
六、适用场景与限制
6.1 典型适用场景
- 集中式静态密钥管理:把数据库密码、API Key、证书私钥从配置文件/环境变量收敛到 OpenBao,按应用授予最小读权限。
- 动态数据库凭据:应用不持有固定数据库账号,每次按需签发短租约账号,到期/吊销自动回收(实测见原理篇租约一节)。
- 加解密即服务(transit):业务系统只存密文,密钥与加解密都收敛在 OpenBao,密钥永不出服务端(实测见原理篇)。
- 内部 CA 与证书签发(pki):为内部服务签发短有效期 TLS 证书,替代手工管理长证书。
- CI/CD 与多环境凭据分发:以 token/策略为边界,向流水线、作业注入最小权限凭据。
6.2 已知限制与选型注意(v2.7.1 实查)
- file 存储后端已移除:v2.7.0 起
storage "file"不再支持,实测配置后报unknown storage type file;本地持久化请用官方默认的 pebbledb,生产高可用用 raft。 - mlock 支持已移除:v2.7.1 配置中出现
disable_mlock = false会直接拒绝启动,实测报错OpenBao has dropped support for mlock. Please remove the line "disable_mlock" = false ... and disable or encrypt swap instead;内存锁改由系统层面(关闭 swap 或加密 swap)保障。 operator rekey已废弃:实测返回 405(旧端点默认禁用),官方替代命令为bao operator rotate-keys。- 全新初始化无默认
secret/挂载:需手动启用 K/V 引擎(见四节注意事项)。 - Shamir 解封是人工流程:每次重启/封印都需要凑齐阈值分片人工解封,无人值守场景应评估 auto-unseal。
- dev 模式严禁生产使用:内存存储、自动解封、固定 root token,仅限体验与联调。
- 部分内置组件转为外部插件:v2.7.0 起内置 HSM/PKCS#11 封印、Kerberos/LDAP/RADIUS 认证等从主二进制移出(官方 CHANGELOG),升级前需核对所用能力是否需要额外安装插件。
七、同类选型对比
围绕"密钥管理"这个题目,业界常见四类工具的定位差异很大,先给一屏总览再给选型建议:
| 维度 | OpenBao | HashiCorp Vault | Vaultwarden | sops |
|---|---|---|---|---|
| 定位 | 通用密钥与加密管理平台(服务端) | 通用密钥与加密管理平台(服务端) | Bitwarden 兼容的个人/团队密码库(服务端) | 文件级加密工具(CLI,无服务端) |
| 源码许可 | MPL-2.0 | BSL 1.1(1.15 起) | AGPL-3.0 | MPL-2.0 |
| 治理 | LF Edge 基金会 | HashiCorp/IBM | 社区(非官方 Bitwarden) | Mozilla→社区(getsops) |
| 秘密类型 | 机器密钥:API Key、DB 密码、证书、加密密钥 | 同左 | 人类凭据:网站账号、银行卡、身份信息 | 加密后的配置文件(YAML/JSON/ENV) |
| 动态凭据/租约 | 有(database/pki 等,实测) | 有 | 无 | 无 |
| 加解密即服务 | 有(transit,实测) | 有 | 无 | 无(离线加解密文件) |
| 集群/HA | 支持(raft 集成存储) | 支持 | 单实例为主 | 不适用 |
| 访问控制 | 路径级 ACL 策略(实测 403 对照) | 路径级 ACL | 文件夹/集合分享 | 依赖 KMS 云服务权限 |
| 典型使用方式 | 应用运行时经 API/Agent 取密钥 | 同左 | 人用浏览器/客户端取密码 | Git 仓库直接提交密文 |
| 社区规模(2026-10-17 实查 stars) | 8,484 | 36,395 | 约 5 万级 | 约 1.8 万级 |
关键差异解读:这四个工具不完全是竞争关系——OpenBao 与 Vault 是同定位直接竞争(差异在许可与治理),Vaultwarden 解决的是"人的密码"而非"机器的密钥",sops 解决的是"配置文件进 Git"而非"运行时取密钥"。
选型建议(如果…则…):
- 如果需要机器密钥的集中管理、动态凭据、加解密服务,且要求完全开源许可与中立治理 → 选 OpenBao;
- 如果已有 Vault 投入、依赖其企业功能(HSM 支持、DR、命名空间等)并能接受 BSL 许可 → 可继续 Vault,注意其 1.15+ 许可边界;
- 如果诉求是团队/个人密码管理(人登录浏览器取密码) → 选 Vaultwarden(或官方 Bitwarden);
- 如果诉求是加密配置文件直接提交 Git、CI 中解密(GitOps 场景) → 选 sops(配合 age/KMS),它不需要常驻服务端。
八、参考链接
- OpenBao 官网:https://openbao.org/
- OpenBao 源码仓库:https://github.com/openbao/openbao
- 官方文档站:https://openbao.org/docs/(含 concepts、configuration、CLI 命令手册)
- 官方 Releases(zip 包与 SHA256SUMS):https://github.com/openbao/openbao/releases
- OpenBao CHANGELOG(file 后端/mlock 移除等变更依据):https://github.com/openbao/openbao/blob/main/CHANGELOG.md
- LF Edge 项目页(治理归属):https://lfedge.org/
- HashiCorp Vault 许可说明(对比背景):https://www.hashicorp.com/license-faq
- 本平台相关实测篇目:《OpenBao 2.7.1 核心原理详解》《OpenBao Docker Compose 部署指南》《OpenBao 2.7.1 常用 CLI 命令与工具详解》
- 相关文档:《Vaultwarden 介绍与选型指南》《Keycloak 介绍与选型指南》