0

Nous utilisons le serveur Spring Cloud Config avec un référentiel git sauvegardé pour fournir des propriétés pour un profil de test. Nous avons reçu l'exigence de déplacer nos clés vers le coffre (hashicorp) et de conserver les propriétés habituelles comme d'habitude dans notre fichier de propriétés. Avant le coffre-fort, nous passions les clés via une propriété système (en utilisant -Dxxx=yyy), qui était chargée comme une source de propriété normale et l'application fonctionnait comme prévu.Dans Spring Cloud Server ajoute d'autres propriétés à un environnement existant

Maintenant, je dois avoir une source de propriété composite à extraire du fichier de propriétés et aussi du coffre-fort en même temps. Je ne suis pas sûr de savoir comment extraire des propriétés à la fois du coffre-fort et du git en même temps et de les offrir aux clients de configuration de nuage de printemps.

J'ai creusé dans le documentation et j'ai trouvé que nous pouvions avoir un référentiel d'environnement composite, mais je ne peux pas faire fonctionner Vault et git en même temps.

J'ai essayé plusieurs choses comme mettre des propriétés comme ceci:

spring.cloud.config.server.git.uri=file:///E:/Project/git/myappdata 

spring.cloud.config.server.vault.host=127.0.0.1 
spring.cloud.config.server.vault.port=8200 
spring.cloud.config.server.vault.scheme=http 
spring.cloud.config.server.vault.backend=secret 
spring.cloud.config.server.vault.defaultKey=myapp 

testé également en utilisant la voûte des nuages ​​de printemps et je pourrais aller chercher les secrets, mais ils ne sont pas fournis à mes clients.

J'ai essayé d'utiliser l'implémentation d'une interface EnvironmentRepository, mais il s'agit de créer un nouveau référentiel (et je veux juste ajouter 1 propriété de coffre-fort au référentiel fourni existant basé sur git).

Et allait utiliser l'événement de printemps ApplicationEnvironmentPreparedEvent et essayé d'ajouter dynamiquement la propriété de voûte.

Je pense que je néglige quelque chose. Savez-vous quelle est la bonne façon de lire un secret de coffre et l'ajouter en tant que propriété d'un fichier de propriétés standard?

Répondre

1

C'est possible. Vous devez utiliser quelques profils pour Spring Cloud Config Service.

spring: 
     profiles: 
     active: vault, git 
     cloud: 
     config: 
      server: 
      vault: 
       order: 1 
      git: 
       order: 2 
       uri: https://some-git-repo.com/ 
       username: user 
       password: pass 

Avec une telle configuration, Vault et Git fonctionneront ensemble. Vous devrez également implémenter le support Vault Token et l'avoir dans chaque client de configuration. Avec Vault, cela fonctionne un peu différemment. Il n'aura pas toutes les propriétés comme avec Git. Lorsque le client demande une propriété avec un jeton, il va dans Vault et le récupère. Si ce n'est pas le cas, il ira chercher dans Git Repo. Vous pouvez spécifier l'ordre dans la configuration.

Spring est propriétés résout récursive, de sorte que vous pouvez fichier de propriétés qui ont espace réservé de la propriété stockée dans git et servi par serveur Config (de application.yml):

database: 
    password: ${database.secure.password} 

et des biens sensibles stockés dans Vault, par exemple

vault write secret/clientAppName database.secure.password=SuperSecurePassword 

Spring Cloud résoudre automatiquement vos $ {} database.password de propriété.