vault - Vault 是一种用于安全访问机密的工具。机密是您想要严格控制访问的任何内容,例如 API 密钥、密码、证书等。Vault 为任何机密提供统一的接口,同时提供严格的访问控制并记录详细的审计日志。

Created at: 2015-02-25 08:15:59
Language: Go
License: MPL-2.0

圈子CI 保险库企业版


请注意:我们非常重视保险柜的安全性和用户的信任。如果你认为自己在保险柜中发现了安全问题,请通过 security@hashicorp.com 与我们联系,负责任地披露


保险库徽标

保险柜是一种用于安全访问机密的工具。机密是你想要严格控制访问的任何内容,例如 API 密钥、密码、证书等。保险柜为任何机密提供统一的界面,同时提供严格的访问控制并记录详细的审核日志。

现代系统需要访问大量机密:数据库凭据、外部服务的 API 密钥、面向服务的体系结构通信的凭据等。了解谁在访问哪些机密已经非常困难且特定于平台。如果没有自定义解决方案,几乎不可能添加密钥滚动、安全存储和详细的审核日志。这就是 Vault 介入的地方。

保险柜的主要功能包括:

  • 安全密钥存储:任意密钥/值机密可以存储在保管库中。保险柜会在将这些机密写入持久存储之前对其进行加密,因此获得对原始存储的访问权限不足以访问你的机密。Vault 可以写入磁盘、领事等。

  • 动态密钥:保险柜可以按需为某些系统生成密钥,例如 AWS 或 SQL 数据库。例如,当应用程序需要访问 S3 存储桶时,它会向 Vault 提供凭证,Vault 将按需生成具有有效权限的 AWS 密钥对。创建这些动态密钥后,保险柜也会在租约到期后自动撤销它们。

  • 数据加密:保险柜可以在不存储数据的情况下加密和解密数据。这允许安全团队定义加密参数,并允许开发人员将加密数据存储在 SQL 数据库等位置,而无需设计自己的加密方法。

  • 租借和续订:保险柜中的所有机密都有与之关联的租约。租约结束时,保险柜将自动撤销该机密。客户端可以通过内置的续订 API 续订租约。

  • 吊销:保险柜内置了对密钥吊销的支持。保险柜不仅可以撤销单个密钥,还可以撤销密钥树,例如,特定用户读取的所有密钥或特定类型的所有密钥。吊销有助于在发生入侵时滚动密钥和锁定系统。

文档、入门和认证考试

文档可在保险柜网站上找到。

如果你是 Vault 的新手,并且想开始使用安全自动化,请查看 HashiCorp 学习平台上的入门指南。还有其他指南可以继续学习。

有关如何使用不同编程语言从应用程序内部与 Vault 交互的示例,请参阅 vault 示例存储库。还提供开箱即用的示例应用程序

通过认证考试来展示你的保险柜知识。访问认证页面了解有关考试的信息,并在HashiCorp的学习平台上查找学习材料

开发保管库

如果你想在 Vault 本身或其任何内置系统上工作,你首先需要在你的机器上安装 Go

对于本地开发人员,首先确保正确安装了 Go,包括设置 GOPATH。确保这在你的路径中,因为某些发行版捆绑了旧版本的构建工具。接下来,克隆此存储库。Vault 使用 Go 模块,因此建议你在 GOPATH 之外克隆存储库。然后,你可以通过引导环境来下载任何必需的构建工具:

$GOPATH/bin

$ make bootstrap
...

要编译 Vault 的开发版本,请运行 或 。这会将保管库二进制文件放在 和 文件夹中:

make
make dev
bin
$GOPATH/bin

$ make dev
...
$ bin/vault
...

要使用 UI 编译 Vault 的开发版本,请运行 。这会将保管库二进制文件放在 和 文件夹中:

make static-dist dev-ui
bin
$GOPATH/bin

$ make static-dist dev-ui
...
$ bin/vault
...

要运行测试,请键入 。注意:这需要安装 Docker。如果它以退出状态 0 退出,则一切正常!

make test

$ make test
...

如果要开发特定包,则可以通过指定变量来仅对该包运行测试。例如,将仅运行包测试。

TEST
vault

$ make test TEST=./vault
...

导入保管库

此存储库发布两个可由其他项目导入的库:和 。

github.com/hashicorp/vault/api
github.com/hashicorp/vault/sdk

请注意,此存储库还包含 Vault(产品),与大多数 Go 项目一样,Vault 使用 Go 模块来管理其依赖项。执行此操作的机制是go.mod文件。碰巧的是,该文件的存在也使得理论上可以将 Vault 作为依赖项导入其他项目。其他一些项目已经这样做了,以便利用为测试 Vault 本身而开发的测试工具。这不是,也从来不是使用 Vault 项目的受支持方式。我们不太可能修复与无法导入到项目中相关的错误。

github.com/hashicorp/vault

验收测试

Vault 具有全面的验收测试,涵盖了机密和身份验证方法的大部分功能。

如果你正在处理机密或身份验证方法的功能,并且想要验证它是否正常工作(并且也没有破坏其他任何内容),我们建议你运行验收测试。

警告:验收测试创建/销毁/修改实际资源,在某些情况下可能会产生实际成本。在存在错误的情况下,从技术上讲,损坏的后端可能会留下悬而未决的数据。因此,请自行承担风险运行验收测试。至少,我们建议在他们自己的私有帐户中运行它们,用于你正在测试的任何后端。

要运行验收测试,请调用:

make testacc

$ make testacc TEST=./builtin/logical/consul
...

该变量是必需的,你应该指定后端所在的文件夹。建议该变量筛选到要测试的特定资源,因为一次测试所有这些资源有时可能需要很长时间。

TEST
TESTARGS

验收测试通常需要为访问密钥等设置其他环境变量。测试本身应该尽早出错并告诉你要设置的内容,因此此处未记录。

有关保险柜企业版功能的更多信息,请访问保险柜企业版网站