Tutorial: Menyambungkan ke database Azure dari App Service tanpa rahasia menggunakan identitas terkelola

Azure App Service menyediakan layanan hosting web yang sangat dapat diskalakan dan dapat melakukan patch sendiri. Ini juga memberikan identitas terkelola untuk aplikasi Anda, yang merupakan solusi penting untuk mengamankan akses ke database Azure, termasuk:

Catatan

Tutorial ini tidak menyertakan panduan untuk Azure Cosmos DB, yang mendukung autentikasi Microsoft Entra secara berbeda. Untuk informasi selengkapnya, lihat dokumentasi Azure Cosmos DB, seperti Menggunakan identitas terkelola yang ditetapkan sistem untuk mengakses data Azure Cosmos DB.

Identitas terkelola di App Service membuat aplikasi Anda lebih aman dengan menghilangkan rahasia dari aplikasi Anda, misalnya kredensial dalam string koneksi. Tutorial ini menunjukkan cara menyambungkan ke database yang disebutkan di atas dari App Service menggunakan identitas terkelola.

Apa yang akan Anda pelajari:

  • Konfigurasikan pengguna Microsoft Entra sebagai administrator untuk database Azure Anda.
  • Koneksi ke database Anda sebagai pengguna Microsoft Entra.
  • Konfigurasikan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna untuk aplikasi App Service.
  • Memberikan akses database ke identitas terkelola.
  • Sambungkan ke database Azure dari kode Anda (.NET Kerangka kerja 4.8, .NET 6, Node.js, Python, Java) menggunakan identitas terkelola.
  • Koneksi ke database Azure dari lingkungan pengembangan Anda menggunakan pengguna Microsoft Entra.

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Prasyarat

  • Buat aplikasi di App Service berdasarkan .NET, Node.js, Python, atau Java.
  • Buat server database dengan Azure SQL Database, Azure Database for MySQL, atau Azure Database for PostgreSQL.
  • Anda harus terbiasa dengan pola konektivitas standar (dengan nama pengguna dan kata sandi) dan dapat tersambung dengan sukses dari aplikasi App Service Anda ke database pilihan Anda.

Mempersiapkan lingkungan Anda untuk Azure CLI.

1. Instal ekstensi Service Koneksi or passwordless

Instal ekstensi Service Koneksi or passwordless untuk Azure CLI:

az extension add --name serviceconnector-passwordless --upgrade

2. Buat koneksi tanpa kata sandi

Selanjutnya, buat koneksi tanpa kata sandi dengan Service Koneksi or.

Tip

portal Azure dapat membantu Anda menyusun perintah di bawah ini. Di portal Azure, buka sumber daya Azure App Service Anda, pilih Layanan Koneksi atau dari menu sebelah kiri dan pilih Buat. Isi formulir dengan semua parameter yang diperlukan. Azure automaticaly menghasilkan perintah pembuatan koneksi, yang dapat Anda salin untuk digunakan di CLI atau dijalankan di Azure Cloud Shell.

Perintah Azure CLI berikut menggunakan --client-type parameter .

  1. Secara opsional jalankan az webapp connection create sql -h untuk mendapatkan jenis klien yang didukung.

  2. Pilih jenis klien dan jalankan perintah yang sesuai. Ganti tempat penampung di bawah ini dengan informasi Anda sendiri.

    az webapp connection create sql \
        --resource-group <group-name> \
        --name <server-name> \
        --target-resource-group <sql-group-name> \
        --server <sql-name> \
        --database <database-name> \
        --user-identity client-id=<client-id> subs-id=<subscription-id> \
        --client-type <client-type>
    

Perintah Service Koneksi or ini menyelesaikan tugas berikut di latar belakang:

  • Aktifkan identitas terkelola yang ditetapkan sistem, atau tetapkan identitas pengguna untuk aplikasi <server-name> yang dihosting oleh Azure App Service.
  • Atur admin Microsoft Entra ke pengguna yang masuk saat ini.
  • Tambahkan pengguna database untuk identitas terkelola yang ditetapkan sistem atau identitas terkelola yang ditetapkan pengguna. Berikan semua hak istimewa database <database-name> kepada pengguna ini. Nama pengguna dapat ditemukan di string koneksi dalam output perintah sebelumnya.
  • Atur konfigurasi bernama AZURE_MYSQL_CONNECTIONSTRING, AZURE_POSTGRESQL_CONNECTIONSTRING, atau AZURE_SQL_CONNECTIONSTRING ke sumber daya Azure berdasarkan jenis database.
  • Untuk App Service, konfigurasi diatur di bilah App Pengaturan.

Jika Anda mengalami masalah saat membuat koneksi, lihat Pemecahan Masalah untuk mendapatkan bantuan.

3. Mengubah kode Anda

  1. Instal dependensi.

    dotnet add package Microsoft.Data.SqlClient
    
  2. Dapatkan string koneksi Azure SQL Database dari variabel lingkungan yang ditambahkan oleh Koneksi or Layanan.

    using Microsoft.Data.SqlClient;
    
    string connectionString = 
        Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
    
    using var connection = new SqlConnection(connectionString);
    connection.Open();
    

    Untuk informasi selengkapnya, lihat Menggunakan autentikasi Identitas Terkelola Direktori Aktif.

Untuk informasi selengkapnya, lihat Beranda untuk pemrograman klien ke Microsoft SQL Server. Untuk sampel kode lainnya, lihat Membuat koneksi tanpa kata sandi ke layanan database melalui service Koneksi or.

4. Menyiapkan lingkungan dev Anda

