Sdílet prostřednictvím


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

Tento článek se vztahuje na:✅ verze 4.19.0 ✅ verze 5.19.0

Konstruktor Azure Spring Cloud PropertySource, 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>

Spropitné

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

Základní využ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 částiNázev trezoru a název objektuklíče, tajné kódy a certifikáty služby Azure Key Vault s přehledem. Pokud název vlastnosti obsahuje další znaky, můžete použít alternativní řešení popsaná v následujících částech.

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

. se v názvech tajných kódů nepodporuje. 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 je spring.datasource-url. Při ukládání spring-datasource-url ve službě Key Vault se k načtení hodnoty vlastnosti podporuje jenom spring.datasource.url a spring-datasource-url, ale spring.datasource-url se nepodporuje. Pokud chcete tento případ zpracovat, podívejte se na čá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á název klíče propertyWithoutSpecialCharacter a přiřadí jeho hodnotu property.with.special.character__.

Rozlišují se malá a velká písmena.

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 názvů tajných kódů můžete zobrazit spring.cloud.azure.keyvault.secret.property-sources[].secret-keys.

Nastavení intervalu aktualizace

Ve výchozím nastavení se tajné kódy v KeyVaultPropertySource aktualizují každých 30 minut. Čas můžete nakonfigurovat spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval. Například: spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m znamená aktualizaci každých 60 minut. Pokud chcete zakázat automatickou aktualizaci, nastavte na 0.

Priorita PropertySource

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

  • Pokud v seznamu SystemEnvironmentPropertySource nejsou žádné PropertySource, bude mít KeyVaultPropertySource nejvyšší prioritu.
  • Pokud je v seznamu SystemEnvironmentPropertySourcePropertySource, pak SystemEnvironmentPropertySource mají vyšší prioritu než KeyVaultPropertySource, což znamená, že můžete použít proměnnou prostředí k přepsání hodnoty tajného klíče služby Key Vault ve vaší aplikaci.
  • Pokud je v seznamu PropertySource více zdrojů vlastností trezoru klíčů, pořadí definic je pořadí priority. Jako příklad použijeme výše uvedený vzorek, key-vault-property-source-1 má vyšší prioritu než key-vault-property-source-2.

Konfigurace přihlašovacích údajů tokenu pro zdroj vlastností služby Key Vault

Pokud potřebujete pro PropertySourceslužby Key Vault použít zadané přihlašovací údaje tokenu, můžete zaregistrovat TokenCredential bean v ConfigurableBootstrapContext pro KeyVaultEnvironmentPostProcessor, tato funkce je podporovaná z Platformy Spring Cloud Azure 5.19.0. Tady je příklad použití 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);
}

Všechny konfigurovatelné vlastnosti

Vlastnost Výchozí hodnota Popis
spring.cloud.azure.keyvault.secret.property-source-enabled pravdivý 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 falešný 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 m Č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[].retry Opakujte související vlastnosti.
  • Pokud chcete zajistit, aby objekt zabezpečení byl udělen dostatečný přístup pro přístup k tajným kódům služby Azure Key Vault, přečtěte si Autorizovat přístup pomocí ID Microsoft Entra.
  • Pokud se v clientcredential nenakonfiguruje běžné vlastnosti, jako jsou profile, proxy, retry, spring.cloud.azure.keyvault.secret.property-sources[].xxx, spring.cloud.azure.xxx se nenakonfiguruje. Další informace o těchto běžných vlastnostech najdete v tématu konfigurace Spring Cloud Azure.
  • Další informace o vnořených vlastnostech najdete v tématu vlastnosti konfigurace Azure Spring Cloud.

Vzorky

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