Allow configuration of PropertySourceLocator behavior.
We now support configuration of PropertySourceLocator behavior of generic and discovered secret backends. We introduced VaultConfigurer as strategy interface to be implemented by customizer beans in the bootstrap context. VaultConfigurer allows configuration of secret backends via SecretBackendConfigurer. Motivation: Customization was only possible by implementing an own PropertySourceLocator by extending VaultPropertySourceLocatorSupport and implementing doCreatePropertySources. Both is non-trivial and does not allow reuse of existing functionality. See gh-116.
This commit is contained in:
@@ -750,6 +750,45 @@ spring.cloud.vault:
|
||||
|
||||
See also: https://www.vaultproject.io/docs/secrets/postgresql/index.html[Vault Documentation: Setting up PostgreSQL with Vault]
|
||||
|
||||
[[vault.config.backends.configurer]]
|
||||
== Configure `PropertySourceLocator` behavior
|
||||
|
||||
Spring Cloud Vault uses property-based configuration to create ``PropertySource``s
|
||||
for generic and discovered secret backends.
|
||||
|
||||
Discovered backends provide `VaultSecretBackendDescriptor` beans to describe the configuration
|
||||
state to use secret backend as `PropertySource`. A `SecretBackendMetadataFactory` is required
|
||||
to create a `SecretBackendMetadata` object which contains path, name and property transformation
|
||||
configuration.
|
||||
|
||||
`SecretBackendMetadata` is used to back a particular `PropertySource`.
|
||||
|
||||
You can register an arbitrary number of beans implementing `VaultConfigurer` for customization.
|
||||
Default generic and discovered backend registration is disabled if Spring Cloud Vault discovers
|
||||
at least one `VaultConfigurer` bean. You can however enable default registration with
|
||||
`SecretBackendConfigurer.registerDefaultGenericSecretBackends()` and `SecretBackendConfigurer.registerDefaultDiscoveredSecretBackends()`.
|
||||
|
||||
====
|
||||
[source,java]
|
||||
----
|
||||
public class CustomizationBean implements VaultConfigurer {
|
||||
|
||||
@Override
|
||||
public void addSecretBackends(SecretBackendConfigurer configurer) {
|
||||
|
||||
configurer.add("secret/my-application");
|
||||
|
||||
configurer.registerDefaultGenericSecretBackends(false);
|
||||
configurer.registerDefaultDiscoveredSecretBackends(true);
|
||||
}
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
NOTE: All customization is required to happen in the bootstrap context. Add your configuration
|
||||
classes to `META-INF/spring.factories` at `org.springframework.cloud.bootstrap.BootstrapConfiguration`
|
||||
in your application.
|
||||
|
||||
[[vault.config.fail-fast]]
|
||||
== Vault Client Fail Fast
|
||||
|
||||
|
||||
Reference in New Issue
Block a user