Koneksi tanpa kata sandi untuk layanan Azure

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

Berhati-hatilah saat menangani kata sandi dan kunci rahasia. Jangan pernah menempatkan mereka di lokasi yang tidak aman. Banyak aplikasi terhubung ke database backend, cache, olahpesan, dan layanan peristiwa dengan menggunakan nama pengguna, kata sandi, dan kunci akses. Jika terekspos, pelaku jahat dapat menggunakan kredensial ini 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 dengan menggunakan variabel lingkungan sehingga aplikasi dapat memuatnya dari lingkungan yang berbeda. Namun, pendekatan 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 dengan 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". Prinsip 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 aman tanpa kata sandi adalah menggunakan identitas terkelola dan kontrol akses berbasis peran (RBAC) Azure dalam kombinasi. Dengan menggunakan pendekatan ini, Anda tidak perlu melacak dan mengelola banyak rahasia berbeda secara manual untuk identitas terkelola karena Azure menangani tugas-tugas ini secara internal dengan aman.

Anda dapat mengonfigurasi koneksi tanpa kata sandi ke layanan Azure dengan menggunakan Konektor Layanan atau Anda dapat mengonfigurasinya secara manual. Konektor Layanan memungkinkan identitas terkelola di layanan hosting aplikasi seperti Azure App Service dan Azure Container Apps. Konektor Layanan juga mengonfigurasi layanan backend dengan koneksi tanpa kata sandi dengan 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

Anda dapat menggunakan DefaultAzureCredential dari pustaka klien identitas Azure untuk menerapkan koneksi tanpa kata sandi ke layanan Azure melalui Microsoft Entra ID dan kontrol Akses Berbasis Peran (RBAC).

Penting

Beberapa bahasa mengharuskan Anda untuk secara eksplisit menerapkan DefaultAzureCredential dalam kode Anda, sementara yang lain menggunakan DefaultAzureCredential secara internal melalui plugin atau driver yang mendasar.

DefaultAzureCredential mendukung beberapa metode autentikasi dan secara otomatis menentukan metode mana yang akan digunakan saat runtime. 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 tempat DefaultAzureCredential mencari kredensial berbeda-beda menurut bahasa:

Misalnya, saat Anda bekerja secara lokal dengan .NET, DefaultAzureCredential umumnya mengautentikasi dengan menggunakan akun yang Anda gunakan untuk masuk ke Visual Studio, Azure CLI, atau Azure PowerShell. Saat Anda menyebarkan aplikasi ke Azure, DefaultAzureCredential secara otomatis menemukan dan menggunakan identitas terkelola dari layanan hosting terkait, seperti Azure App Service. Anda tidak perlu membuat perubahan kode apa pun untuk transisi ini.

Nota

Identitas terkelola menyediakan identitas keamanan untuk mewakili aplikasi atau layanan. Platform Azure mengelola identitas dan Anda tidak perlu menyediakan atau memutar rahasia. Untuk mempelajari selengkapnya, lihat dokumentasi gambaran umum .

Contoh kode berikut menunjukkan cara menyambungkan ke Bus Layanan dengan 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 secara otomatis menemukan kredensial yang tersedia di lingkungan tersebut.

ServiceBusClient serviceBusClient = new(
    new Uri("https://<your-service-bus-namespace>.servicebus.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.