此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Cloud Config 4.1.4! |
Vault 后端
Spring Cloud Config Server 还支持将 Vault 作为后端。
有关 Vault 的更多信息,请参阅 Vault 快速入门指南。
要使配置服务器能够使用 Vault 后端,您可以使用配置文件运行配置服务器。
例如,在 config server 的 中,您可以添加 .vault
application.properties
spring.profiles.active=vault
默认情况下,配置服务器假定您的 Vault 服务器在 上运行。
它还假定后端的名称为 ,键为 。
所有这些默认值都可以在 config server 的 .
下表描述了可配置的 Vault 属性:127.0.0.1:8200
secret
application
application.properties
名字 | 默认值 |
---|---|
主机 |
127.0.0.1 |
港口 |
8200 |
方案 |
http |
后端 |
秘密 |
defaultKey |
应用 |
defaultLabel |
main (仅在设置为 |
启用标签 |
假 |
profileSeparator 的 |
, |
kvVersion |
1 |
skipSslValidation |
假 |
超时 |
5 |
Namespace |
零 |
上表中的所有属性都必须以复合配置的正确 Vault 部分为前缀或放置在正确的 Vault 部分中。spring.cloud.config.server.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 标头。要将其发送到 Vault,请设置该特性。X-Vault-Namespace
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 Vault 参考指南。spring.cloud.config.server.vault.authentication
spring.cloud.vault
spring.cloud.config.server.vault
如果省略X-Config-Token标头并使用服务器属性来设置身份验证,则 Config Server 应用程序需要对 Spring Vault 的额外依赖才能启用其他身份验证选项。 有关如何添加该依赖项,请参见 Spring Vault 参考指南。 |
多个属性源
使用 Vault 时,您可以为应用程序提供多个属性源。 例如,假设您已将数据写入 Vault 中的以下路径:
secret/myApp,dev
secret/myApp
secret/application,dev
secret/application
写入的属性可用于使用 Config Server 的所有应用程序。
名称为 的应用程序将具有写入和可用的任何属性。
启用配置文件后,写入上述所有路径的属性将可供其使用,列表中第一个路径中的属性优先于其他路径。secret/application
myApp
secret/myApp
secret/application
myApp
dev
启用按标签搜索
默认情况下,Vault 后端在搜索 secret 时不使用标签。您可以通过以下方式更改此设置
将 Feature 标志设置为 ,并可选择将 .
如果未提供时,将使用。enableLabel
true
defaultLabel
defaultLabel
main
当 feature flag 打开时,Vault 中的 secret 的路径中应始终包含所有三个段(应用程序名称、配置文件和标签)。
因此,上一节中启用了功能标志的示例将如下所示:enableLabel
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 支持使用特殊的 placeholder prefix 从 Vault 解密属性。此功能允许在运行时直接从 Vault 动态解析敏感的配置属性。{vault}
配置步骤
与 Vault 集成的所有配置设置都应放在 或 中。以下是激活 Vault 配置文件、连接到 Vault 服务器以及使用前缀设置属性格式所需的特定配置。application.yml
application.properties
{vault}