Azure-sdk-for-java: [BUG] Metode KeyVaultPropertySource Class / getPropertyNames akan memuat semua rahasia (termasuk menonaktifkan rahasia) di brankas kunci

Dibuat pada 13 Agu 2020  ·  10Komentar  ·  Sumber: Azure/azure-sdk-for-java

Jelaskan bugnya
Saat ini kubah kunci mengaktifkan fitur hapus lunak secara default. Jika membuat / menghapus sertifikat akan menyebabkan aplikasi Jave crash karena memuat rahasia yang dinonaktifkan.
Kelas KeyVaultPropertySource memuat semua rahasia di KeyVault. Ini seharusnya tidak memuat rahasia yang dinonaktifkan dalam metode getPropertyNames
Ngomong-ngomong, solusinya adalah membersihkan sertifikat. Tetapi mungkin lebih baik memperbaikinya di bagian SDK karena tidak ada permintaan untuk memuat rahasia yang dihapus untuk sementara

Pengecualian atau Pelacakan Tumpukan
Tambahkan log pengecualian dan pelacakan tumpukan jika tersedia

Untuk Mereproduksi
Langkah-langkah untuk mereproduksi perilaku:
A. Membuat Sertifikat KeyVault (bukan rahasia) dan menghapus Sertifikat setelah itu aplikasi java macet.
C. sertifikat secara otomatis membuat Pengenal Rahasia saat membuat sertifikat baru
D. Dan setelah menghapus sertifikat, sistem Azure NONAKTIFKAN pengenal rahasia
E. Dalam hal ini aplikasi java mencoba membaca rahasia DISABLED dalam run time
saya. Dan kemudian aplikasi java macet.
Perpustakaannya adalah com.microsoft. biru langit :
Cuplikan Kode
Tambahkan cuplikan kode yang menyebabkan masalah.

@Value ("$ {cluster-app-sb-connection-string}")
String connectionString;
@Value ("$ {cluster-app.sb.topic-name}")
String topicName;
Perilaku yang diharapkan
Deskripsi yang jelas dan ringkas tentang apa yang Anda harapkan akan terjadi.

Screenshot
Jika memungkinkan, tambahkan tangkapan layar untuk membantu menjelaskan masalah Anda.

Penyiapan (lengkapi informasi berikut):

  • OS: [mis. IOS]
  • IDE: [misalnya IntelliJ]
  • Versi Perpustakaan yang digunakan

Konteks tambahan
Tambahkan konteks lain apa pun tentang masalah tersebut di sini.

Daftar Periksa Informasi
Mohon pastikan bahwa Anda telah menambahkan semua informasi berikut di atas dan centang bidang wajib jika tidak, kami akan memperlakukan penerbit sebagai laporan yang tidak lengkap

  • [x] Deskripsi Bug Ditambahkan
  • [] Langkah Repro Ditambahkan
  • [] Informasi Setup Ditambahkan
Client azure-spring azure-spring-keyvault customer-reported question

Komentar yang paling membantu

Masalah ini disebabkan oleh cara kerja starter Spring Boot untuk Key Vault Secrets. kami tidak memfilter rahasia yang dinonaktifkan. sekarang saya membuat PR untuk memperbaiki masalah tersebut

Semua 10 komentar

@ TonySh127-ms, apakah Anda menggunakan key vault starter atau sdk secara langsung?

Dibahas dengan @ TonySh127-ms secara offline dan pelanggan menggunakan spring-boot-starter untuk keyvault. Perlu konfirmasi dari sisi SDK bahwa apakah SDK baru memecahkan masalah semacam ini.

@AlexGhiondea @ vcolin7 bisakah Anda menindaklanjuti?

terima kasih @joshfree dan @saragluna. Menunggu pembaruan dari @AlexGhiondea dan @ vcolin7 . Beri tahu saya jika tidak dapat diperbaiki dalam jangka pendek. Saya bisa menjelaskannya ke sisi klien. Terima kasih banyak atas waktu Anda lagi!

Hai @ TonySh127-ms,

Saya menghabiskan beberapa waktu untuk melihat masalah ini dan menemukan hal berikut: perilaku yang dilihat pelanggan disebabkan oleh cara kerja starter Spring Boot untuk Key Vault Secrets. Pada dasarnya, setiap kali aplikasi Spring yang menggunakan starter ini berjalan, ia akan mendapatkan nama semua rahasia yang ada di vault tertentu dengan memanggil endpoint / secret, yang memuat semua rahasia yang diaktifkan dan dinonaktifkan (bukan yang dihapus), aplikasi kemudian akan mengambil detail rahasia tertentu jika diperlukan. Ini bukan masalah dengan layanan Key Vault atau SDK, tetapi hanya konsekuensi dari cara kode starter Spring Boot.

Solusi jangka pendeknya adalah tidak menggunakan starter Spring Boot tetapi Key Vault SDK itu sendiri secara langsung. Dengan cara ini pelanggan akan memiliki kontrol lebih tentang rahasia mana yang dimuat dan kapan selama siklus hidup aplikasi.

Selain itu, saya tidak dapat mereproduksi kasus ketika aplikasi saya mogok karena memuat terlalu banyak rahasia hanya dengan membuat dan menghapus sertifikat di lemari besi. Untuk melakukan sesuatu seperti ini, saya memerlukan lebih banyak informasi dari pelanggan: dependensi apa yang mereka gunakan dalam proyek mereka termasuk versi dan kode contoh yang dapat direproduksi.

@ vcolin7 apakah kita memiliki opsi untuk meneruskan ke SDK yang memuat hanya rahasia yang diaktifkan? Sepertinya kita seharusnya tidak memuat rahasia yang dinonaktifkan dalam integrasi Spring kita.

@saragluna Sayangnya, tidak ada parameter yang dapat kita berikan layanan untuk itu hanya memberi kita rahasia yang diaktifkan: /

Masalah ini disebabkan oleh cara kerja starter Spring Boot untuk Key Vault Secrets. kami tidak memfilter rahasia yang dinonaktifkan. sekarang saya membuat PR untuk memperbaiki masalah tersebut

@ TonyShshi-ms
Kami membangun paket dev , Anda dapat mencobanya.
Ikuti halaman ini untuk mengunduh paket dev

Hai Tim, masalah telah dikonfirmasi telah diperbaiki. Kami dapat menutup utas ini sekarang. Banyak terima kasih semua orang, usaha dan waktu yang luar biasa !!!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat