Hemlig hantering av Spring Cloud Azure

Den här artikeln gäller för: ✔️ Version 4.14.0 ✔️ Version 5.8.0

Spring Cloud Azure-konstruktion PropertySource som innehåller hemligheter som lagras i Azure Key Vault-hemligheter.

Beroendekonfiguration

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

Dricks

Vi tillhandahåller spring-cloud-azure-starter-keyvault även för att stödja alla funktioner i Key Vault. Om du väljer att använda den är spring.cloud.azure.keyvault.enable egenskapen som ska konfigureras och standardvärdet är sant. Du kan sedan använda spring.cloud.azure.keyvault.<keyvault-service>.enable för att inaktivera tjänster som inte behövs.

Grundläggande användning

Om du vill autentisera efter client-id och client-secretkrävs följande egenskaper:

Konfigurationsegenskaper

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-kod

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

Avancerad användning

Specialtecken i egenskapsnamn

Key Vault-hemliga namn stöder endast tecken i [0-9a-zA-Z-]. Mer information finns iavsnittet Valvnamn och objektnamn i översikten över Azure Key Vault-nycklar, hemligheter och certifikat. Om egenskapsnamnet innehåller andra tecken kan du använda de lösningar som beskrivs i följande avsnitt.

Använd - i stället för . i hemliga namn

. stöds inte i hemliga namn. Om ditt program har ett egenskapsnamn som innehåller ., till exempel spring.datasource.url, ersätter . du med - när du sparar hemligheten i Azure Key Vault. Spara till exempel spring-datasource-url i Azure Key Vault. I ditt program kan du fortfarande använda spring.datasource.url för att hämta egenskapsvärdet.

Kommentar

Den här metoden kan inte uppfylla ett krav som spring.datasource-url. När du sparar spring-datasource-url i Key Vault stöds endast spring.datasource.url och spring-datasource-url för att hämta egenskapsvärdet, men spring.datasource-url stöds inte. Information om hur du hanterar det här fallet finns i avsnittet Använd platshållare för egenskapen.

Använda egenskapsplatshållare

Anta till exempel att du ställer in den här egenskapen i filen application.properties :

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

Programmet hämtar ett propertyWithoutSpecialCharacter nyckelnamn och tilldelar dess värde till property.with.special.character__.

Skiftlägeskänsliga

Om du vill aktivera skiftlägeskänsligt läge kan du ange följande egenskap:

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

Hämta inte alla hemligheter i Key Vault

Om du har lagrat 1 000 hemligheter i Key Vault och bara vill använda 3 av dem. Du kan lista de tre hemliga namnen efter spring.cloud.azure.keyvault.secret.property-sources[].secret-keys.

Ange uppdateringsintervall

Som standard uppdateras hemligheterna i KeyVaultPropertySource var 30:e minut. Du kan konfigurera tiden med spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval. Till exempel: spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m innebär uppdatering var 60:e minut. Ange till för att 0 inaktivera automatisk uppdatering.

PropertySource-prioritet

Om nyckeln finns i flera PropertySources, som börjar gälla, bestäms av prioriteten.

  • Om det inte finns någon SystemEnvironmentPropertySource i PropertySource-listan får du KeyVaultPropertySource högst prioritet.
  • Om det finns SystemEnvironmentPropertySource i PropertySource-listan har du SystemEnvironmentPropertySource högre prioritet än KeyVaultPropertySource. Det innebär att du kan använda miljövariabeln för att åsidosätta nyckelvalvets hemliga värde i ditt program.
  • Om det finns flera KeyVaultPropertySource i PropertySource-listan är definitionsordningen prioritetsordningen. Exempelexemplet key-vault-property-souece-1 ovan har högre prioritet än key-vault-property-souece-2.

Alla konfigurerbara egenskaper

Property Standardvärde beskrivning
spring.cloud.azure.keyvault.secret.property-source-enabled true Om du vill aktivera key vault-egenskapskällan.
spring.cloud.azure.keyvault.secret.property-sources[].name Namnet på den här egenskapskällan.
spring.cloud.azure.keyvault.secret.property-sources[].endpoint Azure Key Vault-slutpunkt.
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive falskt Om de hemliga nycklarna är skiftlägeskänsliga.
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys De hemliga nycklar som stöds för den här egenskapskällan. Alla nycklar hämtas om den här egenskapen saknas.
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval 30m Tidsintervall för att uppdatera alla Key Vault-hemligheter.
spring.cloud.azure.keyvault.secret.property-sources[].service-version Secret Service-version som används när API-begäranden görs.
spring.cloud.azure.keyvault.secret.property-sources[].client Klientrelaterade egenskaper.
spring.cloud.azure.keyvault.secret.property-sources[].credential Autentiseringsrelaterade egenskaper.
spring.cloud.azure.keyvault.secret.property-sources[].profile Profilrelaterade egenskaper.
spring.cloud.azure.keyvault.secret.property-sources[].proxy Proxyrelaterade egenskaper.
spring.cloud.azure.keyvault.secret.property-sources[].försök igen Försök igen relaterade egenskaper.

Exempel

Se exemplen spring-cloud-azure-starter-keyvault-secrets på GitHub.