Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Konstruksi Spring Cloud Azure PropertySource yang menyimpan rahasia yang disimpan di Rahasia Azure Key Vault.
Penyiapan dependensi
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
</dependency>
Ujung
Kami juga menyediakan spring-cloud-azure-starter-keyvault untuk mendukung semua fitur Key Vault. Jika Anda memilih untuk menggunakannya, spring.cloud.azure.keyvault.enable adalah properti untuk dikonfigurasi dan nilai defaultnya adalah true. Anda kemudian dapat menggunakan spring.cloud.azure.keyvault.<keyvault-service>.enable untuk menonaktifkan layanan yang tidak diperlukan.
Penggunaan dasar
Jika Anda ingin mengautentikasi dengan client-id dan client-secret, properti berikut diperlukan:
Properti Konfigurasi
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}
Kode 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);
}
}
Penggunaan tingkat lanjut
Karakter khusus dalam nama properti
Nama rahasia Key Vault hanya mendukung karakter di [0-9a-zA-Z-]. Untuk informasi selengkapnya, lihat bagian nama
Gunakan - alih-alih . dalam nama rahasia
. tidak didukung dalam nama rahasia. Jika aplikasi Anda memiliki nama properti yang berisi ., seperti spring.datasource.url, ganti . dengan - saat menyimpan rahasia di Azure Key Vault. Misalnya, simpan spring-datasource-url di Azure Key Vault. Dalam aplikasi, Anda masih dapat menggunakan spring.datasource.url untuk mengambil nilai properti.
Nota
Metode ini tidak dapat memenuhi persyaratan seperti spring.datasource-url. Saat Anda menyimpan spring-datasource-url di Key Vault, hanya spring.datasource.url dan spring-datasource-url yang didukung untuk mengambil nilai properti, tetapi spring.datasource-url tidak didukung. Untuk menangani kasus ini, lihat bagian Menggunakan tempat penampung properti.
Menggunakan tempat penampung properti
Misalnya, Anda mengatur properti ini di file
property.with.special.character__=${propertyWithoutSpecialCharacter}
Aplikasi akan mendapatkan nama kunci propertyWithoutSpecialCharacter dan menetapkan nilainya ke property.with.special.character__.
Peka huruf besar/kecil
Untuk mengaktifkan mode peka huruf besar/kecil, Anda dapat mengatur properti berikut:
spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive=true
Tidak mengambil semua rahasia di Key Vault
Jika Anda menyimpan 1000 rahasia di Key Vault, dan Anda hanya ingin menggunakan 3 di antaranya. Anda dapat mencantumkan 3 nama rahasia menurut spring.cloud.azure.keyvault.secret.property-sources[].secret-keys.
Mengatur interval refresh
Secara default, rahasia dalam KeyVaultPropertySource akan di-refresh setiap 30 menit. Anda dapat mengonfigurasi waktu dengan spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval. Misalnya: spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval=60m berarti refresh setiap 60 menit. Atur ke 0 untuk menonaktifkan refresh otomatis.
Prioritas PropertySource
Jika kunci ada di beberapa PropertySources, yang akan berlaku diputuskan oleh prioritas.
- Jika tidak ada
SystemEnvironmentPropertySourcedalam daftarPropertySource, makaKeyVaultPropertySourceakan mengambil prioritas tertinggi. - Jika ada
SystemEnvironmentPropertySourcedalam daftarPropertySource, makaSystemEnvironmentPropertySourcememiliki prioritas yang lebih tinggi daripadaKeyVaultPropertySource, yang berarti Anda dapat menggunakan variabel lingkungan untuk mengambil alih nilai rahasia Key Vault di aplikasi Anda. - Jika ada beberapa sumber properti brankas kunci dalam daftar
PropertySource, maka urutan definisi adalah urutan prioritas. Mengambil sampel di atas sebagai contoh,key-vault-property-source-1memiliki prioritas yang lebih tinggi daripadakey-vault-property-source-2.
Mengonfigurasi kredensial token untuk sumber properti Key Vault
Jika Anda perlu menggunakan kredensial token tertentu untuk Key Vault PropertySource, Anda dapat mendaftarkan kacang TokenCredential di ConfigurableBootstrapContext untuk KeyVaultEnvironmentPostProcessor, fitur ini didukung dari Spring Cloud Azure 5.16.0. Berikut adalah contoh untuk menggunakan 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);
}
Semua properti yang dapat dikonfigurasi
| Harta benda | Nilai default | Deskripsi |
|---|---|---|
| spring.cloud.azure.keyvault.secret.property-source-enabled | benar | Apakah akan mengaktifkan sumber properti Key Vault. |
| spring.cloud.azure.keyvault.secret.property-sources[].name | Nama sumber properti ini. | |
| spring.cloud.azure.keyvault.secret.property-sources[].endpoint | Titik akhir Azure Key Vault. | |
| spring.cloud.azure.keyvault.secret.property-sources[].case-sensitive | palsu | Apakah kunci rahasia peka huruf besar/kecil. |
| spring.cloud.azure.keyvault.secret.property-sources[].secret-keys | Kunci rahasia yang didukung untuk sumber properti ini. Semua kunci diambil jika properti ini hilang. | |
| spring.cloud.azure.keyvault.secret.property-sources[].refresh-interval | 30m | Interval waktu untuk me-refresh semua rahasia Key Vault. |
| spring.cloud.azure.keyvault.secret.property-sources[].service-version | Versi layanan rahasia yang digunakan saat membuat permintaan API. | |
| spring.cloud.azure.keyvault.secret.property-sources[].client | Properti terkait klien. | |
| spring.cloud.azure.keyvault.secret.property-sources[].credential | Properti terkait kredensial. | |
| spring.cloud.azure.keyvault.secret.property-sources[].profile | Properti terkait profil. | |
| spring.cloud.azure.keyvault.secret.property-sources[].proxy | Properti terkait proksi. | |
| spring.cloud.azure.keyvault.secret.property-sources[].retry | Coba lagi properti terkait. |
- Lihat Mengotorisasi akses dengan microsoft Entra ID untuk memastikan keamanan utama telah diberikan izin yang memadai untuk mengakses Rahasia Azure Key Vault.
- Jika properti umum seperti
client,credential,profile,proxy,retrytidak dikonfigurasi dispring.cloud.azure.keyvault.secret.property-sources[].xxx,spring.cloud.azure.xxxakan digunakan. Lihat konfigurasi Spring Cloud Azureuntuk mendapatkan informasi selengkapnya tentang properti umum ini. - Lihat properti konfigurasi Spring Cloud Azure untuk mendapatkan informasi selengkapnya tentang properti berlapis.
Sampel
Lihat sampel spring-cloud-azure-starter-keyvault-secrets di GitHub.