Aracılığıyla paylaş


Spring Cloud Azure gizli dizi yönetimi

Azure Key Vault Gizli Dizilerinde depolanan gizli dizileri barındıran Spring Cloud Azure yapısı PropertySource.

Bağımlılık kurulumu

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

Bahşiş

Ayrıca Key Vault'un tüm özelliklerini desteklemek için spring-cloud-azure-starter-keyvault sağlıyoruz. Kullanmayı seçerseniz, spring.cloud.azure.keyvault.enable yapılandırılan özelliktir ve varsayılan değer true. Daha sonra gereksiz hizmetleri devre dışı bırakmak için spring.cloud.azure.keyvault.<keyvault-service>.enable kullanabilirsiniz.

Temel kullanım

client-id ve client-secretkimlik doğrulaması yapmak istiyorsanız, aşağıdaki özellikler gereklidir:

Yapılandırma Özellikleri

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 kodu

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

Gelişmiş kullanım

Özellik adında özel karakterler

Key Vault gizli dizi adları yalnızca [0-9a-zA-Z-]içindeki karakterleri destekler. Daha fazla bilgi için Azure Key Vault anahtarlarına, gizli dizilerine ve sertifikalara genel bakışVault-name ve Object-name bölümüne bakın. Özellik adınız başka karakterler içeriyorsa, aşağıdaki bölümlerde açıklanan geçici çözümleri kullanabilirsiniz.

Gizli dizi adlarında - yerine . kullanma

. gizli dizi adlarında desteklenmez. Uygulamanızın .içeren spring.datasource.urlgibi bir özellik adı varsa, gizli diziyi Azure Key Vault'a kaydederken . yerine - yazın. Örneğin, spring-datasource-url Azure Key Vault'a kaydedin. Uygulamanızda, özellik değerini almak için spring.datasource.url kullanmaya devam edebilirsiniz.

Not

Bu yöntem spring.datasource-urlgibi bir gereksinimi karşılayamaz. Key Vault'ta spring-datasource-url kaydettiğinizde özellik değerini almak için yalnızca spring.datasource.url ve spring-datasource-url desteklenir, ancak spring.datasource-url desteklenmez. Bu durumu işlemek için Özellik yer tutucularını kullanma bölümüne bakın.

Özellik yer tutucularını kullanma

Örneğin, application.properties dosyanızda bu özelliği ayarladığınızı varsayalım:

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

Uygulama bir propertyWithoutSpecialCharacter anahtar adı alır ve değerini property.with.special.character__atar.

Büyük/küçük harfe duyarlı

Büyük/küçük harfe duyarlı modu etkinleştirmek için aşağıdaki özelliği ayarlayabilirsiniz:

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

Key Vault'taki tüm gizli dizileri alma

Key Vault'ta 1000 gizli dizi depoladıysanız ve bunlardan yalnızca 3 tanesini kullanmak istiyorsanız. 3 gizli dizi adını spring.cloud.azure.keyvault.secret.property-sources[].secret-keysgöre listeleyebilirsiniz.

Yenileme aralığını ayarlama

Varsayılan olarak, KeyVaultPropertySource içindeki gizli diziler 30 dakikada bir yenilenir. saati spring.cloud.azure.keyvault.secret.property-sources[].refresh-intervalyapılandırabilirsiniz. Örneğin: spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m 60 dakikada bir yenileme anlamına gelir. Otomatik yenilemeyi devre dışı bırakmak için 0 olarak ayarlayın.

PropertySource önceliği

Anahtar birden çok PropertySources'ta mevcutsa, geçerli olacak olan öncelik tarafından belirlenir.

  • SystemEnvironmentPropertySource listesinde PropertySource yoksa KeyVaultPropertySource en yüksek önceliği alır.
  • SystemEnvironmentPropertySource listesinde PropertySource varsa, SystemEnvironmentPropertySourceKeyVaultPropertySource'den daha yüksek önceliğe sahiptir. Bu, uygulamanızdaki Key Vault gizli dizi değerini geçersiz kılmak için bir ortam değişkeni kullanabileceğiniz anlamına gelir.
  • PropertySource listesinde birden çok anahtar kasası özellik kaynağı varsa, tanım sırası öncelik sırasıdır. Yukarıdaki örneği örnek olarak ele alarak, key-vault-property-source-1key-vault-property-source-2'den daha yüksek önceliğe sahiptir.

Key Vault özellik kaynağı için belirteç kimlik bilgilerini yapılandırma

Key Vault PropertySourceiçin belirtilen belirteç kimlik bilgilerini kullanmanız gerekiyorsa, TokenCredential çekirdeğini ConfigurableBootstrapContextiçin KeyVaultEnvironmentPostProcessor kaydedebilirsiniz. Bu özellik Spring Cloud Azure 5.16.0 tarafından desteklenir. AzureCliCredentialkullanmak için bir örnek aşağıda verilmiştir:

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

Tüm yapılandırılabilir özellikler

Mülk Varsayılan değer Açıklama
spring.cloud.azure.keyvault.secret.property-source-enabled doğru Key Vault özellik kaynağının etkinleştirilip etkinleştirilmeyileceği.
spring.cloud.azure.keyvault.secret.property-sources[].name Bu özellik kaynağının adı.
spring.cloud.azure.keyvault.secret.property-sources[].endpoint Azure Key Vault uç noktası.
spring.cloud.azure.keyvault.secret.property-sources[].büyük/küçük harfe duyarlı yanlış Gizli dizi anahtarlarının büyük/küçük harfe duyarlı olup olmadığı.
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys Bu özellik kaynağı için desteklenen gizli anahtarlar. Bu özellik eksikse tüm anahtarlar alınır.
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval 30 dk. Tüm Key Vault gizli dizilerini yenilemek için zaman aralığı.
spring.cloud.azure.keyvault.secret.property-sources[].service-version API istekleri yapılırken kullanılan gizli hizmet sürümü.
spring.cloud.azure.keyvault.secret.property-sources[].client İstemciyle ilgili özellikler.
spring.cloud.azure.keyvault.secret.property-sources[].credential Kimlik bilgileriyle ilgili özellikler.
spring.cloud.azure.keyvault.secret.property-sources[].profile Profille ilgili özellikler.
spring.cloud.azure.keyvault.secret.property-sources[].proxy Ara sunucuyla ilgili özellikler.
spring.cloud.azure.keyvault.secret.property-sources[].retry İlgili özellikleri yeniden deneyin.
  • güvenlik sorumlusu Azure Key Vault Gizli Dizilerine erişmek için yeterli iznin verildiğinden emin olmak için bkz. Microsoft Entra ID erişimi yetkilendirme.
  • client, credential, profile, proxy, retryspring.cloud.azure.keyvault.secret.property-sources[].xxxiçinde yapılandırılmamışsa spring.cloud.azure.xxx kullanılır. Bu yaygın özellikler hakkında daha fazla bilgi edinmek için bkz. Spring Cloud Azure yapılandırma .
  • İç içe özellikler hakkında daha fazla bilgi edinmek için bkz. Spring Cloud Azure yapılandırma özellikleri .

Örnekleri

GitHub'da spring-cloud-azure-starter-keyvault-secrets örneklerine bakın.