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 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ış
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
Ö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.
-
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 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ışsaspring.cloud.azure.xxxkullanı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