Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 om deze te gebruiken, is spring.cloud.azure.keyvault.enable de eigenschap die moet worden geconfigureerd en de standaardwaarde is true. 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
SystemEnvironmentPropertySourcein de lijst metPropertySourcestaat, krijgtKeyVaultPropertySourcede hoogste prioriteit. - Als er
SystemEnvironmentPropertySourcein de lijstPropertySourcestaat, heeftSystemEnvironmentPropertySourcehogere prioriteit danKeyVaultPropertySource. 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
PropertySourcelijst staan, is de definitievolgorde de prioriteitsvolgorde. Als u het bovenstaande voorbeeld als voorbeeld gebruikt, heeftkey-vault-property-source-1een hogere prioriteit dankey-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.16.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[].naam | Naam van deze eigenschapsbron. | |
| spring.cloud.azure.keyvault.secret.property-sources[].eindpunt | 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-versie | 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[].profiel | 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,proxy,retryniet zijn geconfigureerd inspring.cloud.azure.keyvault.secret.property-sources[].xxx, wordenspring.cloud.azure.xxxgebruikt. Zie Spring Cloud Azure-configuratie voor meer informatie over deze algemene eigenschappen. - Zie Eigenschappen van Spring Cloud Azure-configuratie voor meer informatie over geneste eigenschappen.
Monsters
Zie de voorbeelden spring-cloud-azure-starter-keyvault-secrets op GitHub.