Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Spring Cloud Azure konstruerar 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 även spring-cloud-azure-starter-keyvault 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 true. Du kan sedan använda spring.cloud.azure.keyvault.<keyvault-service>.enable för att inaktivera onödiga tjänster.
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 i avsnittetVault-name och Object-name i Azure Key Vault-nycklar, hemligheter och certifikatöversikt. 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. Du kan till exempel spara spring-datasource-url i Azure Key Vault. I programmet kan du fortfarande använda spring.datasource.url för att hämta egenskapsvärdet.
Not
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 egenskapsplatshållare.
Använda egenskapsplatshållare
Anta till exempel att du ställer in den här egenskapen i din application.properties-fil:
property.with.special.character__=${propertyWithoutSpecialCharacter}
Programmet får ett propertyWithoutSpecialCharacter nyckelnamn och tilldelar dess värde till property.with.special.character__.
Skiftlägeskänslig
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 genom att 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 0 för att 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ågra SystemEnvironmentPropertySourceiPropertySourcelistan fårKeyVaultPropertySourcehögsta prioritet.
- Om det finns SystemEnvironmentPropertySourcei listan överPropertySourceSystemEnvironmentPropertySourceha högre prioritet änKeyVaultPropertySource, vilket innebär att du kan använda en miljövariabel för att åsidosätta nyckelvalvets hemliga värde i ditt program.
- Om det finns flera nyckelvalvsegenskapskällor i PropertySourcelistan är definitionsordningen prioritetsordningen. Med exemplet ovan harkey-vault-property-source-1högre prioritet änkey-vault-property-source-2.
Konfigurera tokenautentiseringsuppgifter för Key Vault-egenskapskälla
Om du behöver använda en angiven tokenautentiseringsuppgift för Key Vault PropertySourcekan du registrera TokenCredential-bönan i ConfigurableBootstrapContext för KeyVaultEnvironmentPostProcessor, den här funktionen stöds från Spring Cloud Azure 5.16.0. Här är ett exempel på hur du använder 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);
}
Alla konfigurerbara egenskaper
| Egenskap | Standardvärde | Beskrivning | 
|---|---|---|
| spring.cloud.azure.keyvault.secret.property-source-enabled | sann | 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[].skiftlägeskänslig | falsk | 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 | 30 m | 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. | 
- Se Auktorisera åtkomst med Microsoft Entra-ID för att kontrollera att säkerhetsobjekt har beviljats tillräcklig behörighet för att få åtkomst till Azure Key Vault-hemligheterna.
- Om vanliga egenskaper som client,credential,profile,proxy,retryinte har konfigurerats ispring.cloud.azure.keyvault.secret.property-sources[].xxxanvändsspring.cloud.azure.xxx. Mer information om dessa vanliga egenskaper finns i Spring Cloud Azure-konfiguration.
- Mer information om kapslade egenskaper finns i Azure-konfigurationsegenskaper för Spring Cloud.
Prover
Se exemplen spring-cloud-azure-starter-keyvault-secrets på GitHub.