2. 快速入门

为了开始使用 Vault 和本指南,你需要一个 *NIX-like 操作系统,该系统提供:spring-doc.cadn.net.cn

该指南从 Spring Cloud Vault 的角度解释了 Vault 的设置,用于集成测试。 你可以在 Vault 项目网站上找到直接的入门指南: learn.hashicorp.com/vault
$ wget https://releases.hashicorp.com/vault/${vault_version}/vault_${vault_version}_${platform}.zip
$ unzip vault_${vault_version}_${platform}.zip
这些步骤可以通过下载并运行 install_vault.sh 来实现。

创建用于Vault的SSL证书spring-doc.cadn.net.cn

接下来,你需要生成一组证书:spring-doc.cadn.net.cn

确保将根证书导入到符合Java规范的信任库中。spring-doc.cadn.net.cn

最简单的方法是通过使用 OpenSSL。spring-doc.cadn.net.cn

create_certificates.shwork/ca 中创建证书,并在 work/keystore.jks 中创建JKS信任库。
如果要使用此快速入门指南运行Spring Cloud Vault,需要将信任库的 spring.cloud.vault.ssl.trust-store 属性配置为 file:work/keystore.jks

启动 Vault 服务器spring-doc.cadn.net.cn

接下来创建一个类似的配置文件:spring-doc.cadn.net.cn

backend "inmem" {
}

listener "tcp" {
  address = "0.0.0.0:8200"
  tls_cert_file = "work/ca/certs/localhost.cert.pem"
  tls_key_file = "work/ca/private/localhost.decrypted.key.pem"
}

disable_mlock = true
您可以在 vault.conf 处找到一个示例配置文件。
$ vault server -config=vault.conf

Vault 开始在 0.0.0.0:8200 上监听,使用 inmem 存储和 https。 Vault 在启动时被封存且未初始化。spring-doc.cadn.net.cn

如果要运行测试,请不初始化 Vault。 测试将初始化 Vault 并创建一个根Tokens 00000000-0000-0000-0000-000000000000

如果你的应用需要使用Vault或者你想尝试使用它,首先需要初始化它。spring-doc.cadn.net.cn

$ export VAULT_ADDR="https://localhost:8200"
$ export VAULT_SKIP_VERIFY=true # Don't do this for production
$ vault operator init

你应该会看到类似以下内容:spring-doc.cadn.net.cn

Key 1: 7149c6a2e16b8833f6eb1e76df03e47f6113a3288b3093faf5033d44f0e70fe701
Key 2: 901c534c7988c18c20435a85213c683bdcf0efcd82e38e2893779f152978c18c02
Key 3: 03ff3948575b1165a20c20ee7c3e6edf04f4cdbe0e82dbff5be49c63f98bc03a03
Key 4: 216ae5cc3ddaf93ceb8e1d15bb9fc3176653f5b738f5f3d1ee00cd7dccbe926e04
Key 5: b2898fc8130929d569c1677ee69dc5f3be57d7c4b494a6062693ce0b1c4d93d805
Initial Root Token: 19aefa97-cccc-bbbb-aaaa-225940e63d76

Vault initialized with 5 keys and a key threshold of 3. Please
securely distribute the above keys. When the Vault is re-sealed,
restarted, or stopped, you must provide at least 3 of these keys
to unseal it again.

Vault does not store the master key. Without at least 3 keys,
your Vault will remain permanently sealed.

Vault 将初始化并返回一组解密密钥和根Tokens。 选择 3 个密钥进行解密。 将 Vault Tokens存储在 VAULT_TOKEN 环境变量中。spring-doc.cadn.net.cn

$ vault operator unseal (Key 1)
$ vault operator unseal (Key 2)
$ vault operator unseal (Key 3)
$ export VAULT_TOKEN=(Root token)
# Required to run Spring Cloud Vault tests after manual initialization
$ vault token create -id="00000000-0000-0000-0000-000000000000" -policy="root"

Spring Cloud Vault 访问不同的资源。 默认情况下,启用了密钥后端,该后端通过 JSON 端点访问密钥配置设置。spring-doc.cadn.net.cn

HTTP 服务中的资源以如下形式呈现:spring-doc.cadn.net.cn

/secret/{application}/{profile}
/secret/{application}
/secret/{defaultContext}/{profile}
/secret/{defaultContext}

其中 "application" 作为 spring.application.nameSpringApplication(即在常规 Spring Boot 应用中通常为 "application" 的部分)中被注入,"profile" 为一个活动的 profile(或用逗号分隔的多个属性)。从 Vault 获取的属性值将直接使用,不会对属性名进行进一步的前缀处理。spring-doc.cadn.net.cn