Správa tajných kódů Azure Spring Cloud

Tento článek se vztahuje na: ✔️ Verze 4.14.0 ✔️ verze 5.8.0

Konstruktor PropertySource Azure Spring Cloud, který obsahuje tajné kódy uložené v tajných klíčích služby Azure Key Vault.

Nastavení závislostí

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

Tip

Poskytujeme spring-cloud-azure-starter-keyvault také podporu všech funkcí služby Key Vault. Pokud se rozhodnete ji použít, je to vlastnost, spring.cloud.azure.keyvault.enable která se má nakonfigurovat a výchozí hodnota je true. Pak můžete zakázat spring.cloud.azure.keyvault.<keyvault-service>.enable nepotřebné služby.

Základní použití

Pokud chcete provést ověření pomocí client-id a client-secret, jsou vyžadovány následující vlastnosti:

Vlastnosti konfigurace

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}

Kód 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);
    }
}

Pokročilé využití

Speciální znaky v názvu vlastnosti

Názvy tajných kódů služby Key Vault podporují pouze znaky v [0-9a-zA-Z-]. Další informace najdete v části Název trezorua Název objektu klíčů, tajných klíčů a certifikátů služby Azure Key Vault. Pokud název vlastnosti obsahuje další znaky, můžete použít alternativní řešení popsaná v následujících částech.

Používejte - místo v názvech tajných . kódů.

. nepodporuje se v názvech tajných kódů. Pokud má vaše aplikace název vlastnosti, která obsahuje ., například spring.datasource.url, nahraďte .- při ukládání tajného kódu ve službě Azure Key Vault. Například uložte spring-datasource-url ve službě Azure Key Vault. V aplikaci můžete stále použít spring.datasource.url k načtení hodnoty vlastnosti.

Poznámka:

Tato metoda nemůže splnit požadavek, jako spring.datasource-urlje . Při ukládání spring-datasource-url ve službě Key Vault se podporuje pouze spring.datasource.url načtení spring-datasource-url hodnoty vlastnosti, ale spring.datasource-url nepodporuje se. Pokud chcete tento případ zpracovat, přečtěte si část Použití zástupných symbolů vlastností.

Použití zástupných symbolů vlastností

Předpokládejme například, že tuto vlastnost nastavujete v souboru application.properties :

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

Aplikace získá propertyWithoutSpecialCharacter název klíče a přiřadí jeho hodnotu property.with.special.character__.

Case-sensitive

Pokud chcete povolit režim rozlišující malá a velká písmena, můžete nastavit následující vlastnost:

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

Nečíst všechny tajné kódy ve službě Key Vault

Pokud jste ve službě Key Vault uložili 1000 tajných kódů a chcete jich jenom použít 3. Seznam 3 tajných jmen můžete zobrazit podle spring.cloud.azure.keyvault.secret.property-sources[].secret-keys.

Nastavení intervalu aktualizace

Ve výchozím nastavení se tajné kódy KeyVaultPropertySource aktualizují každých 30 minut. Čas můžete nakonfigurovat podle spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval. Příklad: Znamená aktualizaci spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m každých 60 minut. Nastavte na zakázání 0 automatické aktualizace.

Priorita PropertySource

Pokud klíč existuje ve více Zdrojích vlastností, který se projeví, určí priorita.

  • Pokud seznam PropertySource neexistuje SystemEnvironmentPropertySource , KeyVaultPropertySource bude mít nejvyšší prioritu.
  • Pokud je SystemEnvironmentPropertySource v seznamu PropertySource, pak SystemEnvironmentPropertySource mít vyšší prioritu než KeyVaultPropertySource. To znamená, že proměnnou prostředí můžete použít k přepsání hodnoty tajného kódu služby Key Vault ve vaší aplikaci.
  • Pokud je v seznamu PropertySource více zdrojů KeyVaultPropertySource, pořadí definic je pořadí priority. Vezměte výše uvedený vzorek jako příklad, key-vault-property-souece-1 má vyšší prioritu než key-vault-property-souece-2.

Všechny konfigurovatelné vlastnosti

Vlastnost Výchozí hodnota Popis
spring.cloud.azure.keyvault.secret.property-source-enabled true Určuje, jestli chcete povolit zdroj vlastností služby Key Vault.
spring.cloud.azure.keyvault.secret.property-sources[].name Název tohoto zdroje vlastnosti.
spring.cloud.azure.keyvault.secret.property-sources[].endpoint Koncový bod služby Azure Key Vault
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive false (nepravda) Jestli jsou tajné klíče citlivé na malá a velká písmena.
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys Tajné klíče podporované pro tento zdroj vlastností. Pokud tato vlastnost chybí, načtou se všechny klíče.
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval 30 min. Časový interval pro aktualizaci všech tajných kódů služby Key Vault
spring.cloud.azure.keyvault.secret.property-sources[].service-version Verze tajné služby používaná při vytváření požadavků rozhraní API.
spring.cloud.azure.keyvault.secret.property-sources[].client Vlastnosti související s klientem
spring.cloud.azure.keyvault.secret.property-sources[].credential Vlastnosti související s přihlašovacími údaji
spring.cloud.azure.keyvault.secret.property-sources[].profile Vlastnosti související s profilem
spring.cloud.azure.keyvault.secret.property-sources[].proxy Vlastnosti související s proxy serverem
spring.cloud.azure.keyvault.secret.property-sources[].opakování Opakujte související vlastnosti.

Ukázky

Podívejte se na ukázky spring-cloud-azure-starter-keyvault-secrets na GitHubu.