Bagikan melalui


Tutorial: Menyambungkan aplikasi fungsi untuk Azure SQL dengan identitas terkelola dan pengikatan SQL

Azure Functions menyediakan identitas terkelola, yang merupakan solusi siap pakai untuk mengamankan akses ke Azure SQL Database dan layanan Azure lainnya. Identitas terkelola membuat aplikasi Anda lebih aman dengan menghilangkan rahasia dari aplikasi Anda, misalnya info masuk dalam string koneksi. Dalam tutorial ini, Anda akan menambahkan identitas terkelola ke Azure Function yang menggunakan pengikatan Azure SQL. Sampel proyek Azure Function dengan pengikatan SQL tersedia dalam contoh backend ToDo.

Setelah selesai dengan tutorial ini, Azure Function Anda akan tersambung ke database Azure SQL tanpa memerlukan nama pengguna dan kata sandi.

Ringkasan langkah-langkah yang akan Anda ambil:

Memberikan akses database ke pengguna Microsoft Entra

Pertama-tama aktifkan autentikasi Microsoft Entra ke database SQL dengan menetapkan pengguna Microsoft Entra sebagai admin Direktori Aktif server. Pengguna ini berbeda dengan akun Microsoft yang Anda gunakan untuk mendaftar langganan Azure Anda. Ini harus pengguna yang Anda buat, impor, sinkronkan, atau diundang ke ID Microsoft Entra. Untuk informasi selengkapnya tentang pengguna Microsoft Entra yang diizinkan, lihat Fitur dan batasan Microsoft Entra dalam database SQL.

Mengaktifkan autentikasi Microsoft Entra dapat diselesaikan melalui portal Azure, PowerShell, atau Azure CLI. Petunjuk untuk Azure CLI di bawah ini dan informasi yang menyelesaikan ini melalui portal Azure dan PowerShell tersedia dalam dokumentasi Azure SQL pada autentikasi Microsoft Entra.

  1. Jika penyewa Microsoft Entra Anda belum memiliki pengguna, buat dengan mengikuti langkah-langkah di Menambahkan atau menghapus pengguna menggunakan ID Microsoft Entra.

  2. Temukan ID objek pengguna Microsoft Entra menggunakan az ad user list dan ganti <user-principal-name>. Hasilnya disimpan ke variabel.

    Bagi Azure CLI 2.37.0 dan yang lebih baru:

    azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].id --output tsv)
    

    Bagi versi Azure CLI yang lebih lama:

    azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)
    

    Tip

    Untuk melihat daftar semua nama utama pengguna di ID Microsoft Entra, jalankan az ad user list --query [].userPrincipalName.

  3. Tambahkan pengguna Microsoft Entra ini sebagai admin Direktori Aktif menggunakan az sql server ad-admin create perintah di Cloud Shell. Dalam perintah berikut, ganti <server-name> dengan nama server (tanpa akhiran .database.windows.net).

    az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
    

Untuk informasi selengkapnya tentang menambahkan admin Direktori Aktif, lihat Menyediakan administrator Microsoft Entra untuk server Anda

Mengaktifkan identitas terkelola yang ditetapkan sistem pada Fungsi Azure

Dalam langkah ini kita akan menambahkan identitas yang ditetapkan sistem ke Fungsi Azure. Pada langkah selanjutnya, identitas ini akan diberikan akses ke database SQL.

Untuk mengaktifkan identitas terkelola yang ditetapkan sistem di portal Azure:

  1. Buat Fungsi Azure di portal seperti biasa. Buka aplikasi di portal.
  2. Gulir ke bawah ke grup Pengaturan di panel navigasi sebelah kiri.
  3. Pilih Identitas.
  4. Dalam tab Ditetapkan oleh sistem, alihkan Status ke Aktif. Klik Simpan.

Turn on system assigned identity for Function app

Untuk informasi tentang mengaktifkan identitas terkelola yang ditetapkan sistem melalui Azure CLI atau PowerShell, lihat informasi selengkapnya tentang menggunakan identitas terkelola dengan Azure Functions.

Tip

Untuk identitas terkelola yang ditetapkan pengguna, beralihlah ke tab Ditetapkan Pengguna. Klik Tambahkan dan pilih Identitas Terkelola. Untuk informasi selengkapnya tentang membuat identitas terkelola yang ditetapkan pengguna, lihat Mengelola identitas terkelola yang ditetapkan pengguna.

Memberikan akses database SQL ke identitas terkelola

Dalam langkah ini kita akan menyambungkan ke database SQL dengan akun pengguna Microsoft Entra dan memberikan akses identitas terkelola ke database.

  1. Buka alat SQL pilihan Anda dan masuk dengan akun pengguna Microsoft Entra (seperti pengguna Microsoft Entra yang kami tetapkan sebagai administrator). Langkah ini dapat dicapai dalam Cloud Shell dengan perintah SQLCMD.

    sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
    
  2. Dalam prompt SQL untuk database yang Anda inginkan, jalankan perintah berikut untuk memberikan izin ke fungsi Anda. Contohnya,

    CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
    ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
    GO
    

    <nama> identitas adalah nama identitas terkelola di ID Microsoft Entra. Jika identitas ditetapkan sistem, nama tersebut selalu sama dengan nama aplikasi Fungsi Anda.

Mengonfigurasi string koneksi SQL Fungsi Azure

Pada langkah terakhir, kita akan mengonfigurasi azure Function SQL string koneksi untuk menggunakan autentikasi identitas terkelola Microsoft Entra.

Nama pengaturan string koneksi diidentifikasi dalam kode Functions kita sebagai atribut pengikatan "ConnectionStringSetting", seperti yang terlihat dalam atribut dan anotasi pengikatan input SQL.

Di pengaturan aplikasi dari Aplikasi Fungsi, pengaturan string koneksi SQL harus diperbarui untuk mengikuti format berikut:

Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; Database=testdb

testdb adalah nama database yang kami sambungkan dan demo.database.windows.net adalah nama server yang kami sambungkan.

Tip

Untuk identitas terkelola yang ditetapkan pengguna, gunakan Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; User Id=ClientIdOfManagedIdentity; Database=testdb.

Langkah berikutnya