Сервер конфигурации Spring с токеном хранилища не соблюдает acl, определенный в хранилище

У меня есть сервер конфигурации Spring и хранилище в качестве бэкэнда. Я создал токен в хранилище с политикой 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

Я создал политику acl с именем «app1», которая позволяет только «app1» считывать токеном в хранилище.

path "secret/app1" {
  capabilities = ["read", "list"]
}

./vault token create -display-name="app1" -policy="app1"

Я использовал токен, сгенерированный в моем клиенте, и он не работает.

когда я изменил политику acl на ниже, она работает

path "secret/*" {
  capabilities = ["read", "list"]
}

Однако, когда я обращаюсь к хранилищу напрямую с помощью токена X-Vault, он работает отлично, как ожидалось.


person Parvatayya Malimath    schedule 11.07.2019    source источник
comment
Я считаю, что это должно сработать ----- путь секрет / приложение1 {возможности = [чтение]} -----. Помню похожую проблему. кстати какая версия Vault?   -  person Here_2_learn    schedule 11.07.2019
comment
Я использую версию 1.1.3, однако это не проблема хранилища. он работает так, как ожидалось, когда я читаю прямо из хранилища. он не работает, когда я использую его через сервер конфигурации   -  person Parvatayya Malimath    schedule 11.07.2019
comment
Вместо того, чтобы использовать его через сервер конфигурации, я бы предложил получать секреты непосредственно из хранилища. Это позволяет избежать использования посредника / сервера конфигурации, нет смысла использовать хранилище, если кто-то сидит посередине.   -  person Here_2_learn    schedule 11.07.2019


Ответы (1)


Я нашел решение, установите spring.cloud.config.server.vault.defaultKey пустым, как это в config-server 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».

person Parvatayya Malimath    schedule 15.07.2019