J'utilise Spring Cloud Config Server pour servir la configuration de mes applications client. Pour faciliter la configuration des secrets, j'utilise HashiCorp Vault comme backend. Pour le reste de la configuration, j'utilise un repo GIT. J'ai donc configuré le serveur de configuration en mode composite. Voir mon serveur de configuration bootstrap.yml
ci-dessous: -Printemps Cloud Config (backend Vault) teminer trop tôt
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
C'est tout fonctionne comme prévu. Cependant, le jeton que j'utilise est sécurisé avec une politique d'authentification Vault. Voir ci-dessous: -
{
"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"
}"
}
Mon problème est que je ne stocke pas de secrets dans tous ces domaines. J'ai besoin de spécifier tous ces chemins juste pour que je puisse autoriser le jeton à lire un secret de mymount/generic/myapp-app,local
. Si je n'autorise pas tous les autres chemins, la méthode VaultEnvironmentRepository.read()
renvoie un code d'état 403 HTTP (Interdit) et déclenche une exception VaultException. Cela entraîne l'échec total de récupération de toute configuration pour l'application, y compris la configuration basée sur GIT. Ceci est très limitatif car les applications client peuvent avoir plusieurs profils Spring qui n'ont rien à voir avec la récupération des éléments de configuration. Le problème est que le serveur de configuration tentera de récupérer la configuration pour tous les profils actifs fournis par le client.
Existe-t-il un moyen d'activer la tolérance aux pannes ou l'indulgence sur le serveur de configuration, de sorte que VaultEnvironmentRepository n'abandonne pas et renvoie toute configuration qu'il est autorisé à retourner?
D'accord, même si mon problème illustre un problème qui existe toujours si j'ajoute un profil qui n'est pas configuré dans Vault. J'ai besoin d'un mécanisme qui me permette d'utiliser des profils qui ne sont pas configurés dans Vault. Le profil "local" est simplement utilisé à titre purement illustratif ici. – Codesnooper