Megosztás a következőn keresztül:


Spring Cloud Azure titkos kódok kezelése

A Spring Cloud Azure PropertySource, amely az Azure Key Vault titkos kulcsaiban tárolt titkos kulcsokat tartalmazza.

Függőség beállítása

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>

Borravaló

Emellett spring-cloud-azure-starter-keyvault biztosítunk a Key Vault összes funkciójának támogatásához. Ha úgy dönt, hogy használja, spring.cloud.azure.keyvault.enable a konfigurálni kívánt tulajdonság, és az alapértelmezett érték true. Ezután a spring.cloud.azure.keyvault.<keyvault-service>.enable használatával letilthatja a szükségtelen szolgáltatásokat.

Alapszintű használat

Ha client-id és client-secretszeretne hitelesíteni, a következő tulajdonságokra van szükség:

Konfigurációs tulajdonságok

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-kód

@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);
    }
}

Speciális használat

Speciális karakterek a tulajdonságnévben

A Key Vault titkos kulcsnevei csak a [0-9a-zA-Z-]karaktereit támogatják. További információ: Azure Key Vault-kulcsok, titkos kulcsok és tanúsítványoktárolónév és objektumnév. Ha a tulajdonságnév más karaktereket is tartalmaz, az alábbi szakaszokban ismertetett kerülő megoldásokat használhatja.

Titkos nevekben - helyett . használata

. titkos nevek nem támogatják. Ha az alkalmazás olyan tulajdonságnévvel rendelkezik, amely .tartalmaz (például spring.datasource.url), cserélje le .- a titkos kód Azure Key Vaultban való mentésekor. Mentse például spring-datasource-url az Azure Key Vaultban. Az alkalmazásban továbbra is használhatja a spring.datasource.url a tulajdonságérték lekéréséhez.

Jegyzet

Ez a módszer nem felel meg a spring.datasource-url. Ha spring-datasource-url ment a Key Vaultban, csak spring.datasource.url és spring-datasource-url támogatott a tulajdonságérték lekérése, de spring.datasource-url nem támogatott. Az eset kezeléséhez tekintse meg a Tulajdonsághelyőrzők használata szakaszt.

Tulajdonsághelyőrzők használata

Tegyük fel például, hogy ezt a tulajdonságot az application.properties fájlban állítja be:

property.with.special.character__=${propertyWithoutSpecialCharacter}

Az alkalmazás egy propertyWithoutSpecialCharacter kulcsnevet kap, és hozzárendeli az értékét property.with.special.character__.

Kis- és nagybetűk megkülönböztetése

A kis- és nagybetűk megkülönböztetése mód engedélyezéséhez a következő tulajdonságot állíthatja be:

spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive=true

Nem kéri le az összes titkos kulcsot a Key Vaultban

Ha 1000 titkos kulcsot tárolt a Key Vaultban, és csak 3 titkos kulcsot szeretne használni. A 3 titkos nevet spring.cloud.azure.keyvault.secret.property-sources[].secret-keyslistázhatja.

Frissítési időköz beállítása

Alapértelmezés szerint a KeyVaultPropertySource titkos kulcsai 30 percenként frissülnek. Az időt spring.cloud.azure.keyvault.secret.property-sources[].refresh-intervalkonfigurálhatja. Például: spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m 60 percenkénti frissítést jelent. Állítsa 0 az automatikus frissítés letiltásához.

PropertySource-prioritás

Ha a kulcs több PropertySource-ban is létezik, amely érvénybe lép, a prioritás dönti el.

  • Ha nincs SystemEnvironmentPropertySource a PropertySource listában, akkor KeyVaultPropertySource lesz a legmagasabb prioritás.
  • Ha SystemEnvironmentPropertySource szerepel a PropertySource listában, akkor SystemEnvironmentPropertySource magasabb prioritással rendelkezik, mint KeyVaultPropertySource, ami azt jelenti, hogy egy környezeti változóval felülbírálhatja a Key Vault titkos kulcsértékét az alkalmazásban.
  • Ha a PropertySource listában több key vault tulajdonságforrás is szerepel, akkor a definíció sorrendje a prioritási sorrend. A fenti mintát példaként véve key-vault-property-source-1 nagyobb prioritással rendelkezik, mint key-vault-property-source-2.

Token hitelesítő adatainak konfigurálása a Key Vault tulajdonságforrásához

Ha a Key Vault PropertySourcemegadott token hitelesítő adatait kell használnia, regisztrálhatja a TokenCredential babot a ConfigurableBootstrapContextKeyVaultEnvironmentPostProcessor, ezt a funkciót a Spring Cloud Azure 5.16.0 támogatja. Íme egy példa a AzureCliCredentialhasználatára:

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);
}

Minden konfigurálható tulajdonság

Ingatlan Alapértelmezett érték Leírás
spring.cloud.azure.keyvault.secret.property-source-enabled igaz A Key Vault tulajdonságforrásának engedélyezése.
spring.cloud.azure.keyvault.secret.property-sources[].name A tulajdonságforrás neve.
spring.cloud.azure.keyvault.secret.property-sources[].endpoint Azure Key Vault-végpont.
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive téves A titkos kulcsok megkülönböztetik-e a kis- és nagybetűket.
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys A tulajdonságforráshoz támogatott titkos kulcsok. Ha ez a tulajdonság hiányzik, minden kulcs lekérhető.
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval 30m Az összes Key Vault-titkos kulcs frissítéséhez szükséges időintervallum.
spring.cloud.azure.keyvault.secret.property-sources[].service-version Az API-kérések során használt titkosszolgáltatás-verzió.
spring.cloud.azure.keyvault.secret.property-sources[].client Ügyfélhez kapcsolódó tulajdonságok.
spring.cloud.azure.keyvault.secret.property-sources[].credential Hitelesítő adatokkal kapcsolatos tulajdonságok.
spring.cloud.azure.keyvault.secret.property-sources[].profile Profilhoz kapcsolódó tulajdonságok.
spring.cloud.azure.keyvault.secret.property-sources[].proxy Proxyval kapcsolatos tulajdonságok.
spring.cloud.azure.keyvault.secret.property-sources[].retry Próbálkozzon újra a kapcsolódó tulajdonságokkal.

Minták

Tekintse meg a spring-cloud-azure-starter-keyvault-secrets mintákat, a GitHubon.