Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Key Vault Secrets’ta depolanan gizli bilgileri tutan 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>
İpucu
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ındaki özel karakterler
Key Vault gizli anahtar adları yalnızca [0-9a-zA-Z-] içindeki karakterleri destekler. Daha fazla bilgi için Azure Key Vault anahtarları, gizli dizileri ve sertifikalarına genel bakış belgesinin 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 adlarında . yerine - kullanın
., gizli 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 ele almak için Özellik yer tutucularını kullanma bölümüne bakın.
Özellik yer tutucularını kullanın
Ö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 anahtarları almama
Key Vault'ta 1.000 gizli anahtar depoladıysanız ve bunlardan yalnızca 3 tanesini kullanmak istiyorsanız.
spring.cloud.azure.keyvault.secret.property-sources[].secret-keys kullanarak 3 gizli adı listeleyebilirsiniz.
Yenileme aralığını ayarlama
Varsayılan olarak, KeyVaultPropertySource içindeki gizli anahtarlar her 30 dakikada bir yenilenir. Saati spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval kullanarak yapı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 fazla PropertySources'ta yer alıyorsa, hangisinin geçerli olacağı önceliğe göre belirlenir.
-
SystemEnvironmentPropertySourcelistesindePropertySourceyoksaKeyVaultPropertySourceen yüksek önceliği alır. -
SystemEnvironmentPropertySourcelistesindePropertySourcevarsa,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. -
PropertySourcelistesinde 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 PropertySource için belirli bir belirteç kimlik bilgisini kullanmanız gerekiyorsa, KeyVaultEnvironmentPostProcessor için ConfigurableBootstrapContext içinde TokenCredential bean'ini kaydedebilirsiniz; bu özellik Spring Cloud Azure 5.16.0 sürümünden itibaren desteklenmektedir.
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[].case-sensitive |
yanlış | Gizli anahtarları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ınacaktır. | |
spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval |
30 dk | Tüm Key Vault gizli anahtarlarını yenileme 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. |
- security principal öğesine Azure Key Vault gizli bilgilerine erişmek için yeterli izin verildiğinden emin olmak üzere bkz. Microsoft Entra ID ile erişimi yetkilendirme.
-
client,credential,profile,proxy,retrygibi ortak özelliklerspring.cloud.azure.keyvault.secret.property-sources[].xxxiçinde yapılandırılmamışsaspring.cloud.azure.xxxkullanılacaktı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
.
Örnekler
GitHub'da spring-cloud-azure-starter-keyvault-secrets örneklere bakın.