我正在使用 Spring Cloud Config Server 为我的客户端应用程序提供配置。为了方便秘密配置,我使用 HashiCorp Vault 作为后端。对于其余的配置,我使用的是 GIT 存储库。所以我已经在复合模式下配置了配置服务器。请参阅下面的配置服务器bootstrap.yml
:-
server:
port: 8888
spring:
profiles:
active: local, git, vault
application:
name: my-domain-configuration-server
cloud:
config:
server:
git:
uri: https://mygit/my-domain-configuration
order: 1
vault:
order: 2
host: vault.mydomain.com
port: 8200
scheme: https
backend: mymount/generic
这一切都按预期工作。但是,我使用的令牌受 Vault 身份验证策略保护。见下文:-
{
"rules": "path "mymount/generic/myapp-app,local" {
policy = "read"
}
path "mymount/generic/myapp-app,local/*" {
policy = "read"
}
path "mymount/generic/myapp-app" {
policy = "read"
}
path "mymount/generic/myapp-app/*" {
policy = "read"
}
path "mymount/generic/application,local" {
policy = "read"
}
path "mymount/generic/application,local/*" {
policy = "read"
}
path "mymount/generic/application" {
policy = "read"
}
path "mymount/generic/application/*" {
policy = "read"
}"
}
我的问题是我没有在所有这些范围内存储秘密。我需要指定所有这些路径,以便我可以授权令牌从mymount/generic/myapp-app,local
. 如果我不授权所有其他路径,该VaultEnvironmentRepository.read()
方法将返回403 HTTP状态代码(禁止)并引发 VaultException。这会导致完全无法检索应用程序的任何配置,包括基于 GIT 的配置。这是非常有限的,因为客户端应用程序可能有多个与检索配置项无关的 Spring 配置文件。问题是配置服务器将尝试检索客户端提供的所有活动配置文件的配置。
有没有办法在配置服务器上启用容错或宽容,以便 VaultEnvironmentRepository 不会中止并返回它实际授权返回的任何配置?