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 Azure AD
Pertama, aktifkan autentikasi Azure AD ke database SQL dengan menetapkan pengguna Azure AD sebagai admin Active Directory server. Pengguna ini berbeda dengan akun Microsoft yang Anda gunakan untuk mendaftar langganan Azure Anda. Pengguna ini harus menjadi pengguna yang Anda buat, impor, sinkronkan, atau undang ke Microsoft Azure AD. Untuk informasi selengkapnya tentang pengguna Azure AD yang diizinkan, lihat Fitur dan batasan Azure AD di database SQL.
Mengaktifkan autentikasi Azure AD dapat dilakukan melalui portal Azure, PowerShell, atau Azure CLI. Petunjuk untuk Azure CLI tersedia di bawah ini dan informasi untuk melakukannya melalui portal Azure dan PowerShell tersedia dalam dokumentasi Azure SQL tentang autentikasi Azure AD.
Jika penyewa Azure AD Anda belum memiliki pengguna, buat dengan mengikuti langkah-langkah di Menambahkan atau menghapus pengguna menggunakan Azure Active Directory.
Temukan ID objek pengguna Azure AD menggunakan
az ad user listdan 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 prinsipal pengguna di Microsoft Azure AD, jalankan
az ad user list --query [].userPrincipalName.Tambahkan pengguna Azure AD ini sebagai admin Direktori Aktif menggunakan perintah
az sql server ad-admin createdi 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 Memprovisi administrator Azure Active Directory 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:
- Buat Fungsi Azure di portal seperti biasa. Buka aplikasi di portal.
- Gulir ke bawah ke grup Pengaturan di panel navigasi sebelah kiri.
- Pilih Identitas.
- Dalam tab Ditetapkan oleh sistem, alihkan Status ke Aktif. Klik Simpan.

Untuk informasi tentang mengaktifkan identitas terkelola yang ditetapkan sistem melalui Azure CLI atau PowerShell, lihat informasi selengkapnya tentang menggunakan identitas terkelola dengan Azure Functions.
Memberikan akses database SQL ke identitas terkelola
Dalam langkah ini kita akan menyambungkan ke database SQL menggunakan akun pengguna Azure AD dan memberikan akses identitas terkelola ke database.
Buka alat SQL pilihan Anda dan masuk menggunakan akun pengguna Azure AD (seperti pengguna Azure AD 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 30Dalam prompt SQL untuk database yang Anda inginkan, jalankan perintah berikut untuk memberikan izin ke fungsi Anda. Misalnya,
CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [<identity-name>]; ALTER ROLE db_datawriter ADD MEMBER [<identity-name>]; GO<identity-name> adalah nama identitas terkelola di Azure AD. 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 string koneksi SQL Fungsi Azure untuk menggunakan autentikasi identitas terkelola Azure AD.
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.