Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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.