| 
         此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Cloud Config 4.3.0!  | 
    
Vault 后端
Spring Cloud Config Server 还支持 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  | 
后端  | 
秘密  | 
defaultKey  | 
应用  | 
默认标签  | 
main(仅在以下情况下使用  | 
启用标签  | 
false  | 
轮廓分离器  | 
,  | 
kv版本  | 
1  | 
skipSsl验证  | 
false  | 
超时  | 
5  | 
Namespace  | 
零  | 
上表中的所有属性都必须以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 EnterpriseX-Vault-Namespace页眉。要将其发送到 Vault,请将namespace财产。
在配置服务器运行的情况下,您可以向服务器发出 HTTP 请求以检索 Vault 后端的值。 为此,您需要一个保管库服务器的Tokens。
首先,将一些数据放入 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"
         }
      }
   ]
}
客户端提供必要的身份验证以让 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启用配置文件后,写入上述所有路径的属性将可供其使用,列表中第一个路径中的属性优先于其他路径。
启用按标签搜索
默认情况下,保险柜后端在搜索机密时不会使用该标签。您可以通过以下方式更改此设置
将enableLabelfeature 标志设置为true并且,(可选)将defaultLabel.
什么时候defaultLabel不提供main将被使用。
什么时候enableLabel功能标志打开时,Vault 中的密钥应始终在其路径中包含所有三个段(应用程序名称、配置文件和标签)。
因此,上一节中的示例,启用了功能标志,将像:
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.
解密属性源中的保管库密钥
Spring Cloud Config Server 支持使用特殊的占位符前缀从 Vault 解密属性{vault}. 此功能允许在运行时直接从 Vault 动态解析敏感配置属性。
配置步骤
与 Vault 集成的所有配置设置都应放在application.yml或application.properties. 以下是激活 Vault 配置文件、连接到 Vault 服务器以及使用{vault}前缀。