Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Construcción de Spring Cloud Azure PropertySource que contiene secretos almacenados en Azure Key Vault Secrets.
Configuración de dependencias
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
Propina
También proporcionamos spring-cloud-azure-starter-keyvault para ofrecer compatibilidad con todas las funcionalidades de Key Vault. Si decide usarlo, spring.cloud.azure.keyvault.enable es la propiedad que se va a configurar y el valor predeterminado es true. Después, puede usar spring.cloud.azure.keyvault.<keyvault-service>.enable para deshabilitar los servicios innecesarios.
Uso básico
Si quiere autenticarse mediante client-id y client-secret, se requieren las siguientes propiedades:
Propiedades de configuración
spring:
cloud:
azure:
keyvault:
secret:
property-sources:
- name: key-vault-property-source-1
endpoint: ${ENDPOINT_1}
- name: key-vault-property-source-2
endpoint: ${ENDPOINT_2}
Código Java
@SpringBootApplication
public class SampleApplication implements CommandLineRunner {
@Value("${sampleProperty1}")
private String sampleProperty1;
@Value("${sampleProperty2}")
private String sampleProperty2;
@Value("${samplePropertyInMultipleKeyVault}")
private String samplePropertyInMultipleKeyVault;
public static void main(String[] args) {
SpringApplication.run(SampleApplication.class, args);
}
public void run(String[] args) {
System.out.println("sampleProperty1: " + sampleProperty1);
System.out.println("sampleProperty2: " + sampleProperty2);
System.out.println("samplePropertyInMultipleKeyVault: " + samplePropertyInMultipleKeyVault);
}
}
Uso avanzado
Caracteres especiales en el nombre de propiedad
Los nombres de secretos de Key Vault solo admiten caracteres en [0-9a-zA-Z-]. Para más información, consulte la sección Nombre del almacén y nombre del objeto de Introducción a las claves, los secretos y los certificados de Azure Key Vault. Si el nombre de la propiedad contiene otros caracteres, puede usar las soluciones alternativas descritas en las secciones siguientes.
Usar - en lugar de . en nombres secretos
. no se admite en nombres secretos. Si la aplicación tiene un nombre de propiedad que contiene ., como spring.datasource.url, reemplace . por - al guardar el secreto en Azure Key Vault. Por ejemplo, guarde spring-datasource-url en Azure Key Vault. En su aplicación, aún puede usar spring.datasource.url para recuperar el valor de la propiedad.
Nota
Este método no puede satisfacer un requisito como spring.datasource-url. Al guardar spring-datasource-url en Key Vault, solo se admiten spring.datasource.url y spring-datasource-url para recuperar el valor de la propiedad, pero no se admite spring.datasource-url. Para gestionar este caso, consulte la sección Usar marcadores de posición para propiedades.
Usar marcadores de posición de propiedades
Por ejemplo, supongamos que va a establecer esta propiedad en el archivo application.properties de :
property.with.special.character__=${propertyWithoutSpecialCharacter}
La aplicación obtendrá un nombre de clave propertyWithoutSpecialCharacter y asignará su valor a property.with.special.character__.
Distingue mayúsculas de minúsculas
Para habilitar el modo que distingue mayúsculas de minúsculas, puede establecer la siguiente propiedad:
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive=true
No recuperar todos los secretos de Key Vault
Si ha almacenado 1000 secretos en el Key Vault y solo quiere usar 3 de ellos. Puede listar los 3 nombres de los secretos mediante spring.cloud.azure.keyvault.secret.property-sources[].secret-keys.
Establecer el intervalo de actualización
De forma predeterminada, los secretos de KeyVaultPropertySource se actualizarán cada 30 minutos. Puede configurar la hora mediante spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval. Por ejemplo: spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m significa actualizar cada 60 minutos. Establezca en 0 para deshabilitar la actualización automática.
Prioridad de PropertySource
Si la clave existe en varios PropertySources, la prioridad determina cuál surtirá efecto.
- Si no hay
SystemEnvironmentPropertySourceen la lista dePropertySource,KeyVaultPropertySourcetendrá la prioridad más alta. - Si hay
SystemEnvironmentPropertySourceen la lista dePropertySource,SystemEnvironmentPropertySourcetienen mayor prioridad queKeyVaultPropertySource, lo que significa que puede usar una variable de entorno para invalidar el valor de secreto de Key Vault en la aplicación. - Si hay varias fuentes de propiedades del almacén de claves en la lista
PropertySource, el orden de definición determina el orden de prioridad. Tomando el ejemplo anterior como ejemplo,key-vault-property-source-1tiene una prioridad más alta quekey-vault-property-source-2.
Configurar las credenciales de token para el origen de propiedades de Key Vault
Si necesita usar una credencial de token específica para Key Vault PropertySource, puede registrar el bean TokenCredential en ConfigurableBootstrapContext para KeyVaultEnvironmentPostProcessor; esta característica es compatible a partir de Spring Cloud Azure 5.16.0. Este es un ejemplo para usar AzureCliCredential:
public static void main(String[] args) {
SpringApplication application = new SpringApplication(PropertySourceApplication.class);
application.addBootstrapRegistryInitializer(registry ->
registry.register(TokenCredential.class, context -> new AzureCliCredentialBuilder().build()));
application.run(args);
}
Todas las propiedades configurables
| Propiedad | Valor predeterminado | Descripción |
|---|---|---|
spring.cloud.azure.keyvault.secret.property-source-enabled |
verdadero | Si se debe habilitar el origen de propiedades de Key Vault. |
spring.cloud.azure.keyvault.secret.property-sources[].name |
Nombre de esta fuente de propiedades. | |
spring.cloud.azure.keyvault.secret.property-sources[].endpoint |
Punto de conexión de Azure Key Vault. | |
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive |
falso | Si las claves secretas distinguen mayúsculas de minúsculas. |
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys |
Claves secretas compatibles con este origen de propiedades. Se recuperarán todas las claves si falta esta propiedad. | |
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval |
30 m | Intervalo de tiempo para actualizar todos los secretos de Key Vault. |
spring.cloud.azure.keyvault.secret.property-sources[].service-version |
Versión del servicio secreto que se usa al realizar solicitudes de API. | |
spring.cloud.azure.keyvault.secret.property-sources[].client |
Propiedades relacionadas con el cliente. | |
spring.cloud.azure.keyvault.secret.property-sources[].credential |
Propiedades relacionadas con credenciales. | |
spring.cloud.azure.keyvault.secret.property-sources[].profile |
Propiedades relacionadas con el perfil. | |
spring.cloud.azure.keyvault.secret.property-sources[].proxy |
Propiedades relacionadas con el proxy. | |
spring.cloud.azure.keyvault.secret.property-sources[].retry |
Propiedades relacionadas con los reintentos. |
- Consulte Autorizar el acceso con Microsoft Entra ID para asegurarse de que la entidad de seguridad tiene concedidos los permisos suficientes para acceder a los secretos de Azure Key Vault.
- Si las propiedades comunes como
client,credential,profile,proxy,retryno están configuradas enspring.cloud.azure.keyvault.secret.property-sources[].xxx, se usaráspring.cloud.azure.xxx. Consulte configuración de Azure de Spring Cloud para obtener más información sobre estas propiedades comunes. - Consulte las propiedades de configuración de Spring Cloud Azure para obtener más información sobre las propiedades anidadas.
Muestras
Consulte los spring-cloud-azure-starter-keyvault-secrets ejemplos en GitHub.