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.
Nota
Koneksi tanpa kata sandi adalah fitur agnostik bahasa yang mencakup beberapa layanan Azure. Meskipun dokumentasi saat ini berfokus pada beberapa bahasa dan layanan, saat ini kami sedang dalam proses menghasilkan dokumentasi tambahan untuk bahasa dan layanan lain.
Artikel ini menjelaskan tantangan keamanan dengan kata sandi dan memperkenalkan koneksi tanpa kata sandi untuk layanan Azure.
Tantangan keamanan dengan kata sandi dan rahasia
Kata sandi dan kunci rahasia harus digunakan dengan hati-hati, dan pengembang tidak boleh menempatkannya di lokasi yang tidak aman. Banyak aplikasi terhubung ke database backend, cache, layanan olahpesan, dan layanan event menggunakan nama pengguna, kata sandi, dan kunci akses. Jika diekspos, kredensial ini dapat digunakan untuk mendapatkan akses tidak sah ke informasi sensitif seperti katalog penjualan yang Anda buat untuk kampanye mendatang, atau data pelanggan yang harus bersifat pribadi.
Menyematkan kata sandi dalam aplikasi itu sendiri menghadirkan risiko keamanan yang besar karena berbagai alasan, termasuk penemuan melalui repositori kode. Banyak pengembang eksternalisasi kata sandi tersebut menggunakan variabel lingkungan sehingga aplikasi dapat memuatnya dari lingkungan yang berbeda. Namun, ini hanya mengalihkan risiko dari kode itu sendiri ke lingkungan eksekusi. Siapa pun yang mendapatkan akses ke lingkungan dapat mencuri kata sandi, yang pada gilirannya, meningkatkan risiko penyelundupan data Anda.
Contoh kode berikut menunjukkan cara menyambungkan ke Azure Storage menggunakan kunci akun penyimpanan. Banyak pengembang tertarik pada solusi ini karena terasa akrab dengan opsi yang pernah mereka kerjakan di masa lalu, meskipun ini bukan solusi yang ideal. Jika aplikasi Anda saat ini menggunakan kunci akses, pertimbangkan untuk bermigrasi ke koneksi tanpa sandi.
// Connection using secret access keys
BlobServiceClient blobServiceClient = new(
new Uri("https://<storage-account-name>.blob.core.windows.net"),
new StorageSharedKeyCredential("<storage-account-name>", "<your-access-key>"));
Pengembang harus rajin untuk tidak pernah mengekspos jenis kunci atau rahasia ini di lokasi yang tidak aman. Banyak perusahaan memiliki persyaratan keamanan yang ketat untuk terhubung ke layanan Azure tanpa mengekspos kata sandi kepada pengembang, operator, atau siapa pun. Mereka sering menggunakan brankas untuk menyimpan dan memuat kata sandi ke dalam aplikasi, dan selanjutnya mengurangi risiko dengan menambahkan persyaratan dan prosedur rotasi kata sandi. Pendekatan ini, pada gilirannya, meningkatkan kompleksitas operasional dan, terkadang, menyebabkan pemadaman koneksi aplikasi.
Koneksi tanpa kata sandi dan Zero Trust
Anda sekarang dapat menggunakan koneksi tanpa kata sandi di aplikasi Anda untuk terhubung ke layanan berbasis Azure tanpa perlu memutar kata sandi. Dalam beberapa kasus, yang Anda butuhkan hanyalah konfigurasi—tidak diperlukan kode baru. Zero Trust menggunakan prinsip "jangan pernah percaya, selalu verifikasi, dan bebas kredensial". Ini berarti mengamankan semua komunikasi dengan mempercayai mesin atau pengguna hanya setelah memverifikasi identitas dan sebelum memberi mereka akses ke layanan backend.
Opsi autentikasi yang direkomendasikan untuk koneksi aman tanpa kata sandi adalah menggunakan identitas terkelola dan kontrol akses berbasis peran (RBAC) Azure dalam kombinasi. Dengan pendekatan ini, Anda tidak perlu melacak dan mengelola banyak rahasia berbeda secara manual untuk identitas terkelola karena tugas-tugas ini ditangani secara aman secara internal oleh Azure.
Anda dapat mengonfigurasi koneksi tanpa kata sandi ke layanan Azure menggunakan Konektor Layanan atau Anda dapat mengonfigurasinya secara manual. Konektor Layanan memungkinkan identitas terkelola dalam layanan hosting aplikasi seperti Azure Spring Apps, Azure App Service, dan Azure Container Apps. Service Connector juga mengonfigurasi layanan backend dengan koneksi tanpa kata sandi menggunakan identitas terkelola dan Azure RBAC, dan menghidrasi aplikasi dengan informasi koneksi yang diperlukan.
Jika Anda memeriksa lingkungan yang berjalan dari aplikasi yang dikonfigurasi untuk koneksi tanpa kata sandi, Anda dapat melihat string koneksi lengkap. String koneksi membawa, misalnya, alamat server database, nama database, dan instruksi untuk mendelegasikan autentikasi ke plugin autentikasi Azure, tetapi tidak berisi kata sandi atau rahasia apa pun.
Video berikut mengilustrasikan koneksi tanpa kata sandi dari aplikasi ke layanan Azure, menggunakan aplikasi Java sebagai contoh. Liputan serupa untuk bahasa lain akan segera dikeluarkan.
Memperkenalkan DefaultAzureCredential
Koneksi tanpa kata sandi ke layanan Azure melalui Microsoft Entra ID dan kontrol Akses Berbasis Peran (RBAC) dapat diterapkan menggunakan DefaultAzureCredential dari pustaka klien Azure Identity.
Penting
Beberapa bahasa harus menerapkan DefaultAzureCredential secara eksplisit dalam kode mereka, sementara bahasa lain memanfaatkan DefaultAzureCredential secara internal melalui plugin atau driver dasar.
DefaultAzureCredential mendukung beberapa metode autentikasi dan otomatis menentukan metode autentikasi yang harus digunakan saat runtime bahasa umum. Pendekatan ini memungkinkan aplikasi Anda menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda (pengembangan lokal dibandingkan dengan produksi) tanpa menerapkan kode khusus lingkungan.
Urutan dan lokasi pencarian DefaultAzureCredential kredensial bervariasi antar bahasa:
Misalnya, saat bekerja secara lokal dengan .NET, DefaultAzureCredential umumnya akan mengautentikasi menggunakan akun yang digunakan pengembang untuk masuk ke Visual Studio, Azure CLI, atau Azure PowerShell. Saat aplikasi disebarkan ke Azure, DefaultAzureCredential akan secara otomatis menemukan dan menggunakan identitas terkelola dari layanan hosting terkait, seperti Azure App Service. Tidak diperlukan perubahan kode untuk transisi ini.
Nota
Identitas terkelola menyediakan identitas keamanan untuk mewakili aplikasi atau layanan. Identitas dikelola oleh platform Azure dan tidak mengharuskan Anda menyediakan atau memutar rahasia. Anda dapat membaca selengkapnya tentang identitas terkelola dalam dokumentasi gambaran umum.
Contoh kode berikut menunjukkan cara menyambungkan ke Bus Layanan menggunakan koneksi tanpa kata sandi. Dokumentasi lain menjelaskan cara bermigrasi ke penyiapan ini untuk layanan tertentu secara lebih rinci. Aplikasi .NET dapat meneruskan instans ke DefaultAzureCredential dalam konstruktor kelas klien layanan.
DefaultAzureCredential akan otomatis menemukan kredensial yang tersedia di lingkungan tersebut.
ServiceBusClient serviceBusClient = new(
new Uri("https://<your-service-bus-namespace>.blob.core.windows.net"),
new DefaultAzureCredential());
Lihat juga
Untuk penjelasan lebih rinci tentang koneksi tanpa kata sandi, lihat panduan pengembang Mengonfigurasi koneksi tanpa kata sandi antara beberapa aplikasi dan layanan Azure.