Delen via


Spring Cloud Azure-geheimbeheer

Dit artikel is van toepassing op:✅ versie 4.19.0 ✅ versie 5.19.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>

Fooi

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

Basisgebruik

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 de sectieKluisnaam en Objectnaam sectie van Azure Key Vault-sleutels, geheimen en certificatenvoor meer informatie. Als uw eigenschapsnaam andere tekens bevat, kunt u de tijdelijke oplossingen gebruiken die in de volgende secties worden beschreven.

Gebruik - in plaats van . in geheime namen

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

Notitie

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

Tijdelijke aanduidingen voor eigenschappen gebruiken

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

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 op spring.cloud.azure.keyvault.secret.property-sources[].secret-keysweergeven.

Vernieuwingsinterval instellen

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

Eigenschapsbronprioriteit

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

  • Als er geen SystemEnvironmentPropertySource in de lijst met PropertySource staat, krijgt KeyVaultPropertySource de hoogste prioriteit.
  • Als er SystemEnvironmentPropertySource in de lijst PropertySource staat, heeft SystemEnvironmentPropertySource hogere prioriteit dan KeyVaultPropertySource. Dit betekent dat u een omgevingsvariabele kunt gebruiken om de geheime waarde van Key Vault in uw toepassing te overschrijven.
  • Als er meerdere sleutelkluiseigenschapsbronnen in de PropertySource lijst staan, is de definitievolgorde de prioriteitsvolgorde. Als u het bovenstaande voorbeeld als voorbeeld gebruikt, heeft key-vault-property-source-1 een hogere prioriteit dan key-vault-property-source-2.

Tokenreferenties configureren voor key Vault-eigenschapsbron

Als u een opgegeven tokenreferentie voor Key Vault-PropertySourcemoet gebruiken, kunt u de TokenCredential bean registreren in de ConfigurableBootstrapContext voor KeyVaultEnvironmentPostProcessor. Deze functie wordt ondersteund vanuit Spring Cloud Azure 5.19.0. Hier volgt een voorbeeld van het gebruik van 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 configureerbare eigenschappen

Eigenschap Standaardwaarde Beschrijving
spring.cloud.azure.keyvault.secret.property-source-enabled waar 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 vals 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 min. 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.

Monsters

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