Zarządzanie wpisami tajnymi platformy Azure w usłudze Spring Cloud
Ten artykuł dotyczy: ✔️ wersja 4.14.0 ✔️ w wersji 5.8.0
Konstrukcja PropertySource
platformy Azure Spring Cloud, 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 spring-cloud-azure-starter-keyvault
również obsługę wszystkich funkcji usługi Key Vault. Jeśli zdecydujesz się go użyć, jest właściwością do spring.cloud.azure.keyvault.enable
skonfigurowania, a wartość domyślna to true. Następnie możesz użyć spring.cloud.azure.keyvault.<keyvault-service>.enable
polecenia , aby wyłączyć niepotrzebne usługi.
Podstawowy sposób użycia
Jeśli chcesz uwierzytelnić się przy użyciu client-id
elementów 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);
}
}
Użycie zaawansowane
Znaki specjalne w nazwie właściwości
Nazwy wpisów tajnych usługi Key Vault obsługują tylko znaki w pliku [0-9a-zA-Z-]
. Aby uzyskać więcej informacji, zobacz sekcję Nazwa magazynu i Nazwa obiektu w temacie 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 wpisów tajnych .
.
nie jest obsługiwana w nazwach wpisów tajnych. Jeśli aplikacja ma nazwę właściwości zawierającą .
element , taki jak spring.datasource.url
, zastąp ciąg .
ciągiem -
podczas zapisywania wpisu tajnego w usłudze Azure Key Vault. Na przykład zapisz w usłudze spring-datasource-url
Azure Key Vault. W aplikacji nadal można użyć spring.datasource.url
polecenia , aby pobrać wartość właściwości.
Uwaga
Ta metoda nie może spełnić wymagań, takich jak spring.datasource-url
. Podczas zapisywania spring-datasource-url
w usłudze Key Vault tylko spring.datasource.url
i spring-datasource-url
jest obsługiwana opcja pobierania wartości właściwości, ale spring.datasource-url
nie jest obsługiwana. Aby obsłużyć ten przypadek, zobacz sekcję Używanie 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 propertyWithoutSpecialCharacter
nazwę klucza i przypisze jej wartość do property.with.special.character__
.
Rozróżniana 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ć według .spring.cloud.azure.keyvault.secret.property-sources[].secret-keys
Ustawianie interwału odświeżania
Domyślnie wpisy tajne w pliku KeyVaultPropertySource
będą odświeżane co 30 minut. Czas można skonfigurować według .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ść na , aby 0
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 PropertySource nie
SystemEnvironmentPropertySource
ma elementu ,KeyVaultPropertySource
zostanie wyświetlony najwyższy priorytet. - Jeśli na liście WłaściwośćSource znajduje
SystemEnvironmentPropertySource
się wyższy priorytet niżSystemEnvironmentPropertySource
KeyVaultPropertySource. Oznacza to, że możesz użyć zmiennej środowiskowej, aby zastąpić wartość wpisu tajnego usługi Key Vault w aplikacji. - Jeśli na liście PropertySource znajduje się wiele elementów KeyVaultPropertySource, kolejność definicji jest kolejnością priorytetu. Weźmy powyższy przykład, jak na przykład,
key-vault-property-souece-1
ma wyższy priorytet niżkey-vault-property-souece-2
.
Wszystkie konfigurowalne właściwości
Właściwości | Wartość domyślna | opis |
---|---|---|
spring.cloud.azure.keyvault.secret.property-source-enabled | prawda | Czy włączyć źródło właściwości usługi 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[].wielkość liter | fałsz | Określa, czy klucze tajne są uwzględniane w wielkości liter. |
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys | 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[].refresh-interval | 30 min | Interwał czasu 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 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 Autoryzowanie dostępu 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 zostaną użyte typowe właściwości, takie jak
client
, ,credential
profile
,proxy
, nieretry
są skonfigurowane w systemiespring.cloud.azure.keyvault.secret.property-sources[].xxx
spring.cloud.azure.xxx
. Aby uzyskać więcej informacji na temat tych typowych właściwości, zobacz Konfiguracja platformy Azure platformy Spring Cloud. - Aby uzyskać więcej informacji na temat właściwości zagnieżdżonych, zobacz Właściwości konfiguracji platformy Spring Cloud platformy Azure.
Przykłady
Zobacz przykłady spring-cloud-azure-starter-keyvault-secrets w witrynie GitHub.