此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Cloud Config 4.1.4! |
Vault 后端
Spring Cloud Config Server 还支持将 Vault 作为后端。
有关 Vault 的更多信息,请参阅 Vault 快速入门指南。
要使配置服务器能够使用 Vault 后端,您可以使用vault
轮廓。
例如,在您的配置服务器的application.properties
中,您可以添加spring.profiles.active=vault
.
默认情况下,配置服务器假定您的 Vault 服务器在127.0.0.1:8200
.
它还假定 backend 的名称为secret
关键是application
.
所有这些默认值都可以在配置服务器的application.properties
.
下表描述了可配置的 Vault 属性:
名字 | 默认值 |
---|---|
主机 |
127.0.0.1 |
港口 |
8200 |
方案 |
http |
后端 |
秘密 |
defaultKey |
应用 |
defaultLabel |
main(仅在 |
启用标签 |
假 |
profileSeparator 的 |
, |
kvVersion |
1 |
skipSslValidation |
假 |
超时 |
5 |
Namespace |
零 |
上表中的所有属性都必须以spring.cloud.config.server.vault 或放置在复合配置的正确 Vault 部分中。 |
所有可配置的属性都可以在org.springframework.cloud.config.server.environment.VaultEnvironmentProperties
.
Vault 0.10.0 引入了一个版本化的键值后端(k/v 后端版本 2),它公开了与早期版本不同的 API,现在它需要一个data/ 在挂载路径和实际上下文路径之间,并将 Secret 包装在data 对象。设置spring.cloud.config.server.vault.kv-version=2 将考虑到这一点。 |
(可选)支持 Vault EnterpriseX-Vault-Namespace
页眉。要将其发送到 Vault,请将namespace
财产。
在您的配置服务器运行的情况下,您可以向服务器发出 HTTP 请求以检索 值。 为此,您需要 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"
}
}
]
}
Client 端提供必要的身份验证以让 Config Server 与 Vault 通信的默认方法是设置 X-Config-Token 标头。
但是,您可以通过设置与 Spring Cloud Vault 相同的配置属性来省略 Headers 并在服务器中配置身份验证。
要设置的属性是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
profile 启用,则写入上述所有路径的属性将可供其使用,列表中第一个路径中的属性优先于其他路径。
启用按标签搜索
默认情况下,Vault 后端在搜索 secret 时不使用标签。您可以通过以下方式更改此设置
设置enableLabel
feature 标志设置为true
以及(可选)设置defaultLabel
.
什么时候defaultLabel
未提供main
将被使用。
什么时候enableLabel
feature 标志为 on,则 Vault 中的 secret 的路径中应始终包含所有三个段(应用程序名称、配置文件和标签)。
因此,上一节中启用了功能标志的示例将如下所示:
secret/myApp,dev,myLabel
secret/myApp,default,myLabel # default profile
secret/application,dev,myLabel # default application name
secret/application,default,myLabel # default application name and default profile.
解密 Property Sources 中的 Vault Secret
Spring Cloud Config Server 支持通过使用特殊的占位符前缀来解密 Vault 中的属性{vault}
.此功能允许在运行时直接从 Vault 动态解析敏感的配置属性。
配置步骤
与 Vault 集成的所有配置设置都应放在application.yml
或application.properties
.以下是激活 Vault 配置文件、连接到 Vault 服务器以及使用{vault}
前缀。