Manajemen rahasia Spring Cloud Azure
Artikel ini berlaku untuk: ✔️ Versi 4.14.0 ✔️ Versi 5.8.0
Konstruksi PropertySource
Spring Cloud Azure 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>
Tip
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 oleh 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 bagianNama vault dan Nama objek dari gambaran umum kunci, rahasia, dan sertifikat Azure Key Vault. Jika nama properti Anda berisi karakter lain, Anda bisa menggunakan solusi yang dijelaskan di bagian berikut.
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.
Catatan
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
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 application.properties Anda:
property.with.special.character__=${propertyWithoutSpecialCharacter}
Aplikasi akan mendapatkan propertyWithoutSpecialCharacter
nama kunci 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 dengan spring.cloud.azure.keyvault.secret.property-sources[].secret-keys
.
Mengatur interval refresh
Secara default, rahasia di akan di-refresh KeyVaultPropertySource
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
SystemEnvironmentPropertySource
ada dalam daftar PropertySource, makaKeyVaultPropertySource
akan mengambil prioritas tertinggi. - Jika ada
SystemEnvironmentPropertySource
dalam daftar PropertySource, makaSystemEnvironmentPropertySource
memiliki prioritas yang lebih tinggi daripada KeyVaultPropertySource. Yang berarti Anda dapat menggunakan variabel lingkungan untuk mengambil alih nilai rahasia Key Vault di aplikasi Anda. - Jika ada beberapa KeyVaultPropertySource dalam daftar PropertySource, maka urutan definisi adalah urutan prioritas. Ambil sampel di atas sebagai contoh,
key-vault-property-souece-1
memiliki prioritas yang lebih tinggi daripadakey-vault-property-souece-2
.
Semua properti yang dapat dikonfigurasi
Properti | 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 | salah | 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 ID Microsoft Entra untuk memastikan prinsip keamanan telah diberikan izin yang memadai untuk mengakses Rahasia Azure Key Vault.
- Jika properti umum seperti
client
,credential
,profile
,proxy
,retry
tidak dikonfigurasi dispring.cloud.azure.keyvault.secret.property-sources[].xxx
,spring.cloud.azure.xxx
akan digunakan. Lihat Konfigurasi Spring Cloud Azure untuk 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.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk