Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure App Service menyediakan layanan hosting web yang sangat dapat diskalakan dan di-patch sendiri di Azure. App Service juga menyediakan identitas terkelola untuk aplikasi Anda, yang merupakan solusi turnkey untuk mengamankan akses ke Azure SQL dan layanan Azure lainnya. Identitas terkelola di App Service membuat aplikasi Anda lebih aman dengan menghilangkan rahasia, seperti kredensial dalam string koneksi.
Tutorial ini menunjukkan kepada Anda cara menambahkan identitas terkelola ke sampel aplikasi .NET yang memiliki backend Azure SQL. Setelah selesai, aplikasi Anda dapat tersambung ke database Azure SQL dengan aman tanpa perlu nama pengguna dan kata sandi.
Di tutorial ini, Anda akan:
- Aktifkan identitas terkelola.
- Berikan akses Azure SQL Database ke identitas terkelola.
- Konfigurasikan Kerangka Kerja Entitas untuk menggunakan autentikasi Microsoft Entra dengan SQL Database.
- Sambungkan ke SQL Database dari Visual Studio menggunakan autentikasi Microsoft Entra.
Untuk panduan tentang menggunakan Azure Database for MySQL atau Azure Database for PostgreSQL dalam kerangka kerja Node.js, Python, dan Java, lihat Tutorial: Menyambungkan ke database Azure dari App Service tanpa rahasia menggunakan identitas terkelola.
Catatan
ID Microsoft Entra dan identitas terkelola tidak didukung untuk SQL Server lokal.
Autentikasi Microsoft Entra berbeda dari autentikasi Windows Terintegrasi di Active Directory (AD) Domain Services (DS) lokal. AD DS dan MICROSOFT Entra ID menggunakan protokol autentikasi yang sama sekali berbeda. Untuk informasi selengkapnya, lihat dokumentasi Microsoft Entra Domain Services.
Prasyarat
-
Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.
Memiliki aplikasi dasar Azure App Service ASP.NET MVC atau ASP.NET Core MVC create-read-update-delete (CRUD) yang menggunakan Azure SQL Database dengan autentikasi SQL sebagai back end. Langkah-langkah dalam tutorial ini mendukung versi .NET berikut:
- .NET Framework 4.8 dan yang lebih tinggi
- .NET 6.0 dan lebih tinggi
Izinkan koneksi klien dari komputer Anda ke Azure, sehingga Anda dapat men-debug aplikasi di lingkungan pengembangan Anda. Anda dapat menambahkan alamat IP klien dengan mengikuti langkah-langkah di Mengelola aturan firewall IP tingkat server menggunakan portal Microsoft Azure.
Masuk ke Azure Cloud Shell atau siapkan lingkungan Anda untuk menggunakan Azure CLI.
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Mengautentikasi ke Azure menggunakan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan az upgrade.
Memberikan akses admin database ke pengguna Microsoft Entra
Aktifkan autentikasi Microsoft Entra ke database Azure SQL dengan menetapkan pengguna Microsoft Entra sebagai admin server Azure SQL. Admin Microsoft Entra harus merupakan pengguna yang dibuat, diimpor, disinkronkan, atau diundang ke id Microsoft Entra. Pengguna ini mungkin tidak sama dengan pengguna akun Microsoft untuk langganan Azure Anda.
- Untuk informasi selengkapnya tentang membuat pengguna Microsoft Entra, lihat Menambahkan atau menghapus pengguna menggunakan ID Microsoft Entra.
- Untuk informasi selengkapnya tentang pengguna Microsoft Entra yang diizinkan untuk SQL Database, lihat Fitur dan batasan Microsoft Entra di SQL Database.
- Untuk informasi selengkapnya tentang menambahkan admin server Azure SQL, lihat Menyediakan administrator Microsoft Entra untuk server Anda.
Jalankan perintah berikut di lingkungan Bash Azure Cloud Shell, atau setelah masuk ke Azure CLI secara lokal.
Gunakan
az ad user list
dengandisplay-name
parameter , ,filter
atauupn
untuk mendapatkan ID objek untuk pengguna ID Microsoft Entra yang ingin Anda jadikan admin. Jalankanaz ad user list
mandiri untuk menampilkan informasi bagi semua pengguna di direktori Microsoft Entra.Misalnya, perintah berikut mencantumkan informasi untuk pengguna ID Microsoft Entra dengan
display-name
Nama Belakang Nama Depan.az ad user list --display-name "Firstname Lastname"
Berikut adalah contoh output:
"businessPhones": [], "displayName": "Firstname Lastname", "givenName": null, "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "jobTitle": null, "mail": "firstname@contoso.com", "mobilePhone": null, "officeLocation": null, "preferredLanguage": null, "surname": null, "userPrincipalName": "firstname@contoso.com"
Tambahkan pengguna ID Microsoft Entra sebagai admin di server Azure SQL dengan menggunakan
az sql server ad-admin create
denganobject-id
parameter . Dalam perintah berikut, ganti<server-name>
dengan nama server Anda tanpa akhiran.database.windows.net
, dan ganti<entra-id>
dengan nilaiid
dari output perintahaz ad user list
sebelumnya.az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id <entra-id>
Menyiapkan konektivitas identitas terkelola untuk aplikasi
Langkah-langkah berikut mengonfigurasi aplikasi Anda untuk menyambungkan ke Azure SQL Database dengan menggunakan identitas terkelola yang ditetapkan sistem. Untuk menggunakan identitas yang ditetapkan pengguna, lihat Tutorial: Menyambungkan ke database Azure dari App Service tanpa rahasia menggunakan identitas terkelola.
Mengaktifkan identitas terkelola untuk aplikasi
Untuk mengaktifkan identitas terkelola untuk aplikasi Azure Anda, gunakan perintah az webapp identity assign , ganti <app-name>
dengan nama aplikasi Anda. Nama identitas yang ditetapkan sistem selalu sama dengan nama aplikasi.
az webapp identity assign --resource-group myResourceGroup --name <app-name>
Berikut adalah contoh output-nya:
{
"additionalProperties": {},
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
}
Untuk mengaktifkan identitas terkelola untuk slot penyebaran, tambahkan --slot <slot-name>
ke perintah sebelumnya dan gunakan nama slot di <slot-name>
. Nama identitas yang ditetapkan sistem untuk slot penyebaran adalah <app-name>/slots/<slot-name>
.
Anda juga dapat menambahkan identitas ke grup Microsoft Entra, lalu memberikan akses SQL Database ke grup Microsoft Entra alih-alih ke identitas. Untuk memberikan izin untuk grup Microsoft Entra, gunakan nama tampilan grup. Perintah berikut menambahkan contoh identitas terkelola 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 myResourceGroup --name <app-name> --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
az ad group member list -g $groupid
Memberikan izin ke identitas terkelola
Berikan identitas izin minimum yang dibutuhkan aplikasi Anda.
Buka baris perintah PowerShell dan masuk ke SQL Database dengan menggunakan perintah SQLCMD berikut. Ganti
<server-name>
dengan nama server Anda,<db-name>
dengan nama database Anda, dan<admin-user>
denganuserPrincipalName
pengguna admin dari output perintah sebelumnyaaz ad user list
.sqlcmd -S <servername>.database.windows.net -d <db-name> -U <admin-user> -G -l 30
Ikuti permintaan untuk masuk.
Pada perintah SQL, jalankan perintah berikut untuk memberi aplikasi izin minimum yang dibutuhkan pada database. Ganti
<identity-name>
dengan nama identitas terkelola di ID Microsoft Entra, yang sama dengan nama aplikasi.CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [<identity-name>]; ALTER ROLE db_datawriter ADD MEMBER [<identity-name>]; ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>]; GO
Catatan
Layanan identitas backend yang dikelola mempertahankan cache token yang hanya memperbarui token ketika kedaluwarsa untuk sumber daya target. Jika Anda mencoba mengubah izin SQL Database setelah terlebih dahulu mendapatkan token dengan aplikasi, Anda tidak mendapatkan token baru dengan izin yang diperbarui hingga token yang di-cache kedaluwarsa.
Menghapus string koneksi asli
Setiap perubahan yang Anda buat di web.config atau appsettings.json berfungsi dengan identitas terkelola. Anda dapat menghapus string koneksi asli yang Anda gunakan saat menyebarkan aplikasi untuk pertama kalinya. Untuk menghapus string koneksi, jalankan perintah Azure CLI berikut, ganti <app-name>
dengan nama aplikasi Anda dan <connection-string-name>
dengan nama string koneksi Anda.
az webapp config connection-string delete --resource-group myResourceGroup --name <app-name> --setting-names <connection-string-name>
Menyiapkan lingkungan pengembangan Anda
Siapkan lingkungan pengembangan yang Anda pilih dan masuk ke Azure. Untuk informasi selengkapnya tentang menyiapkan lingkungan pengembangan Anda untuk autentikasi Microsoft Entra, lihat Pustaka klien Azure Identity untuk .NET.
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 memilihPengaturan AkunFile> dari menu atas, lalu pilih Masuk atau Tambahkan.
- Untuk mengatur pengguna Microsoft Entra untuk autentikasi layanan Azure, pilihOpsiAlat> dari menu atas, lalu pilihPilihan AkunAutentikasi> Layanan Azure. Pilih pengguna Microsoft Entra yang Anda tambahkan dan pilih OK.
Mengubah proyek Anda dan menerbitkan aplikasi Anda
Aplikasi web yang didukung database Azure SQL Anda menggunakan konteks database untuk menyambungkan dengan database. Untuk menggunakan autentikasi Microsoft Entra agar berfungsi dengan aplikasi, Anda harus memperbarui konteks database untuk merujuk ke penyedia Entity Framework SQL Server, yang bergantung pada penyedia ADO.NET Microsoft.Data.SqlClient modern.
Penyedia Entity Framework menggantikan penyedia SQL Server bawaan System.Data.SqlClient
, dan menyertakan dukungan untuk metode autentikasi ID Microsoft Entra. Untuk informasi selengkapnya, lihat Microsoft.EntityFramework.SqlServer.
[DbConfigurationType(typeof(MicrosoftSqlDbConfiguration))]
bekerja secara lokal untuk digunakan Microsoft.Data.SqlClient
untuk konteks database, tetapi karena System.Data.SqlClient
dikodekan secara permanen sebagai penyedia di Azure App Service, Anda harus memperluas MicrosoftSqlDbConfiguration
untuk mengalihkan System.Data.SqlClient
referensi ke Microsoft.Data.SqlClient
sebagai gantinya. Langkah-langkahnya berbeda tergantung pada apakah Anda memiliki aplikasi ASP.NET atau ASP.NET Core.
- aplikasi ASP.NET Core
-
aplikasi
ASP.NET
Aplikasi ASP.NET Core menggunakan Entity Framework Core secara default.
Di Konsol Manajer Paket Visual Studio, tambahkan paket NuGet Microsoft.Data.SqlClient.
Install-Package Microsoft.Data.SqlClient
Di appsettings.json, ganti nilai string koneksi dengan kode berikut, ganti
<server-name
dan<database-name>
dengan nama server dan nama database Anda."Server=tcp:<server-name>.database.windows.net;Authentication=Active Directory Default; Database=<database-name>;"
Catatan
Anda dapat menggunakan otentikasi Active Directory Default baik di komputer lokal Anda maupun di Azure App Service. Driver dapat memperoleh token dari MICROSOFT Entra ID dengan beberapa cara berbeda.
Jika aplikasi disebarkan, driver mendapatkan token dari identitas terkelola yang ditetapkan sistem aplikasi. Driver juga dapat mengautentikasi dengan identitas terkelola yang ditetapkan pengguna jika Anda menyertakan
User Id=<client-id-of-user-assigned-managed-identity>;
dalam string koneksi Anda.Kelas
DefaultAzureCredential
menyimpan token dalam memori dan mengambilnya dari ID Microsoft Entra sebelum kedaluwarsa. Anda tidak memerlukan kode kustom untuk menyegarkan token.Anda sekarang memiliki semua yang Anda butuhkan untuk menyambungkan ke Azure SQL Database saat Anda men-debug di Visual Studio. Kode Anda menggunakan pengguna Microsoft Entra yang Anda konfigurasi saat menyiapkan lingkungan dev Anda.
Jalankan aplikasi Anda. Aplikasi CRUD di browser Anda terhubung ke database Azure SQL secara langsung, menggunakan autentikasi Microsoft Entra. Penyiapan ini memungkinkan Anda menjalankan migrasi database dari Visual Studio.
Terbitkan perubahan Anda menggunakan perintah Git berikut:
git commit -am "configure managed identity" git push azure main
Menguji aplikasi
Saat halaman web baru menampilkan daftar tugas Anda, aplikasi Anda terhubung ke database menggunakan identitas terkelola.
Sekarang Anda dapat mengedit daftar to-do.
Membersihkan sumber daya
Di langkah-langkah sebelumnya, Anda membuat sumber daya Azure dalam grup sumber daya. Jika Anda tidak membutuhkan sumber daya ini di masa mendatang, hapus grup sumber daya dengan menjalankan perintah berikut ini di Cloud Shell:
az group delete --name myResourceGroup
Perintah ini mungkin perlu waktu beberapa saat untuk dijalankan.
Konten terkait
- Tutorial: Menggunakan domain kustom dan sertifikat terkelola untuk mengamankan aplikasi Anda
- Tutorial: Menyambungkan aplikasi App Service ke SQL Database atas nama pengguna yang masuk
- Tutorial: Menyambungkan ke database Azure dari App Service tanpa rahasia menggunakan identitas terkelola
- Tutorial: Menyambungkan ke layanan Azure yang tidak mendukung identitas terkelola menggunakan Key Vault
- Tutorial: Mengisolasi komunikasi back-end dengan integrasi Jaringan Virtual