2. 快速开始
先决条件
要开始使用 Vault 和本指南,您需要一个类似 *NIX 的操作系统,该操作系统提供:
-
wget
和openssl
unzip
-
至少 Java 8 和正确配置的环境变量
JAVA_HOME
本指南从 Spring Cloud Vault 的角度解释了 Vault 设置以进行集成测试。 您可以直接在 Vault 项目站点上找到快速入门指南:learn.hashicorp.com/vault |
安装 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 证书
接下来,您需要生成一组证书:
-
根 CA
-
保险库证书(解密的密钥和证书)
work/ca/private/localhost.decrypted.key.pem
work/ca/certs/localhost.cert.pem
)
确保将根证书导入到符合 Java 的信任库中。
实现这一目标的最简单方法是使用 OpenSSL。
create_certificates.sh 中创建证书 和 JKS truststore 。
如果要使用此快速入门指南运行 Spring Cloud Vault,则需要将 truststore 属性配置为 。work/ca work/keystore.jks spring.cloud.vault.ssl.trust-store file:work/keystore.jks |
启动 Vault 服务器
接下来,按照以下行创建一个配置文件:
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 已使用存储和 .
Vault 是密封的,并且在启动时未初始化。0.0.0.0:8200
inmem
https
如果要运行测试,请保持 Vault 未初始化状态。
测试将初始化 Vault 并创建根令牌 。00000000-0000-0000-0000-000000000000 |
如果您想将 Vault 用于您的应用程序或尝试一下,那么您需要先初始化它。
$ export VAULT_ADDR="https://localhost:8200"
$ export VAULT_SKIP_VERIFY=true # Don't do this for production
$ vault init
您应该会看到如下内容:
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 将初始化并返回一组解封密钥和根令牌。
选择 3 个密钥并解封 Vault。
将 Vault 令牌存储在环境变量中。VAULT_TOKEN
$ vault unseal (Key 1)
$ vault unseal (Key 2)
$ vault 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 终端节点访问密钥配置设置。
HTTP 服务具有以下形式的资源:
/secret/{application}/{profile} /secret/{application} /secret/{defaultContext}/{profile} /secret/{defaultContext}
其中“应用程序”作为 in 注入(即常规 Spring Boot 应用程序中通常的“应用程序”),“profile”是一个活动的配置文件(或逗号分隔的属性列表)。
从 Vault 检索到的属性将“按原样”使用,而无需为属性名称添加进一步的前缀。spring.application.name
SpringApplication