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.
Setup von Abhängigkeiten
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
Trinkgeld
Wir bieten auch spring-cloud-azure-starter-keyvault
, um alle Features von Key Vault zu unterstützen. 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-secret
authentifizieren 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 Eigenschaftennamen
Schlüsseltresor-Geheimnamen unterstützen nur Zeichen in [0-9a-zA-Z-]
. Weitere Informationen finden Sie im AbschnittTresornamen und Objektnamen Abschnitt Azure Key Vault-Schlüssel, geheime Schlüssel 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-url
nicht 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 zum Behandeln dieses Falls finden Sie im Abschnitt Verwenden von Eigenschaftsplatzhaltern Abschnitt.
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-keys
auflisten.
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-interval
konfigurieren. 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, wird dies von der Priorität entschieden.
- Wenn in der liste
SystemEnvironmentPropertySource
keinePropertySource
vorhanden ist, hatKeyVaultPropertySource
die höchste Priorität. - Wenn in der Liste
SystemEnvironmentPropertySource
PropertySource
vorhanden ist, habenSystemEnvironmentPropertySource
eine höhere Priorität alsKeyVaultPropertySource
, was bedeutet, dass Sie eine Umgebungsvariable verwenden können, um den Schlüsseltresorschlüsselwert in Ihrer Anwendung außer Kraft zu setzen. - Wenn in der Liste
PropertySource
mehrere Schlüsseltresor-Eigenschaftenquellen vorhanden sind, ist die Definitionsreihenfolge die Prioritätsreihenfolge. Wenn Sie das obige Beispiel als Beispiel verwenden, hatkey-vault-property-source-1
eine höhere Priorität alskey-vault-property-source-2
.
Konfigurieren von Tokenanmeldeinformationen für key Vault-Eigenschaftsquelle
Wenn Sie eine angegebene Tokenanmeldeinformation für Key Vault-PropertySource
verwenden müssen, können Sie die TokenCredential
Anan für ConfigurableBootstrapContext
KeyVaultEnvironmentPostProcessor
registrieren, dieses Feature wird von 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 | STIMMT | 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 | 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 werden abgerufen, wenn diese Eigenschaft fehlt. | |
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval | ca. 30 m | 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 | 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. |
- 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 Secrets gewährt wurde.
- Wenn allgemeine Eigenschaften wie
client
,credential
,profile
,proxy
,retry
nicht inspring.cloud.azure.keyvault.secret.property-sources[].xxx
konfiguriert sind, werdenspring.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.
Proben
Sehen Sie sich die beispiele spring-cloud-azure-starter-keyvault-secrets auf GitHub an.