Perwakilan layanan Microsoft Entra dengan Azure SQL

Berlaku untuk:Azure SQL DatabaseAzure SQL Managed Instance

Sumber daya Azure SQL mendukung akses terprogram untuk aplikasi menggunakan perwakilan layanan dan identitas terkelola di ID Microsoft Entra (sebelumnya Azure Active Directory).

Dukungan perwakilan layanan (aplikasi Microsoft Entra)

Artikel ini berlaku untuk aplikasi yang terdaftar di MICROSOFT Entra ID. Menggunakan kredensial aplikasi untuk mengakses Azure SQL mendukung prinsip keamanan Pemisahan Tugas, memungkinkan organisasi untuk mengonfigurasi akses yang tepat untuk setiap aplikasi yang terhubung ke database mereka. Identitas terkelola, bentuk khusus perwakilan layanan, sangat direkomendasikan karena tidak memiliki kata sandi dan menghilangkan kebutuhan akan kredensial yang dikelola pengembang.

MICROSOFT Entra ID selanjutnya memungkinkan skenario autentikasi tingkat lanjut seperti OAuth 2.0 On-Behalf-Of Flow (OBO). OBO memungkinkan aplikasi untuk meminta kredensial pengguna yang masuk, untuk skenario ketika aplikasi itu sendiri tidak boleh diberikan akses database tanpa izin yang didelegasikan.

Untuk informasi selengkapnya tentang aplikasi Microsoft Entra, lihat Aplikasi dan objek perwakilan layanan di ID Microsoft Entra dan Membuat perwakilan layanan Azure dengan Azure PowerShell.

Pembuatan pengguna Microsoft Entra menggunakan perwakilan layanan

Mendukung fungsionalitas ini berguna dalam proses otomatisasi aplikasi Microsoft Entra di mana perwakilan Microsoft Entra dibuat dan dikelola dalam SQL Database atau SQL Managed Instance tanpa interaksi manusia. Perwakilan layanan dapat menjadi admin Microsoft Entra untuk server logis SQL atau instans terkelola, sebagai bagian dari grup atau sebagai identitas mandiri. Aplikasi ini dapat mengotomatiskan pembuatan objek Microsoft Entra di SQL Database atau SQL Managed Instance, yang memungkinkan otomatisasi penuh pembuatan pengguna database.

Mengaktifkan perwakilan layanan untuk membuat pengguna Microsoft Entra

Saat menggunakan aplikasi untuk mengakses Azure SQL, membuat pengguna dan login Microsoft Entra memerlukan izin yang tidak ditetapkan ke perwakilan layanan atau identitas terkelola secara default: kemampuan untuk membaca pengguna, grup, dan aplikasi dalam penyewa dari Microsoft Graph. Izin ini diperlukan agar mesin SQL memvalidasi identitas yang ditentukan di CREATE LOGIN atau CREATE USER, dan menarik informasi penting termasuk Objek identitas atau ID Aplikasi, yang digunakan untuk membuat login atau pengguna.

Saat pengguna Microsoft Entra menjalankan perintah ini, aplikasi Microsoft Azure SQL menggunakan izin yang didelegasikan untuk meniru pengguna yang masuk dan meminta Microsoft Graph menggunakan izin mereka. Alur ini tidak dimungkinkan dengan perwakilan layanan, karena aplikasi tidak dapat meniru aplikasi lain. Sebagai gantinya, mesin SQL mencoba menggunakan identitas servernya, yang merupakan identitas terkelola utama yang ditetapkan ke instans terkelola SQL, server logis Azure SQL, atau ruang kerja Azure Synapse. Identitas server harus ada dan izin kueri Microsoft Graph atau operasi gagal.

