Bagikan melalui


Koneksi tanpa kata sandi untuk layanan Azure

Catatan

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 memproduksi 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, olahpesan, dan layanan peristiwa 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 tersambung ke Azure Storage menggunakan kunci akun penyimpanan. Banyak pengembang memahami solusi ini karena merasa akrab dengan opsi yang telah mereka kerjakan di masa lalu, meskipun itu bukan solusi yang ideal. Jika aplikasi Anda saat ini menggunakan kunci akses, pertimbangkan untuk bermigrasi ke koneksi tanpa kata 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 lebih mengurangi risiko dengan menambahkan persyaratan dan prosedur rotasi kata sandi. Pendekatan ini, pada gilirannya, meningkatkan kompleksitas operasional dan, kadang-kadang, 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 memercayai mesin atau pengguna hanya setelah memverifikasi identitas dan sebelum memberi mereka akses ke layanan backend.

Opsi autentikasi yang direkomendasikan untuk koneksi tanpa kata sandi yang aman adalah menggunakan identitas terkelola dan kontrol akses berbasis peran Azure (RBAC) 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 Service Koneksi or atau Anda dapat mengonfigurasinya secara manual. Service Koneksi or memungkinkan identitas terkelola di layanan hosting aplikasi seperti Azure Spring Apps, Azure App Service, dan Azure Container Apps. Service Koneksi or 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 aplikasi yang sedang berjalan 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. Cakupan serupa untuk bahasa lain akan datang.


Memperkenalkan DefaultAzureCredential

Koneksi tanpa kata sandi ke layanan Azure melalui ID Microsoft Entra dan kontrol Akses Berbasis Peran (RBAC) dapat diimplementasikan 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 di mana DefaultAzureCredential pencarian kredensial bervariasi di antara 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.

Catatan

Identitas terkelola menyediakan identitas keamanan untuk mewakili aplikasi atau layanan. Identitas dikelola oleh platform Azure dan tidak mengharuskan Anda untuk 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 DefaultAzureCredential ke 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());

Baca juga

Untuk penjelasan lebih rinci tentang koneksi tanpa kata sandi, lihat panduan pengembang Mengonfigurasi koneksi tanpa kata sandi antara beberapa aplikasi dan layanan Azure.