Anmerkung
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-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 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-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 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-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, wird dies von der Priorität entschieden.
- Wenn in der liste
SystemEnvironmentPropertySourcekeinePropertySourcevorhanden ist, hatKeyVaultPropertySourcedie höchste Priorität. - Wenn in der Liste
SystemEnvironmentPropertySourcePropertySourcevorhanden ist, habenSystemEnvironmentPropertySourceeine 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
PropertySourcemehrere Schlüsseltresor-Eigenschaftenquellen vorhanden sind, ist die Definitionsreihenfolge die 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 eine angegebene Tokenanmeldeinformation für Key Vault-PropertySourceverwenden müssen, können Sie die TokenCredential Anan für ConfigurableBootstrapContextKeyVaultEnvironmentPostProcessor 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,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 beispiele spring-cloud-azure-starter-keyvault-secrets auf GitHub an.