Spring Cloud Azure-geheimbeheer

Dit artikel is van toepassing op: ✔️ versie 4.14.0 ✔️ versie 5.8.0

Spring Cloud Azure-constructie PropertySource die geheimen bevat die zijn opgeslagen in Azure Key Vault-geheimen.

Afhankelijkheid instellen

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>

Tip

We bieden spring-cloud-azure-starter-keyvault ook ondersteuning voor alle functies van Key Vault. Als u ervoor kiest deze te gebruiken, spring.cloud.azure.keyvault.enable is de eigenschap die moet worden geconfigureerd en de standaardwaarde waar is. Vervolgens kunt spring.cloud.azure.keyvault.<keyvault-service>.enable u overbodige services uitschakelen.

Basaal gebruik

Als u wilt verifiëren door client-id en client-secret, zijn de volgende eigenschappen vereist:

Configuratie-eigenschappen

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);
    }
}

Geavanceerd gebruik

Speciale tekens in eigenschapsnaam

Sleutelkluisgeheimnamen ondersteunen alleen tekens in [0-9a-zA-Z-]. Zie desectie Kluisnaam en Objectnaam van Azure Key Vault-sleutels, geheimen en certificaten voor meer informatie. Als uw eigenschapsnaam andere tekens bevat, kunt u de tijdelijke oplossingen gebruiken die in de volgende secties worden beschreven.

Gebruiken - in plaats van . in geheime namen

. wordt niet ondersteund in geheime namen. Als uw toepassing een eigenschapsnaam heeft die , zoals spring.datasource.url, vervangt .. u door - bij het opslaan van het geheim in Azure Key Vault. Sla bijvoorbeeld op spring-datasource-url in Azure Key Vault. In uw toepassing kunt u nog steeds de spring.datasource.url eigenschapswaarde ophalen.

Notitie

Deze methode kan niet voldoen aan een vereiste, zoals spring.datasource-url. Wanneer u opslaat spring-datasource-url in Key Vault, wordt dit alleen spring.datasource.urlspring-datasource-url ondersteund om de eigenschapswaarde op te halen, maar spring.datasource-url wordt deze niet ondersteund. Zie de sectie Tijdelijke aanduidingen voor eigenschappen gebruiken om dit geval af te handelen.

Tijdelijke aanduidingen voor eigenschappen gebruiken

Stel dat u deze eigenschap instelt in het bestand application.properties :

property.with.special.character__=${propertyWithoutSpecialCharacter}

De toepassing krijgt een propertyWithoutSpecialCharacter sleutelnaam en wijst de waarde toe aan property.with.special.character__.

Hoofdlettergevoelig

Als u de hoofdlettergevoelige modus wilt inschakelen, kunt u de volgende eigenschap instellen:

spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive=true

Niet alle geheimen ophalen in Key Vault

Als u 1000 geheimen hebt opgeslagen in de Key Vault en u alleen 3 geheimen wilt gebruiken. U kunt de drie geheime namen weergeven op spring.cloud.azure.keyvault.secret.property-sources[].secret-keys.

Vernieuwingsinterval instellen

Standaard worden de geheimen elke KeyVaultPropertySource 30 minuten vernieuwd. U kunt de tijd configureren op spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval. Bijvoorbeeld: spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m betekent elke 60 minuten vernieuwen. Ingesteld om automatisch vernieuwen uit te 0 schakelen.

Eigenschapsbronprioriteit

Als de sleutel bestaat in meerdere PropertySources, die van kracht wordt, wordt bepaald door de prioriteit.

  • Als de lijst PropertySource niet SystemEnvironmentPropertySource voorkomt, krijgt u KeyVaultPropertySource de hoogste prioriteit.
  • Als er een eigenschapsbronlijst staat SystemEnvironmentPropertySource , hebt u een SystemEnvironmentPropertySource hogere prioriteit dan KeyVaultPropertySource. Dit betekent dat u de omgevingsvariabele kunt gebruiken om de sleutelkluisgeheimwaarde in uw toepassing te overschrijven.
  • Als er meerdere KeyVaultPropertySource in de lijst PropertySource staan, is de definitievolgorde de prioriteitsvolgorde. Neem het bovenstaande voorbeeld als voorbeeld, key-vault-property-souece-1 heeft een hogere prioriteit dan key-vault-property-souece-2.

Alle configureerbare eigenschappen

Eigenschappen Standaardwaarde Beschrijving
spring.cloud.azure.keyvault.secret.property-source-enabled true Of u de key vault-eigenschapsbron wilt inschakelen.
spring.cloud.azure.keyvault.secret.property-sources[].name Naam van deze eigenschapsbron.
spring.cloud.azure.keyvault.secret.property-sources[].endpoint Azure Key Vault-eindpunt.
spring.cloud.azure.keyvault.secret.property-sources[].hoofdlettergevoelig false Of de geheime sleutels hoofdlettergevoelig zijn.
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys De geheime sleutels die worden ondersteund voor deze eigenschapsbron. Alle sleutels worden opgehaald als deze eigenschap ontbreekt.
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval 30 minuten Tijdsinterval voor het vernieuwen van alle Key Vault-geheimen.
spring.cloud.azure.keyvault.secret.property-sources[].service-version De geheime serviceversie die wordt gebruikt bij het maken van API-aanvragen.
spring.cloud.azure.keyvault.secret.property-sources[].client Clientgerelateerde eigenschappen.
spring.cloud.azure.keyvault.secret.property-sources[].credential Referenties gerelateerde eigenschappen.
spring.cloud.azure.keyvault.secret.property-sources[].profile Profielgerelateerde eigenschappen.
spring.cloud.azure.keyvault.secret.property-sources[].proxy Proxy-gerelateerde eigenschappen.
spring.cloud.azure.keyvault.secret.property-sources[].probeer het opnieuw Gerelateerde eigenschappen opnieuw proberen.

Voorbeelden

Bekijk de spring-cloud-azure-starter-keyvault-secrets-voorbeelden op GitHub.