Gestion des secrets Azure Spring Cloud
Cet article s’applique à : ✔️ Version 4.14.0 ✔️ Version 5.8.0
Construction Azure PropertySource
Spring Cloud 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>
Conseil
Nous fournissons spring-cloud-azure-starter-keyvault
également la prise en charge de 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 client-id
et client-secret
que les propriétés suivantes sont requises :
Configuration Properties
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 lasection Nom du coffre et Nom d’objet 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.
Utiliser -
plutôt que 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 spring.datasource.url
exemple, remplacez-le .
-
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 la 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, seul spring.datasource.url
et spring-datasource-url
est pris en charge pour récupérer la valeur de la propriété, mais spring.datasource-url
n’est pas pris en charge. Pour gérer ce cas, consultez la section Utiliser les espaces réservés de propriété.
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 propertyWithoutSpecialCharacter
nom de clé et affecte 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 sont KeyVaultPropertySource
actualisés 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 cette option pour désactiver l’actualisation 0
automatique.
Priorité PropertySource
Si la clé existe dans plusieurs PropertySources, ce qui prend effet est décidé par la priorité.
- S’il n’y a pas
SystemEnvironmentPropertySource
de liste PropertySource,KeyVaultPropertySource
la priorité est la plus élevée. - S’il existe
SystemEnvironmentPropertySource
dans la liste PropertySource,SystemEnvironmentPropertySource
avez une priorité supérieure à KeyVaultPropertySource. Cela signifie que vous pouvez utiliser la variable d’environnement pour remplacer la valeur du secret Key Vault dans votre application. - S’il existe plusieurs KeyVaultPropertySource dans la liste PropertySource, l’ordre de définition est l’ordre de priorité. Prenez l’exemple ci-dessus comme exemple,
key-vault-property-souece-1
a une priorité supérieure àkey-vault-property-souece-2
.
Toutes les propriétés configurables
Propriété | Valeur par défaut | Description |
---|---|---|
spring.cloud.azure.keyvault.secret.property-source-enabled | true | 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 | false | Indique si les clés secrètes respectent la casse. |
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys | 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[].refresh-interval | 30 min | Intervalle de temps pour actualiser tous les secrets Key Vault. |
spring.cloud.azure.keyvault.secret.property-sources[].service-version | 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
, ,profile
credential
,proxy
,retry
ne sont pas configurées dansspring.cloud.azure.keyvault.secret.property-sources[].xxx
,spring.cloud.azure.xxx
seront utilisées. Consultez la configuration d’Azure Spring Cloud pour obtenir plus d’informations sur ces propriétés courantes. - Consultez les propriétés de configuration d’Azure Spring Cloud pour obtenir plus d’informations sur les propriétés imbriquées.
Exemples
Consultez les exemples spring-cloud-azure-starter-keyvault-secrets sur GitHub.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de l’année 2024, nous abandonnerons progressivement le mécanisme de retour d’information GitHub Issues pour le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultez :Soumettre et afficher des commentaires pour