Langkah-langkah berikut menjelaskan cara menetapkan identitas terkelola ke server dan menetapkannya izin Microsoft Graph untuk mengaktifkan perwakilan layanan untuk membuat pengguna Microsoft Entra dan masuk dalam database.

  1. Tetapkan identitas server. Identitas server dapat menjadi identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna. Untuk informasi selengkapnya, lihat Identitas terkelola yang ditetapkan pengguna di ID Microsoft Entra untuk Azure SQL.

    • Perintah PowerShell berikut membuat server logis baru yang disediakan dengan identitas terkelola yang ditetapkan sistem:
    New-AzSqlServer -ResourceGroupName <resource group> -Location <Location name> -ServerName <Server name> -ServerVersion "12.0" -SqlAdministratorCredentials (Get-Credential) -AssignIdentity
    

    Untuk informasi selengkapnya, lihat perintah New-AzSqlServer, atau perintah New-AzSqlInstance untuk SQL Managed Instance.

    • Untuk server logis yang ada, jalankan perintah berikut untuk menambahkan identitas terkelola yang ditetapkan sistem ke dalamnya:
    Set-AzSqlServer -ResourceGroupName <resource group> -ServerName <Server name> -AssignIdentity
    

    Untuk informasi selengkapnya, lihat perintah Set-AzSqlServer, atau perintah Set-AzSqlInstance untuk SQL Managed Instance.

    Catatan

    Identitas server juga dapat ditetapkan menggunakan perintah REST API dan CLI. Untuk informasi selengkapnya, lihat buat server az sql, perbarui server az sql, dan Servers - REST API.

  2. Berikan izin identitas server untuk mengkueri Microsoft Graph. Ini dapat dilakukan dengan beberapa cara: dengan menambahkan identitas ke peran Pembaca Microsoft Entra Directory, dengan menetapkan identitas izin Microsoft Graph individual, atau dengan menambahkan identitas ke grup yang dapat ditetapkan peran yang memiliki peran Pembaca Direktori:

    • Menambahkan identitas server ke grup yang dapat ditetapkan peran

      Di lingkungan produksi, disarankan agar administrator penyewa membuat grup yang dapat ditetapkan peran dan menetapkan peran Pembaca Direktori ke dalamnya. Pemilik grup kemudian dapat menambahkan identitas server ke grup, mewarisi izin tersebut. Ini menghapus persyaratan bagi Administrator Global atau Administrator Peran Istimewa untuk memberikan izin ke setiap identitas server individual, memungkinkan administrator untuk mendelegasikan penetapan izin kepada pemilik grup untuk skenario ini. Untuk informasi selengkapnya, lihat Peran Pembaca Direktori di MICROSOFT Entra ID untuk Azure SQL.

    • Menetapkan izin Microsoft Graph ke identitas server

      Untuk menetapkan izin Microsoft Graph individual ke identitas server, Anda harus memiliki peran Administrator Global Microsoft Entra atau Administrator Peran Istimewa. Ini direkomendasikan daripada menetapkan peran Pembaca Direktori, karena ada izin yang disertakan dalam peran yang tidak diperlukan identitas server. Hanya menetapkan izin baca Microsoft Graph individual membatasi izin identitas server dalam penyewa Anda dan mempertahankan prinsip hak istimewa paling sedikit. Untuk petunjuknya, lihat Identitas terkelola yang ditetapkan pengguna di MICROSOFT Entra ID untuk Azure SQL.

    • Menambahkan identitas server ke peran Pembaca Direktori

      Untuk menambahkan identitas server ke peran Pembaca Direktori, Anda harus menjadi anggota peran Administrator Global Microsoft Entra atau Administrator Peran Istimewa. Di lingkungan produksi, opsi ini tidak disarankan karena dua alasan: peran Pembaca Direktori memberikan lebih banyak izin daripada yang diperlukan identitas server, dan proses penetapan peran masih memerlukan persetujuan administrator untuk setiap identitas server (tidak seperti menggunakan grup). Ikuti instruksi SQL Managed Instance yang tersedia dalam artikel Memprovisikan admin Microsoft Entra (SQL Managed Instance).

Pemecahan Masalah

Saat memecahkan masalah, Anda mungkin mengalami kesalahan berikut:

Msg 33134, Level 16, State 1, Line 1
Principal 'test-user' could not be resolved.
Error message: 'Server identity is not configured. Please follow the steps in "Assign an Azure AD identity to your server and add Directory Reader permission to your identity" (https://aka.ms/sqlaadsetup)'

Kesalahan ini menunjukkan bahwa identitas server belum dibuat atau belum ditetapkan izin Microsoft Graph. Ikuti langkah-langkah untuk Menetapkan identitas ke server logis dan Menetapkan izin Pembaca Direktori ke identitas server logis.

Batasan

  • Perwakilan layanan tidak dapat mengautentikasi di seluruh batas penyewa. Mencoba mengakses SQL Database atau SQL Managed Instance menggunakan aplikasi Microsoft Entra yang dibuat di penyewa yang berbeda gagal.

  • Modul Az.Sql 2.9.0 atau yang lebih tinggi diperlukan untuk mengatur aplikasi Microsoft Entra sebagai admin Microsoft Entra untuk Azure SQL. Pastikan Anda ditingkatkan ke modul terbaru.

Langkah berikutnya