Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Konstrukcja platformy Azure spring Cloud PropertySource, która przechowuje wpisy tajne przechowywane w wpisach tajnych usługi Azure Key Vault.
Konfiguracja zależności
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
Napiwek
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 usługi Key Vault obsługują tylko znaki w [0-9a-zA-Z-]. Aby uzyskać więcej informacji, zobacz sekcjęVault-name and Object-name (Nazwa obiektu i nazwa obiektu) Azure Key Vault keys, secrets and certificates overview (Omówienie kluczy, wpisów tajnych i certyfikatów). 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 wpisów tajnych
. nie jest obsługiwana w nazwach wpisów tajnych. Jeśli aplikacja ma nazwę właściwości zawierającą ., taką jak spring.datasource.url, zastąp .- 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.
Nuta
Ta metoda nie może spełnić wymagań, takich jak spring.datasource-url. Podczas zapisywania spring-datasource-url w usłudze Key Vault obsługiwana jest tylko spring.datasource.url i spring-datasource-url w celu pobrania wartości właściwości, ale spring.datasource-url nie jest obsługiwana. Aby obsłużyć ten przypadek, zobacz sekcję Użyj symboli zastępczych właściwości.
Używanie symboli zastępczych 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 w usłudze Key Vault
Jeśli zapisano 1000 wpisów tajnych w usłudze Key Vault i chcesz użyć tylko 3 z nich. Listę 3 nazw wpisów tajnych można wyświetlić, 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 właściwościSource
Jeśli klucz istnieje w wielu obiektach PropertySources, co zacznie obowiązywać, jest ustalane przez priorytet.
- Jeśli na liście
SystemEnvironmentPropertySourcenie maPropertySource,KeyVaultPropertySourcebędzie mieć najwyższy priorytet. - Jeśli na liście
SystemEnvironmentPropertySourceznajduje sięPropertySource,SystemEnvironmentPropertySourcemają wyższy priorytet niżKeyVaultPropertySource, co oznacza, że możesz użyć zmiennej środowiskowej, aby zastąpić wartość wpisu tajnego usługi 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 usługi Key Vault
Jeśli musisz użyć określonego poświadczenia tokenu dla usługi Key Vault PropertySource, możesz zarejestrować fasolę TokenCredential w ConfigurableBootstrapContext dla KeyVaultEnvironmentPostProcessor, ta funkcja jest obsługiwana w usłudze 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 | Czy włączyć źródło właściwości usługi Key Vault. |
| spring.cloud.azure.keyvault.secret.property-sources[].nazwa | 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[].wielkość liter | fałszywy | Określa, czy klucze tajne są uwzględniane w wielkości liter. |
| spring.cloud.azure.keyvault.secret.property-sources[].klucze-tajne | Klucze tajne obsługiwane dla tego źródła właściwości. Wszystkie klucze są pobierane, jeśli brakuje tej właściwości. | |
| spring.cloud.azure.keyvault.secret.property-sources[].interwał odświeżania | 30 m | Interwał czasu odświeżania wszystkich wpisów tajnych usługi Key Vault. |
| spring.cloud.azure.keyvault.secret.property-sources[].wersja-usługi | Wersja usługi tajnej używana podczas tworzenia żądań interfejsu API. | |
| spring.cloud.azure.keyvault.secret.property-sources[].client | Właściwości powiązane z klientem. | |
| 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[].ponów próbę | Ponów próbę powiązanych właściwości. |
- Zobacz Autoryzuj dostęp za pomocą identyfikatora Entra firmy Microsoft, aby upewnić się, że podmiot zabezpieczeń otrzymał wystarczające uprawnienia dostępu do wpisów tajnych usługi 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. Aby uzyskać więcej informacji na temat tych typowych właściwości, zobacz konfiguracji platformy Azure Spring Cloud. - Aby uzyskać więcej informacji na temat zagnieżdżonych właściwości, zobacz Właściwości konfiguracji platformy Azure platformy Spring Cloud.
Próbki
Zobacz przykłady spring-cloud-azure-starter-keyvault-secrets w witrynie GitHub.