Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Konstrukcja Spring Cloud Azure PropertySource, która przechowuje klucze tajne zapisane w usłudze Azure Key Vault Secrets.
Konfiguracja zależności
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
Wskazówka
Udostępniamy również spring-cloud-azure-starter-keyvault do obsługi wszystkich funkcji usługi Key Vault. Jeśli zdecydujesz się go użyć, spring.cloud.azure.keyvault.enable jest właściwością do skonfigurowania, a wartość domyślna to true. Następnie możesz użyć spring.cloud.azure.keyvault.<keyvault-service>.enable, aby wyłączyć niepotrzebne usługi.
Podstawowe użycie
Jeśli chcesz uwierzytelnić się za pomocą client-id i client-secret, wymagane są następujące właściwości:
Właściwości konfiguracji
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}
Kod Java
@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);
}
}
Zaawansowane użycie
Znaki specjalne w nazwie właściwości
Nazwy wpisów tajnych w usłudze Key Vault obsługują tylko znaki wymienione w [0-9a-zA-Z-]. Aby uzyskać więcej informacji, zobacz sekcję Nazwa magazynu i nazwa obiektu w artykule Omówienie kluczy, wpisów tajnych i certyfikatów usługi Azure Key Vault. Jeśli nazwa właściwości zawiera inne znaki, możesz użyć obejść opisanych w poniższych sekcjach.
Użyj - zamiast . w nazwach sekretów
Znak . nie jest obsługiwany w nazwach wpisów tajnych. Jeśli aplikacja ma nazwę właściwości zawierającą ., taką jak spring.datasource.url, zastąp . na - podczas zapisywania wpisu tajnego w usłudze Azure Key Vault. Na przykład zapisz spring-datasource-url w usłudze Azure Key Vault. W aplikacji nadal można użyć spring.datasource.url, aby pobrać wartość właściwości.
Uwaga
Ta metoda nie może spełnić wymagań, takich jak spring.datasource-url. Po zapisaniu spring-datasource-url w usłudze Key Vault do pobierania wartości właściwości są obsługiwane tylko spring.datasource.url i spring-datasource-url, natomiast spring.datasource-url nie jest obsługiwane. Aby obsłużyć ten przypadek, zobacz sekcję Używanie symboli zastępczych właściwości.
Użyj symboli zastępczych dla właściwości
Załóżmy na przykład, że ustawiasz tę właściwość w pliku application.properties:
property.with.special.character__=${propertyWithoutSpecialCharacter}
Aplikacja pobierze nazwę klucza propertyWithoutSpecialCharacter i przypisze jej wartość do property.with.special.character__.
Uwzględniana wielkość liter
Aby włączyć tryb uwzględniający wielkość liter, można ustawić następującą właściwość:
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive=true
Nie pobieraj wszystkich wpisów tajnych z usługi Key Vault
Jeśli masz zapisanych 1000 sekretów w usłudze Key Vault i chcesz użyć tylko 3 z nich. Możesz wyświetlić listę 3 tajnych nazw za pomocą spring.cloud.azure.keyvault.secret.property-sources[].secret-keys.
Ustawianie interwału odświeżania
Domyślnie wpisy tajne w KeyVaultPropertySource będą odświeżane co 30 minut. Czas można skonfigurować przez spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval. Na przykład: spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m oznacza odświeżanie co 60 minut. Ustaw wartość 0, aby wyłączyć automatyczne odświeżanie.
Priorytet źródła właściwości
Jeśli klucz istnieje w wielu źródłach właściwości, o tym, która wartość zostanie zastosowana, decyduje priorytet.
- Jeśli na liście
SystemEnvironmentPropertySourcenie maPropertySource,KeyVaultPropertySourcebędzie mieć najwyższy priorytet. - Jeśli na liście
PropertySourceznajduje sięSystemEnvironmentPropertySource, wówczasSystemEnvironmentPropertySourcemają wyższy priorytet niżKeyVaultPropertySource, co oznacza, że możesz użyć zmiennej środowiskowej, aby nadpisać wartość klucza tajnego w usłudze Key Vault w aplikacji. - Jeśli na liście
PropertySourceznajduje się wiele źródeł właściwości magazynu kluczy, kolejność definicji jest kolejnością priorytetu. W powyższym przykładziekey-vault-property-source-1ma wyższy priorytet niżkey-vault-property-source-2.
Konfigurowanie poświadczeń tokenu dla źródła właściwości Key Vault
Jeśli musisz użyć określonego poświadczenia tokenowego dla usługi Key Vault PropertySource, możesz zarejestrować bean TokenCredential w ConfigurableBootstrapContext dla KeyVaultEnvironmentPostProcessor; ta funkcja jest dostępna od wersji Spring Cloud Azure 5.16.0. Oto przykład użycia 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);
}
Wszystkie konfigurowalne właściwości
| Własność | Wartość domyślna | Opis |
|---|---|---|
spring.cloud.azure.keyvault.secret.property-source-enabled |
prawdziwy | Określa, czy włączyć źródło właściwości Key Vault. |
spring.cloud.azure.keyvault.secret.property-sources[].name |
Nazwa tego źródła właściwości. | |
spring.cloud.azure.keyvault.secret.property-sources[].endpoint |
Punkt końcowy usługi Azure Key Vault. | |
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive |
fałszywy | Określa, czy klucze tajne rozróżniają wielkość liter. |
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys |
Klucze tajne obsługiwane przez to źródło właściwości. Wszystkie klucze są pobierane, jeśli brakuje tej właściwości. | |
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval |
30 m | Interwał czasowy odświeżania wszystkich wpisów tajnych usługi Key Vault. |
spring.cloud.azure.keyvault.secret.property-sources[].service-version |
Wersja usługi tajnej używana podczas tworzenia żądań interfejsu API. | |
spring.cloud.azure.keyvault.secret.property-sources[].client |
Właściwości dotyczące klienta. | |
spring.cloud.azure.keyvault.secret.property-sources[].credential |
Właściwości powiązane z poświadczeniami. | |
spring.cloud.azure.keyvault.secret.property-sources[].profile |
Właściwości powiązane z profilem. | |
spring.cloud.azure.keyvault.secret.property-sources[].proxy |
Właściwości powiązane z serwerem proxy. | |
spring.cloud.azure.keyvault.secret.property-sources[].retry |
Ponów próbę powiązanych właściwości. |
- Zobacz Autoryzowanie dostępu przy użyciu Microsoft Entra ID, aby upewnić się, że podmiotowi zabezpieczeń przyznano odpowiednie uprawnienia dostępu do wpisów tajnych w usłudze Azure Key Vault.
- Jeśli typowe właściwości, takie jak
client,credential,profile,proxy,retrynie są skonfigurowane wspring.cloud.azure.keyvault.secret.property-sources[].xxx,spring.cloud.azure.xxxzostaną użyte. Zobacz konfigurację usługi Spring Cloud Azure, aby uzyskać więcej informacji na temat tych typowych właściwości. - Aby uzyskać więcej informacji na temat zagnieżdżonych właściwości, zobacz właściwości konfiguracji usługi Spring Cloud Azure.
Próbki
Zobacz przykłady w witrynie spring-cloud-azure-starter-keyvault-secrets GitHub.