OpenBao 开源项目

GitHub Trending (daily) 工具

摘要

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

GitHub Trending (daily)

Openship 是一个开源、可自托管的部署平台,内置 CI/CD,支持任何技术栈、数据库、域名、SSL 等,可通过桌面应用、网页仪表盘或 CLI 访问。

open-metadata/OpenMetadata

GitHub Trending (daily)

OpenMetadata 是一个快速增长的统一开源元数据平台,提供数据发现、可观测性和治理功能,支持 84+ 连接器及零代码数据质量工具。

OpenComputer | 一款为智能体打造的开源计算机

Reddit r/LocalLLaMA

OpenComputer 是一个面向AI智能体的开源虚拟机环境,提供人类可操作的电脑界面,让智能体安全运行的同时,用户能够观察并协作。它可在本地运行并使用小型上下文模型,避免基于截图的导航方式,以提高效率。