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.url
spring-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 uKeyVaultPropertySource
de hoogste prioriteit. - Als er een eigenschapsbronlijst staat
SystemEnvironmentPropertySource
, hebt u eenSystemEnvironmentPropertySource
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 dankey-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. |
- Zie Toegang autoriseren met Microsoft Entra-id om ervoor te zorgen dat aan de beveiligingsprincipaal voldoende machtigingen zijn verleend voor toegang tot de Azure Key Vault-geheimen.
- Als algemene eigenschappen zoals
client
,credential
,profile
, ,retry
proxy
niet zijn geconfigureerd inspring.cloud.azure.keyvault.secret.property-sources[].xxx
,spring.cloud.azure.xxx
worden gebruikt. Zie de Configuratie van Spring Cloud Azure voor meer informatie over deze algemene eigenschappen. - Zie Eigenschappen van Spring Cloud Azure-configuratie voor meer informatie over geneste eigenschappen.
Voorbeelden
Bekijk de spring-cloud-azure-starter-keyvault-secrets-voorbeelden op GitHub.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor