Udostępnij za pośrednictwem


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, , credentialprofile, proxy, nie retry są skonfigurowane w systemie spring.cloud.azure.keyvault.secret.property-sources[].xxxspring.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.