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-secretnach 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-urlspring.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 als key-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.

Beispiele

Sehen Sie sich die Beispiele für spring-cloud-azure-starter-keyvault-secrets auf GitHub an.