Vault 后端
Spring Cloud Config 服务器也支持Vault作为后端。
有关 Vault 的更多信息,请参阅Vault 快速入门指南。
要启用配置服务器以使用 Vault 后端,您可以使用vault
配置文件运行配置服务器。例如,在配置服务器的application.properties
中,您可以添加spring.profiles.active=vault
。
默认情况下,配置服务器假设您的 Vault 服务器在127.0.0.1:8200
运行。它还假设后端名称为secret
,密钥为application
。所有这些默认值都可以在配置服务器的application.properties
中配置。下表描述了可配置的 Vault 属性
名称 | 默认值 |
---|---|
主机 |
127.0.0.1 |
端口 |
8200 |
方案 |
http |
后端 |
secret |
默认密钥 |
application |
配置文件分隔符 |
, |
kv 版本 |
1 |
跳过 SSL 验证 |
false |
超时 |
5 |
命名空间 |
null |
上表中的所有属性都必须以spring.cloud.config.server.vault 为前缀或放置在复合配置的正确 Vault 部分中。 |
所有可配置属性都可以在org.springframework.cloud.config.server.environment.VaultEnvironmentProperties
中找到。
Vault 0.10.0 引入了版本化的键值后端(k/v 后端版本 2),它公开了与早期版本不同的 API,现在需要在挂载路径和实际上下文路径之间添加data/ ,并将密钥包装在data 对象中。设置spring.cloud.config.server.vault.kv-version=2 将考虑这一点。 |
可选地,支持 Vault Enterprise 的X-Vault-Namespace
标头。要将其发送到 Vault,请设置namespace
属性。
配置服务器运行后,您可以向服务器发出 HTTP 请求以检索来自 Vault 后端的值。为此,您需要 Vault 服务器的令牌。
首先,在您的 Vault 中放置一些数据,如下例所示
$ vault kv put secret/application foo=bar baz=bam
$ vault kv put secret/myapp foo=myappsbar
其次,向您的配置服务器发出 HTTP 请求以检索值,如下例所示
$ curl -X "GET" "https://127.0.0.1:8888/myapp/default" -H "X-Config-Token: yourtoken"
您应该会看到类似于以下内容的响应
{
"name":"myapp",
"profiles":[
"default"
],
"label":null,
"version":null,
"state":null,
"propertySources":[
{
"name":"vault:myapp",
"source":{
"foo":"myappsbar"
}
},
{
"name":"vault:application",
"source":{
"baz":"bam",
"foo":"bar"
}
}
]
}
客户端让 Config Server 与 Vault 通信所需的默认身份验证方式是设置 X-Config-Token 标头。但是,您可以省略标头并在服务器中配置身份验证,方法是设置与 Spring Cloud Vault 相同的配置属性。要设置的属性是spring.cloud.config.server.vault.authentication
。它应设置为支持的身份验证方法之一。您可能还需要使用与spring.cloud.vault
中记录的属性名称相同的属性名称,但使用spring.cloud.config.server.vault
前缀来设置特定于您使用的身份验证方法的其他属性。有关更多详细信息,请参阅Spring Cloud Vault 参考指南。
如果您省略 X-Config-Token 标头并使用服务器属性设置身份验证,则 Config Server 应用程序需要 Spring Vault 的附加依赖项才能启用其他身份验证选项。有关如何添加该依赖项,请参阅Spring Vault 参考指南。 |
多个属性源
使用 Vault 时,您可以为应用程序提供多个属性源。例如,假设您已将数据写入 Vault 中的以下路径
secret/myApp,dev
secret/myApp
secret/application,dev
secret/application
写入 secret/application
的属性可供所有使用 Config Server 的应用程序使用。名为 myApp
的应用程序可以使用写入 secret/myApp
和 secret/application
的所有属性。当 myApp
启用了 dev
配置文件时,所有上述路径中写入的属性都可供其使用,其中列表中第一个路径中的属性优先于其他属性。
在属性源中解密 Vault 密钥
Spring Cloud Config Server 通过利用特殊的占位符前缀 {vault}
支持解密来自 Vault 的属性。此功能允许在运行时直接从 Vault 动态解析敏感的配置属性。
配置步骤
与 Vault 集成的所有配置设置都应放置在您的 application.yml
或 application.properties
中。以下是激活 Vault 配置文件、连接到您的 Vault 服务器以及使用 {vault}
前缀格式化属性所需的特定配置。