OpenBao 开源项目
摘要
OpenBao 是一个开源软件解决方案,专注于安全地管理和分发机密、证书和密钥,提供安全存储、动态机密生成和数据加密功能,并在社区治理下运行。
查看缓存全文
缓存时间: 2026/09/25 15:13
openbao/openbao 来源:https://github.com/openbao/openbao
OpenBao
请注意:我们高度重视 OpenBao 的安全性及用户信任。若您认为在 OpenBao 中发现了安全漏洞,请负责任地披露,通过 [email protected] 与我们联系。
OpenSSF 计分卡 (https://scorecard.dev/viewer/?uri=github.com/openbao/openbao)
OpenSSF 最佳实践 (https://www.bestpractices.dev/projects/9126)
- 官网 (https://www.openbao.org)
- 邮件列表 (https://lists.openssf.org/g/openbao)
- GitHub 讨论 (https://github.com/openbao/openbao/discussions)
- 聊天服务器 (https://linuxfoundation.zulipchat.com/)
#openssf-openbao-discussion(https://linuxfoundation.zulipchat.com/#narrow/channel/529890-openssf-openbao-discussion)#openssf-openbao-support(https://linuxfoundation.zulipchat.com/#narrow/channel/530381-openssf-openbao-support)#openssf-openbao-tsc(https://linuxfoundation.zulipchat.com/#narrow/channel/530382-openssf-openbao-tsc)
- 工作组:
#openssf-openbao-wg(https://linuxfoundation.zulipchat.com/#narrow/channel/574533-openssf-openbao-wg)#openssf-openbao-wg-namespaces(https://linuxfoundation.zulipchat.com/#narrow/channel/532995-openssf-openbao-wg-namespaces)#openssf-openbao-wg-pkcs11(https://linuxfoundation.zulipchat.com/#narrow/channel/532994-openssf-openbao-wg-pkcs11)#openssf-openbao-wg-scalability(https://linuxfoundation.zulipchat.com/#narrow/channel/532998-openssf-openbao-wg-scalability)#openssf-openbao-wg-supply(https://linuxfoundation.zulipchat.com/#narrow/channel/532999-openssf-openbao-wg-supply)#openssf-openbao-wg-ui(https://linuxfoundation.zulipchat.com/#narrow/channel/532997-openssf-openbao-wg-ui)
OpenBao 是一款用于管理、存储和分发敏感数据(包括密钥、证书和密码)的软件解决方案。OpenBao 社区致力于在 OSI 认可的开源许可证下提供此软件,并由遵循开放治理原则运行的社区主导。
现代系统需要访问多种密钥:数据库凭证、外部服务的 API 密钥、面向服务架构通信的凭证等。要理解谁正在访问哪些密钥已经非常困难,且因平台而异。若没有定制方案,要实现密钥轮换、安全存储和详细的审计日志几乎不可能。这正是 OpenBao 的切入点。
OpenBao 的关键特性包括:
- 安全存储密钥:任意键值对形式的密钥可存储在 OpenBao 中。OpenBao 在将这些密钥写入持久化存储前会进行加密,因此仅获取原始存储访问权限不足以访问您的密钥。OpenBao 可写入磁盘、PostgreSQL (https://www.postgresql.org/) 等。
- 动态密钥:OpenBao 可按需为某些系统(如 AWS 或 SQL 数据库)生成密钥。例如,当应用程序需要访问 S3 存储桶时,它会向 OpenBao 请求凭证,OpenBao 将按需生成具有有效权限的 AWS 密钥对。创建这些动态密钥后,OpenBao 还会在租约到期后自动撤销它们。
- 数据加密:OpenBao 可在不存储数据的情况下对其进行加密和解密。这使安全团队能够定义加密参数,而开发人员可以将加密数据存储在 SQL 数据库等位置,无需自行设计加密方法。
- 租约与续期:OpenBao 中所有密钥都关联一个 租约。租约到期时,OpenBao 会自动撤销该密钥。客户端可通过内置的续期 API 续订租约。
- 撤销功能:OpenBao 内置密钥撤销支持。OpenBao 不仅可以撤销单个密钥,还可以撤销密钥树,例如特定用户读取的所有密钥或特定类型的所有密钥。撤销有助于密钥轮换以及在入侵事件中锁定系统。
文档与入门指南
文档可在 OpenBao 官网 (https://openbao.org/docs/) 查阅。
开发 OpenBao
在向 OpenBao 提交拉取请求前,请确保您已阅读并理解
CONTRIBUTING.md中描述的贡献指南。未遵循此要求可能会导致您的拉取请求被拒绝。
如需开发 OpenBao 本身或其任何内置系统,首先需要在您的机器上安装 Go (https://www.golang.org)。CI 和发布中使用的 Go 工具链版本固定于 .go-version,但本地开发时使用最新可用工具链通常是可以的。
OpenBao 使用 Go 模块 (https://github.com/golang/go/wiki/Modules),因此建议将仓库克隆到 GOPATH 之外。
构建 bao 二进制文件:
$ mkdir -p bin
$ go build -o bin/bao .
以开发模式运行 OpenBao 服务器:
$ go run . server -dev
# 或者如果已构建二进制文件,则使用 `./bin/bao server -dev`。
由于 OpenBao 是一个大型代码库,从冷缓存编译需要一点时间,在构建命令中添加 -v 标志有助于更好地了解编译进度。
测试某个包:
$ go test ./some/package
关于开发的补充说明:
- 还有一个
Makefile可用于高级构建配置和维护任务。在大多数情况下,构建、运行和调试 OpenBao 并非必须,但值得查看。 - 此仓库还包含 OpenBao 的网站和文档页面,以及 OpenBao 的 Web UI 应用程序,分别位于
website和ui子目录中。开发说明可在website/README.md和ui/README.md中找到。
导入 OpenBao
此仓库发布两个库,可被其他项目导入:github.com/openbao/openbao/api/v2 和 github.com/openbao/openbao/sdk/v2。
请注意,此仓库还包含 OpenBao(应用程序),与大多数 Go 项目一样,OpenBao 使用 Go 模块管理依赖项。相关机制通过 go.mod 文件实现。实际上,该文件的存在也使得将 OpenBao 作为依赖项导入其他项目在理论上成为可能。一些其他项目曾这样做,以利用为测试 OpenBao 本身而开发的测试工具。
这并非、也从未是支持使用 OpenBao 项目的方式。我们不会修复与导入 github.com/openbao/openbao 失败相关的错误,也不会重构内部代码以使其更易于导入。
相似文章
oblien/openship
Openship 是一个开源、可自托管的部署平台,内置 CI/CD,支持任何技术栈、数据库、域名、SSL 等,可通过桌面应用、网页仪表盘或 CLI 访问。
开源 OpenPubkey SSH (OPKSSH):将单点登录与 SSH 集成
OpenPubkey SSH (OPKSSH) 已开源,使得 SSH 能够与 OpenID Connect 等单点登录技术集成,无需手动管理 SSH 密钥。
@alex_verem: 给AI代理提供你的密码简直是疯了。有人做出了开源替代方案。这个问题潜伏在每个代理……
OpenConnector 是一个开源网关,它通过在运行时背后管理凭证,使 AI 代理能够安全地与 Gmail 和 Notion 等应用程序交互,从而确保密钥不会暴露给模型。
open-metadata/OpenMetadata
OpenMetadata 是一个快速增长的统一开源元数据平台,提供数据发现、可观测性和治理功能,支持 84+ 连接器及零代码数据质量工具。
OpenComputer | 一款为智能体打造的开源计算机
OpenComputer 是一个面向AI智能体的开源虚拟机环境,提供人类可操作的电脑界面,让智能体安全运行的同时,用户能够观察并协作。它可在本地运行并使用小型上下文模型,避免基于截图的导航方式,以提高效率。