SpringCloud Vault后端
Spring Cloud Config服务器还支持Vault作为后端。
Vault是用于安全访问机密的工具。秘密是您要严格控制访问权限的所有内容,例如API密钥,密码,证书和其他敏感信息。Vault为所有机密提供了统一的界面,同时提供了严格的访问控制并记录了详细的审核日志。
有关Vault的更多信息,请参见Vault快速入门指南。
要使配置服务器能够使用Vault后端,您可以使用vault
配置文件运行配置服务器。例如,在配置服务器的application.properties
中,您可以添加spring.profiles.active=vault
。
默认情况下,配置服务器假定您的Vault服务器在http://127.0.0.1:8200
下运行。它还假定后端的名称为secret
,密钥为application
。所有这些默认值都可以在配置服务器的application.properties
中进行配置。下表描述了可配置的Vault属性:
名称 | 默认值 |
---|---|
host |
127.0.0.1 |
port |
8200 |
scheme |
http |
backend |
secret |
defaultKey |
application |
profileSeparator |
, |
kvVersion |
1 |
skipSslValidation |
false |
timeout |
5 |
namespace |
null |
重要
上表中的所有属性必须以spring.cloud.config.server.vault
为前缀,或放置在复合配置的正确Vault部分中。
所有可配置的属性都可以在org.springframework.cloud.config.server.environment.VaultEnvironmentProperties
中找到。
Vault 0.10.0引入了版本化的键值后端(k / v后端版本2),该后端公开了与早期版本不同的API,现在它需要在安装路径和实际上下文路径之间使用data/
并包装data
对象中的秘密。设置kvVersion=2
将考虑到这一点。
(可选)支持Vault企业版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" "http://localhost: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"
}
}
]
}
多个Properties来源
使用Vault时,可以为您的应用程序提供多个属性源。例如,假设您已将数据写入Vault中的以下路径:
secret/myApp,dev
secret/myApp
secret/application,dev
secret/application
写入secret/application
的Properties对使用Config Server的所有应用程序均可用。名称为myApp的应用程序将具有写入secret/myApp
和secret/application
的所有属性。当myApp
启用了dev
配置文件时,写入上述所有路径的属性将可用,列表中第一个路径中的属性优先于其他属性。
更多建议: