Spring Cloud Azure Secret Management
Dieser Artikel bezieht sich auf: ✔️ Version 4.14.0 ✔️ Version 5.8.0
Spring Cloud Azure-Konstrukt PropertySource
, das geheime Schlüssel enthält, die in Azure Key Vault Secrets gespeichert sind.
Setup von Abhängigkeiten
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
Tipp
Darüber hinaus unterstützen spring-cloud-azure-starter-keyvault
wir alle Features von Key Vault. Wenn Sie die Eigenschaft verwenden möchten, spring.cloud.azure.keyvault.enable
ist die Zu konfigurierende Eigenschaft, und der Standardwert ist "true". Anschließend können spring.cloud.azure.keyvault.<keyvault-service>.enable
Sie nicht benötigte Dienste deaktivieren.
Grundlegende Verwendung
Wenn Sie sich bei client-id
und client-secret
nach authentifizieren möchten, sind die folgenden Eigenschaften erforderlich:
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}
Java-Code
@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);
}
}
Erweiterte Verwendung
Sonderzeichen im Eigenschaftennamen
Schlüsseltresorschlüsselnamen unterstützen nur Zeichen in [0-9a-zA-Z-]
. Weitere Informationen finden Sie imAbschnitt "Vault-Name" und "Objektname " von Azure Key Vault-Schlüsseln, geheimen Schlüsseln und Zertifikaten ( Übersicht). Wenn Ihr Eigenschaftsname andere Zeichen enthält, können Sie die in den folgenden Abschnitten beschriebenen Problemumgehungen verwenden.
Anstelle von geheimen .
Namen verwenden -
.
wird in geheimen Namen nicht unterstützt. Wenn Ihre Anwendung über einen Eigenschaftennamen verfügt, der beim Speichern des geheimen Schlüssels im Azure Key Vault einen Namen enthält.
, zspring.datasource.url
.
. B. durch -
ersetzen. Speichern Sie spring-datasource-url
beispielsweise in Azure Key Vault. In Ihrer Anwendung können Sie den Eigenschaftswert trotzdem spring.datasource.url
abrufen.
Hinweis
Diese Methode kann keine Anforderung wie spring.datasource-url
. Wenn Sie im Key Vault speichernspring-datasource-url
, wird nur spring-datasource-url
spring.datasource.url
der Eigenschaftswert abgerufen, aber spring.datasource-url
nicht unterstützt. Informationen zum Behandeln dieses Falls finden Sie im Abschnitt "Use property placeholders ".
Verwenden von Eigenschaftsplatzhaltern
Angenommen, Sie legen diese Eigenschaft in der Datei "application.properties " fest:
property.with.special.character__=${propertyWithoutSpecialCharacter}
Die Anwendung erhält einen propertyWithoutSpecialCharacter
Schlüsselnamen und weist dessen Wert zu property.with.special.character__
.
Groß-/Kleinschreibung beachten
Um den Modus "Groß-/Kleinschreibung" zu aktivieren, können Sie die folgende Eigenschaft festlegen:
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive=true
Nicht alle geheimen Schlüssel im Key Vault abrufen
Wenn Sie 1000 geheime Schlüssel im Key Vault gespeichert haben und nur 3 von ihnen verwenden möchten. Sie können die drei geheimen Namen nach spring.cloud.azure.keyvault.secret.property-sources[].secret-keys
.
Festlegen des Aktualisierungsintervalls
Standardmäßig werden die geheimen Schlüssel KeyVaultPropertySource
alle 30 Minuten aktualisiert. Sie können die Uhrzeit nach spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval
. Beispiel: spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m
bedeutet aktualisierung alle 60 Minuten. Legen Sie fest, 0
dass die automatische Aktualisierung deaktiviert wird.
PropertySource-Priorität
Wenn der Schlüssel in mehreren PropertySources vorhanden ist, wird dies von der Priorität entschieden.
- Wenn keine
SystemEnvironmentPropertySource
PropertySource-Liste vorhanden ist,KeyVaultPropertySource
wird die höchste Priorität verwendet. - Wenn in der PropertySource-Liste vorhanden ist
SystemEnvironmentPropertySource
,SystemEnvironmentPropertySource
haben Sie eine höhere Priorität als KeyVaultPropertySource. Dies bedeutet, dass Sie die Umgebungsvariable verwenden können, um den Schlüsseltresorschlüsselwert in Ihrer Anwendung außer Kraft zu setzen. - Wenn in der PropertySource-Liste mehrere KeyVaultPropertySource vorhanden sind, ist die Definitionsreihenfolge die Prioritätsreihenfolge. Nehmen Sie oben ein Beispiel als Beispiel,
key-vault-property-souece-1
hat eine höhere Priorität alskey-vault-property-souece-2
.
Alle konfigurierbaren Eigenschaften
Eigenschaft | Standardwert | Beschreibung |
---|---|---|
spring.cloud.azure.keyvault.secret.property-source-enabled | true | Gibt an, ob die Key Vault-Eigenschaftsquelle aktiviert werden soll. |
spring.cloud.azure.keyvault.secret.property-sources[].name | Name dieser Eigenschaftsquelle. | |
spring.cloud.azure.keyvault.secret.property-sources[].endpoint | Azure Key Vault-Endpunkt. | |
spring.cloud.azure.keyvault.secret.property-sources[].Groß-/Kleinschreibung beachten | false | Gibt an, ob bei den geheimen Schlüsseln die Groß-/Kleinschreibung beachtet wird. |
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys | Die geheimen Schlüssel, die für diese Eigenschaftsquelle unterstützt werden. Alle Schlüssel werden abgerufen, wenn diese Eigenschaft fehlt. | |
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval | 30 Min. | Zeitintervall zum Aktualisieren aller Schlüsseltresorschlüssel. |
spring.cloud.azure.keyvault.secret.property-sources[].service-version | Version des geheimen Diensts, die beim Erstellen von API-Anforderungen verwendet wird. | |
spring.cloud.azure.keyvault.secret.property-sources[].client | Clientbezogene Eigenschaften. | |
spring.cloud.azure.keyvault.secret.property-sources[].credential | Credential related properties. | |
spring.cloud.azure.keyvault.secret.property-sources[].profile | Profilbezogene Eigenschaften. | |
spring.cloud.azure.keyvault.secret.property-sources[].proxy | Proxybezogene Eigenschaften. | |
spring.cloud.azure.keyvault.secret.property-sources[].retry | Wiederholen Sie verwandte Eigenschaften. |
- Lesen Sie "Autorisieren des Zugriffs mit Microsoft Entra ID ", um sicherzustellen, dass dem Sicherheitsprinzipal die ausreichende Berechtigung für den Zugriff auf die Azure Key Vault-Geheimnisse erteilt wurde.
- Wenn allgemeine Eigenschaften wie
client
,credential
,profile
,proxy
werdenretry
nicht konfiguriert inspring.cloud.azure.keyvault.secret.property-sources[].xxx
,spring.cloud.azure.xxx
verwendet. Weitere Informationen zu diesen allgemeinen Eigenschaften finden Sie unter Spring Cloud Azure-Konfiguration . - Weitere Informationen zu geschachtelten Eigenschaften finden Sie unter Spring Cloud Azure-Konfigurationseigenschaften .
Beispiele
Sehen Sie sich die Beispiele für spring-cloud-azure-starter-keyvault-secrets auf GitHub an.