我有 spring 配置服务器和 vault 作为后端。 我在保管库中使用ACL策略创建了一个令牌。 当我在spring.cloud.config.token中使用令牌时,它不尊重ACL
我的 sping 配置客户端具有此引导属性
spring:
application:
name: app1
cloud:
config:
uri: https://config-server-ur:port
token: token-associated-to-acl-policy
我创建了一个名为"App1"的 ACL 策略,该策略仅允许保管库中的令牌读取"App1"。
path "secret/app1" {
capabilities = ["read", "list"]
}
./vault token create -display-name="app1" -policy="app1"
我使用了客户端中生成的令牌,但它不起作用。
当我将ACL策略更改为以下内容时,它可以工作
path "secret/*" {
capabilities = ["read", "list"]
}
但是,当我直接使用 X-Vault 令牌访问保管库时,它按预期完美运行
我找到了解决方案,将spring.cloud.config.server.vault.defaultKey设置为空,就像在配置服务器bootstrap.yml中一样
spring.profiles.active=git, vault
spring.cloud.config.server.git.uri=properties-git-repo-url
spring.cloud.config.server.git.username=user
spring.cloud.config.server.git.password=password
spring.cloud.config.server.git.searchPaths=/{application}/xyz
spring.cloud.config.server.git.force-pull=true
spring.cloud.config.server.git.timeout=10
spring.cloud.config.server.git.order=2
spring.cloud.config.server.vault.host=vault-hostname
spring.cloud.config.server.vault.port=8200
spring.cloud.config.server.vault.scheme=https
spring.cloud.config.server.vault.backend=secret
spring.cloud.config.server.vault.defaultKey=
spring.cloud.config.server.vault.profileSeparator=/
spring.cloud.config.server.vault.skipSslValidation=true
spring.cloud.config.server.vault.order=1
spring.cloud.config.server.vault.kvVersion=1
默认情况下,spring.cloud.config.server.vault.defaultKey= 设置为"application"。