Kode sampel ini menggunakan DefaultAzureCredential untuk mendapatkan token yang dapat digunakan untuk database Azure Anda dari ID Microsoft Entra lalu menambahkannya ke koneksi database. Saat Anda dapat menyesuaikan DefaultAzureCredential, secara default ini sudah sangat serbaguna. Ini mendapatkan token dari pengguna Microsoft Entra yang masuk atau dari identitas terkelola, tergantung pada apakah Anda menjalankannya secara lokal di lingkungan pengembangan Anda atau di App Service.

Tanpa perubahan lebih lanjut, kode Anda siap dijalankan di Azure. Namun, untuk men-debug kode Anda secara lokal, lingkungan pengembangan Anda memerlukan pengguna Microsoft Entra yang masuk. Dalam langkah ini, Anda mengonfigurasi lingkungan pilihan Anda dengan masuk dengan pengguna Microsoft Entra Anda.

  1. Visual Studio untuk Windows terintegrasi dengan autentikasi Microsoft Entra. Untuk mengaktifkan pengembangan dan penelusuran kesalahan di Visual Studio, tambahkan pengguna Microsoft Entra Anda di Visual Studio dengan memilih Akun File>Pengaturan dari menu, dan pilih Masuk atau Tambahkan.

  2. Untuk mengatur pengguna Microsoft Entra untuk autentikasi layanan Azure, pilih Opsi Alat>dari menu, lalu pilih Pilihan Akun Autentikasi>Layanan Azure. Pilih pengguna Microsoft Entra yang Anda tambahkan dan pilih OK.

Untuk informasi selengkapnya tentang menyiapkan lingkungan pengembangan Anda untuk autentikasi Microsoft Entra, lihat Pustaka klien Azure Identity untuk .NET.

Anda sekarang siap untuk mengembangkan dan men-debug aplikasi Anda dengan SQL Database sebagai ujung belakang, menggunakan autentikasi Microsoft Entra.

5. Uji dan terbitkan

  1. Jalankan kode Anda di lingkungan dev Anda. Kode Anda menggunakan pengguna Microsoft Entra yang masuk di lingkungan Anda untuk menyambungkan ke database back-end. Pengguna dapat mengakses database karena dikonfigurasi sebagai administrator Microsoft Entra untuk database.

  2. Terbitkan kode Anda ke Azure menggunakan metode penerbitan pilihan. Di App Service, kode Anda menggunakan identitas terkelola aplikasi untuk tersambung ke database back-end.

Tanya jawab umum

Apakah identitas terkelola mendukung SQL Server?

ID Microsoft Entra dan identitas terkelola tidak didukung untuk SQL Server lokal.

Saya mendapatkan kesalahan Login failed for user '<token-identified principal>'.

Identitas terkelola yang Anda coba minta tokennya tidak diizinkan untuk mengakses database Azure.

Saya membuat perubahan pada autentikasi App Service atau pendaftaran aplikasi terkait. Mengapa saya masih mendapatkan token lama?

Layanan back-end identitas terkelola juga menjaga cache token yang memperbarui token untuk sumber daya target hanya saat habis masa berlakunya. Jika Anda mengubah konfigurasi setelah mencoba mendapatkan token dengan aplikasi, Anda sebenarnya tidak mendapatkan token baru dengan izin yang diperbarui hingga token yang di-cache habis masa berlakunya. Cara terbaik untuk mengatasinya adalah dengan menguji perubahan Anda dengan jendela InPrivate (Edge)/private (Safari)/Incognito (Chrome) baru. Dengan begitu, Anda pasti akan memulai dari sesi baru yang diautentikasi.

Bagaimana cara menambahkan identitas terkelola ke grup Microsoft Entra?

Jika mau, Anda dapat menambahkan identitas ke grup Microsoft Entra, lalu memberikan akses ke grup Microsoft Entra alih-alih identitas. Misalnya, perintah berikut menambahkan identitas terkelola dari langkah sebelumnya ke grup baru yang disebut myAzureSQLDBAccessGroup:

groupid=$(az ad group create --display-name myAzureSQLDBAccessGroup --mail-nickname myAzureSQLDBAccessGroup --query objectId --output tsv)
msiobjectid=$(az webapp identity show --resource-group <group-name> --name <app-name> --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
az ad group member list -g $groupid

Untuk memberikan izin database untuk grup Microsoft Entra, lihat dokumentasi untuk jenis database masing-masing.

Saya mendapatkan kesalahan SSL connection is required. Please specify SSL options and retry.

Menyambungkan ke database Azure memerlukan pengaturan tambahan dan berada di luar cakupan tutorial ini. Untuk informasi lebih lanjut, lihat salah satu link berikut:

Mengonfigurasi konektivitas TLS di Azure Database for PostgreSQL - Server TunggalMengonfigurasi konektivitas SSL di aplikasi Anda untuk tersambung dengan aman ke Azure Database for MySQL

Langkah berikutnya

Apa yang Anda pelajari:

  • Konfigurasikan pengguna Microsoft Entra sebagai administrator untuk database Azure Anda.
  • Koneksi ke database Anda sebagai pengguna Microsoft Entra.
  • Konfigurasikan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna untuk aplikasi App Service.
  • Memberikan akses database ke identitas terkelola.
  • Sambungkan ke database Azure dari kode Anda (.NET Kerangka kerja 4.8, .NET 6, Node.js, Python, Java) menggunakan identitas terkelola.
  • Koneksi ke database Azure dari lingkungan pengembangan Anda menggunakan pengguna Microsoft Entra.