Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Spring Cloud Azure construit PropertySource qui contient les secrets stockés dans les secrets Azure Key Vault.
Configuration des dépendances
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
Pourboire
Nous fournissons également spring-cloud-azure-starter-keyvault pour prendre en charge toutes les fonctionnalités de Key Vault. Si vous choisissez de l’utiliser, spring.cloud.azure.keyvault.enable est la propriété à configurer et la valeur par défaut est true. Vous pouvez ensuite utiliser spring.cloud.azure.keyvault.<keyvault-service>.enable pour désactiver les services inutiles.
Utilisation de base
Si vous souhaitez vous authentifier par client-id et client-secret, les propriétés suivantes sont requises :
Propriétés de configuration
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}
Code 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);
}
}
Utilisation avancée
Caractères spéciaux dans le nom de la propriété
Les noms de secrets Key Vault prennent uniquement en charge les caractères dans [0-9a-zA-Z-]. Pour plus d’informations, consultez la sectionNom du coffre et Nom d’objet de vue d’ensemble des clés, des secrets et des certificats Azure Key Vault. Si le nom de votre propriété contient d’autres caractères, vous pouvez utiliser les solutions de contournement décrites dans les sections suivantes.
Utilisez - au lieu de . dans les noms de secrets
. n’est pas pris en charge dans les noms de secrets. Si votre application a un nom de propriété qui contient ., par exemple spring.datasource.url, remplacez . par - lors de l’enregistrement du secret dans Azure Key Vault. Par exemple, enregistrez spring-datasource-url dans Azure Key Vault. Dans votre application, vous pouvez toujours utiliser spring.datasource.url pour récupérer la valeur de propriété.
Remarque
Cette méthode ne peut pas satisfaire à une exigence telle que spring.datasource-url. Lorsque vous enregistrez spring-datasource-url dans Key Vault, seuls spring.datasource.url et spring-datasource-url sont pris en charge pour récupérer la valeur de propriété, mais spring.datasource-url n’est pas pris en charge. Pour gérer ce cas, consultez la section Utiliser des espaces réservés de propriétés.
Utiliser des espaces réservés de propriété
Par exemple, supposons que vous définissez cette propriété dans votre fichier application.properties :
property.with.special.character__=${propertyWithoutSpecialCharacter}
L’application obtient un nom de clé propertyWithoutSpecialCharacter et attribue sa valeur à property.with.special.character__.
Respect de la casse
Pour activer le mode respect de la casse, vous pouvez définir la propriété suivante :
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive=true
Ne pas récupérer tous les secrets dans Key Vault
Si vous avez stocké 1 000 secrets dans le coffre de clés et que vous souhaitez simplement utiliser 3 d’entre eux. Vous pouvez répertorier les 3 noms de secrets par spring.cloud.azure.keyvault.secret.property-sources[].secret-keys.
Définition de l’intervalle d’actualisation
Par défaut, les secrets dans KeyVaultPropertySource s’actualisent toutes les 30 minutes. Vous pouvez configurer l’heure par spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval. Par exemple : spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m signifie actualiser toutes les 60 minutes. Définissez sur 0 pour désactiver l’actualisation automatique.
Priorité PropertySource
Si la clé existe dans plusieurs PropertySources, ce qui prend effet est décidé par la priorité.
- S’il n’existe aucune
SystemEnvironmentPropertySourcedans la listePropertySource,KeyVaultPropertySourceprend la priorité la plus élevée. - S’il existe
SystemEnvironmentPropertySourcedans la listePropertySource,SystemEnvironmentPropertySourceavez une priorité supérieure àKeyVaultPropertySource, ce qui signifie que vous pouvez utiliser une variable d’environnement pour remplacer la valeur secrète Key Vault dans votre application. - S’il existe plusieurs sources de propriétés key vault dans la liste
PropertySource, l’ordre de définition est l’ordre de priorité. En prenant l’exemple ci-dessus comme exemple,key-vault-property-source-1a une priorité supérieure àkey-vault-property-source-2.
Configurer les informations d’identification du jeton pour la source de propriété Key Vault
Si vous devez utiliser des informations d’identification de jeton spécifiées pour key Vault PropertySource, vous pouvez inscrire la TokenCredential bean dans l'ConfigurableBootstrapContext pour KeyVaultEnvironmentPostProcessor, cette fonctionnalité est prise en charge à partir de Spring Cloud Azure 5.16.0. Voici un exemple pour utiliser 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);
}
Toutes les propriétés configurables
| Propriété | Valeur par défaut | Descriptif |
|---|---|---|
| spring.cloud.azure.keyvault.secret.property-source-enabled | vrai | Indique s’il faut activer la source de propriété Key Vault. |
| spring.cloud.azure.keyvault.secret.property-sources[].name | Nom de cette source de propriété. | |
| spring.cloud.azure.keyvault.secret.property-sources[].endpoint | Point de terminaison Azure Key Vault. | |
| spring.cloud.azure.keyvault.secret.property-sources[].respect de la casse | faux | Indique si les clés secrètes respectent la casse. |
| spring.cloud.azure.keyvault.secret.property-sources[].clés_secrètes | Clés secrètes prises en charge pour cette source de propriété. Toutes les clés doivent être récupérées si cette propriété est manquante. | |
| spring.cloud.azure.keyvault.secret.property-sources[].intervalle_actualisation | 30 millions | Intervalle de temps pour actualiser tous les secrets Key Vault. |
| spring.cloud.azure.keyvault.secret.property-sources[].version-service | Version du service secret utilisée lors de demandes d’API. | |
| spring.cloud.azure.keyvault.secret.property-sources[].client | Propriétés associées au client. | |
| spring.cloud.azure.keyvault.secret.property-sources[].credential | Propriétés associées aux informations d’identification. | |
| spring.cloud.azure.keyvault.secret.property-sources[].profile | Propriétés associées au profil. | |
| spring.cloud.azure.keyvault.secret.property-sources[].proxy | Propriétés associées au proxy. | |
| spring.cloud.azure.keyvault.secret.property-sources[].retry | Réessayez les propriétés associées. |
- Consultez Autoriser l’accès avec l’ID Microsoft Entra pour vous assurer que le principal de sécurité a reçu l’autorisation suffisante pour accéder aux secrets Azure Key Vault.
- Si les propriétés courantes telles que
client,credential,profile,proxy,retryne sont pas configurées dansspring.cloud.azure.keyvault.secret.property-sources[].xxx,spring.cloud.azure.xxxseront utilisées. Consultez configuration Spring Cloud Azure pour obtenir plus d’informations sur ces propriétés courantes. - Consultez propriétés de configuration Azure Spring Cloud pour obtenir plus d’informations sur les propriétés imbriquées.
Échantillons
Consultez les exemples spring-cloud-azure-starter-keyvault-secrets sur GitHub.