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-secret
krä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 duKeyVaultPropertySource
högst prioritet. - Om det finns
SystemEnvironmentPropertySource
i PropertySource-listan har duSystemEnvironmentPropertySource
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 änkey-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. |
- Se Auktorisera åtkomst med Microsoft Entra-ID för att kontrollera att säkerhetsobjektet har beviljats tillräcklig behörighet för att få åtkomst till Azure Key Vault-hemligheterna.
- Om vanliga egenskaper som
client
,credential
,profile
,proxy
,retry
inte är konfigurerade ispring.cloud.azure.keyvault.secret.property-sources[].xxx
,spring.cloud.azure.xxx
används. Mer information om de här vanliga egenskaperna finns i Azure-konfigurationen för Spring Cloud. - Mer information om kapslade egenskaper finns i Azure-konfigurationsegenskaper för Spring Cloud.
Exempel
Se exemplen spring-cloud-azure-starter-keyvault-secrets på GitHub.