Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Spring Cloud Azure erstellt PropertySource, die geheime Schlüssel enthält, die in Azure Key Vault Secrets gespeichert sind.
Einrichtung von Abhängigkeiten
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
Tipp
Wir bieten auch spring-cloud-azure-starter-keyvault zur Unterstützung aller Funktionen von Key Vault an. Wenn Sie die Eigenschaft verwenden möchten, ist spring.cloud.azure.keyvault.enable die zu konfigurierende Eigenschaft, und der Standardwert ist true. Anschließend können Sie spring.cloud.azure.keyvault.<keyvault-service>.enable verwenden, um nicht benötigte Dienste zu deaktivieren.
Grundlegende Nutzung
Wenn Sie sich durch client-id und client-secretauthentifizieren möchten, sind die folgenden Eigenschaften erforderlich:
Konfigurationseigenschaften
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 Eigenschaftsnamen
Namen von Key Vault-Geheimnissen dürfen nur die in [0-9a-zA-Z-] enthaltenen Zeichen enthalten. Weitere Informationen finden Sie im Abschnitt Vault-Name und Objektname der Übersicht über Azure Key Vault-Schlüssel, Geheimnisse und Zertifikate. Wenn Ihr Eigenschaftsname andere Zeichen enthält, können Sie die in den folgenden Abschnitten beschriebenen Problemumgehungen verwenden.
Verwenden von - anstelle von . in geheimen Namen
. wird in geheimen Namen nicht unterstützt. Wenn Ihre Anwendung über einen Eigenschaftsnamen verfügt, der .enthält, z. B. spring.datasource.url, ersetzen Sie . durch -, wenn Sie den geheimen Schlüssel in Azure Key Vault speichern. Speichern Sie beispielsweise spring-datasource-url in Azure Key Vault. In Ihrer Anwendung können Sie weiterhin spring.datasource.url verwenden, um den Eigenschaftswert abzurufen.
Anmerkung
Diese Methode kann eine Anforderung wie spring.datasource-urlnicht erfüllen. Wenn Sie spring-datasource-url im Key Vault speichern, wird nur spring.datasource.url und spring-datasource-url unterstützt, um den Eigenschaftswert abzurufen, aber spring.datasource-url wird nicht unterstützt. Informationen zur Behandlung dieses Falls finden Sie im Abschnitt Verwenden von Eigenschaftsplatzhaltern.
Verwenden von Eigenschaftsplatzhaltern
Angenommen, Sie legen diese Eigenschaft in Ihrer application.properties Datei fest:
property.with.special.character__=${propertyWithoutSpecialCharacter}
Die Anwendung erhält einen propertyWithoutSpecialCharacter Schlüsselnamen und weist dessen Wert property.with.special.character__zu.
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-keysauflisten.
Festlegen des Aktualisierungsintervalls
Standardmäßig werden die geheimen Schlüssel in KeyVaultPropertySource alle 30 Minuten aktualisiert. Sie können die Zeit nach spring.cloud.azure.keyvault.secret.property-sources[].refresh-intervalkonfigurieren. Beispiel: spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m bedeutet, alle 60 Minuten zu aktualisieren. Legen Sie auf 0 fest, um die automatische Aktualisierung zu deaktivieren.
PropertySource-Priorität
Wenn der Schlüssel in mehreren PropertySources vorhanden ist, entscheidet die Priorität, welcher davon wirksam wird.
- Wenn in der liste
SystemEnvironmentPropertySourcekeinePropertySourcevorhanden ist, hatKeyVaultPropertySourcedie höchste Priorität. - Wenn
SystemEnvironmentPropertySourcein der ListePropertySourcevorhanden ist, habenSystemEnvironmentPropertySourceeine höhere Priorität alsKeyVaultPropertySource, was bedeutet, dass Sie eine Umgebungsvariable verwenden können, um den Wert des Key Vault-Geheimnisses in Ihrer Anwendung zu überschreiben. - Wenn die Liste
PropertySourcemehrere Key-Vault-Eigenschaftsquellen enthält, entspricht die Definitionsreihenfolge der Prioritätsreihenfolge. Wenn Sie das obige Beispiel als Beispiel verwenden, hatkey-vault-property-source-1eine höhere Priorität alskey-vault-property-source-2.
Konfigurieren von Tokenanmeldeinformationen für key Vault-Eigenschaftsquelle
Wenn Sie für Key Vault PropertySource eine bestimmte Tokenanmeldeinformation verwenden müssen, können Sie die TokenCredential-Bean in ConfigurableBootstrapContext für KeyVaultEnvironmentPostProcessor registrieren. Diese Funktion wird ab Spring Cloud Azure 5.16.0 unterstützt. Hier ist ein Beispiel für die Verwendung von 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);
}
Alle konfigurierbaren Eigenschaften
| Eigentum | Standardwert | Beschreibung |
|---|---|---|
spring.cloud.azure.keyvault.secret.property-source-enabled |
wahr | 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[].case-sensitive |
FALSCH | 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 können abgerufen werden, wenn diese Eigenschaft fehlt. | |
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval |
30 m | Zeitintervall für die Aktualisierung aller Geheimnisse in Key Vault. |
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 |
Eigenschaften im Zusammenhang mit Anmeldeinformationen. | |
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. |
- Siehe Autorisieren des Zugriffs mit Microsoft Entra ID, um sicherzustellen, dass dem Sicherheitsprinzipal ausreichende Berechtigungen für den Zugriff auf die Geheimnisse in Azure Key Vault gewährt wurden.
- Wenn allgemeine Eigenschaften wie
client,credential,profile,proxy,retrynicht inspring.cloud.azure.keyvault.secret.property-sources[].xxxkonfiguriert sind, werdenspring.cloud.azure.xxxverwendet. 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.
Proben
Sehen Sie sich die spring-cloud-azure-starter-keyvault-secrets Beispiele auf GitHub an.