Identitas terkelola di Microsoft Entra untuk Azure SQL

Berlaku untuk:Azure SQL DatabaseAzure SQL Managed Instance

ID Microsoft Entra (sebelumnya Azure Active Directory) mendukung dua jenis identitas terkelola: identitas terkelola yang ditetapkan sistem (SMI) dan identitas terkelola yang ditetapkan pengguna (UMI). Untuk informasi selengkapnya, lihat Jenis identitas terkelola.

SMI secara otomatis ditetapkan ke Azure SQL Managed Instance saat dibuat. Saat Anda menggunakan autentikasi Microsoft Entra dengan Azure SQL Database, Anda harus menetapkan SMI saat perwakilan layanan Azure digunakan untuk membuat pengguna Microsoft Entra di SQL Database.

Sebelumnya, hanya SMI yang dapat ditetapkan ke identitas server Azure SQL Managed Instance atau SQL Database. Sekarang, UMI dapat ditetapkan ke SQL Managed Instance atau SQL Database sebagai instans atau identitas server.

Selain menggunakan UMI dan SMI sebagai instans atau identitas server, Anda dapat menggunakannya untuk mengakses database dengan menggunakan opsi Authentication=Active Directory Managed IdentitySQL string koneksi . Anda perlu membuat pengguna SQL dari identitas terkelola di database target dengan menggunakan pernyataan CREATE USER . Untuk informasi selengkapnya, lihat Menggunakan autentikasi Microsoft Entra dengan SqlClient.

Untuk mengambil UMI atau SMI saat ini untuk Azure SQL Managed instance atau Azure SQL Database, lihat Mendapatkan atau mengatur identitas terkelola untuk server logis atau instans terkelola nanti di artikel ini.

Keuntungan menggunakan identitas terkelola yang ditetapkan pengguna

Ada beberapa manfaat menggunakan UMI sebagai identitas server:

  • Pengguna memiliki fleksibilitas untuk membuat dan memelihara UMI mereka sendiri untuk penyewa. Anda dapat menggunakan UMI sebagai identitas server untuk Azure SQL. UMI dikelola oleh pengguna, sedangkan SMI didefinisikan secara unik per server dan ditetapkan oleh sistem.

  • Di masa lalu, Anda memerlukan peran Pembaca Direktori Id Entra Microsoft saat menggunakan SMI sebagai server atau identitas instans. Dengan diperkenalkannya mengakses ID Microsoft Entra melalui Microsoft Graph, pengguna yang berkaitan dengan pemberian izin tingkat tinggi seperti peran Pembaca Direktori ke SMI atau UMI dapat memberikan izin tingkat yang lebih rendah sehingga identitas server atau instans dapat mengakses Microsoft Graph.

    Untuk informasi selengkapnya tentang menyediakan izin Pembaca Direktori dan fungsinya, lihat Peran Pembaca Direktori di ID Microsoft Entra untuk Azure SQL.

  • Pengguna dapat memilih UMI tertentu untuk menjadi server atau identitas instans untuk semua database atau instans terkelola di penyewa. Atau mereka dapat memiliki beberapa UMI yang ditetapkan ke server atau instans yang berbeda.

    UMI dapat digunakan di server yang berbeda untuk mewakili fitur yang berbeda. Misalnya, UMI dapat melayani enkripsi data transparan (TDE) di satu server, dan UMI dapat melayani autentikasi Microsoft Entra di server lain.

  • Anda memerlukan UMI untuk membuat server logis di Azure yang dikonfigurasi dengan TDE dengan kunci yang dikelola pelanggan (CMK). Untuk informasi selengkapnya, lihat Enkripsi data transparan yang dikelola pelanggan menggunakan identitas terkelola yang ditetapkan pengguna.

  • UMI independen dari server logis atau instans terkelola. Saat server atau instans logis dihapus, SMI juga dihapus. UMIs tidak dihapus dengan server.

Catatan

Anda harus mengaktifkan identitas instans (SMI atau UMI) untuk memungkinkan dukungan untuk autentikasi Microsoft Entra di SQL Managed Instance. Untuk SQL Database, mengaktifkan identitas server bersifat opsional dan hanya diperlukan jika perwakilan layanan Microsoft Entra (aplikasi Microsoft Entra) mengawasi pembuatan dan pengelolaan pengguna, grup, atau aplikasi Microsoft Entra di server. Untuk informasi selengkapnya, lihat Perwakilan layanan Microsoft Entra dengan Azure SQL.

Membuat identitas terkelola yang ditetapkan pengguna

Untuk informasi tentang cara membuat UMI, lihat Mengelola identitas terkelola yang ditetapkan pengguna.

Izin

Setelah UMI dibuat, beberapa izin diperlukan untuk memungkinkan UMI membaca dari Microsoft Graph sebagai identitas server. Berikan izin berikut, atau berikan PERAN Pembaca Direktori kepada UMI.

Izin ini harus diberikan sebelum Anda menyediakan server logis atau instans terkelola. Setelah Anda memberikan izin ke UMI, izin diaktifkan untuk semua server atau instans yang dibuat dengan UMI yang ditetapkan sebagai identitas server.

Penting

Hanya Administrator Global atau Administrator Peran Istimewa yang dapat memberikan izin ini.

Memberikan izin

Contoh skrip PowerShell berikut memberikan izin yang diperlukan untuk identitas terkelola. Sampel ini menetapkan izin ke identitas umiservertestterkelola yang ditetapkan pengguna .

Untuk menjalankan skrip, Anda harus masuk sebagai pengguna dengan peran Administrator Global atau Administrator Peran Istimewa.

Skrip memberikan User.Read.Allizin , GroupMember.Read.All, dan Application.Read.ALL ke identitas terkelola untuk mengakses Microsoft Graph.

# Script to assign permissions to an existing UMI 
# The following required Microsoft Graph permissions will be assigned: 
#   User.Read.All
#   GroupMember.Read.All
#   Application.Read.All

Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Applications

$tenantId = "<tenantId>"        # Your tenant ID
$MSIName = "<managedIdentity>"; # Name of your managed identity

# Log in as a user with the "Global Administrator" or "Privileged Role Administrator" role
Connect-MgGraph -TenantId $tenantId -Scopes "AppRoleAssignment.ReadWrite.All,Application.Read.All"

# Search for Microsoft Graph
$MSGraphSP = Get-MgServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'";
$MSGraphSP

# Sample Output

# DisplayName     Id                                   AppId                                SignInAudience      ServicePrincipalType
# -----------     --                                   -----                                --------------      --------------------
# Microsoft Graph 47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 AzureADMultipleOrgs Application

$MSI = Get-MgServicePrincipal -Filter "DisplayName eq '$MSIName'" 
if($MSI.Count -gt 1)
{ 
Write-Output "More than 1 principal found with that name, please find your principal and copy its object ID. Replace the above line with the syntax $MSI = Get-MgServicePrincipal -ServicePrincipalId <your_object_id>"
Exit
}

# Get required permissions
$Permissions = @(
  "User.Read.All"
  "GroupMember.Read.All"
  "Application.Read.All"
)

# Find app permissions within Microsoft Graph application
$MSGraphAppRoles = $MSGraphSP.AppRoles | Where-Object {($_.Value -in $Permissions)}

# Assign the managed identity app roles for each permission
foreach($AppRole in $MSGraphAppRoles)
{
    $AppRoleAssignment = @{
	    principalId = $MSI.Id
	    resourceId = $MSGraphSP.Id
	    appRoleId = $AppRole.Id
    }

    New-MgServicePrincipalAppRoleAssignment `
    -ServicePrincipalId $AppRoleAssignment.PrincipalId `
    -BodyParameter $AppRoleAssignment -Verbose
}

Memeriksa izin untuk identitas terkelola yang ditetapkan pengguna

Untuk memeriksa izin untuk UMI, buka portal Azure. Di sumber daya ID Microsoft Entra, buka Aplikasi perusahaan. Pilih Semua Aplikasi untuk Jenis aplikasi, dan cari UMI yang dibuat.

Screenshot of enterprise application settings in the Azure portal.

Pilih UMI, dan masuk ke pengaturan Izin di bawah Keamanan.

Screenshot of user-assigned managed identity permissions.

Mendapatkan atau mengatur identitas terkelola untuk server logis atau instans terkelola

Untuk membuat server dengan menggunakan UMI, lihat panduan berikut: Membuat server logis Azure SQL dengan menggunakan identitas terkelola yang ditetapkan pengguna.

Mendapatkan SMI untuk server logis Azure SQL Database

portal Azure menampilkan ID identitas terkelola (SMI) yang ditetapkan sistem di menu Properti server logis Azure SQL Database.

Screenshot of the Azure portal page for an Azure SQL Database logical server. In the Properties menu, the System Assigned Managed Identity is highlighted.

  • Untuk mengambil UMI untuk Azure SQL Managed Instance atau Azure SQL Database, gunakan contoh PowerShell atau Azure CLI berikut.
  • Untuk mengambil SMI untuk Azure SQL Managed Instance, gunakan contoh PowerShell atau Azure CLI berikut.

Mengatur identitas terkelola di portal Azure

Untuk mengatur identitas yang dikelola pengguna untuk server logis Azure SQL Database atau Azure SQL Managed Instance di portal Azure:

  1. Buka sumber daya server SQL atau instans terkelola SQL Anda.
  2. Di bawah Keamanan, pilih pengaturan Identitas .
  3. Di bawah Identitas terkelola yang ditetapkan pengguna, pilih Tambahkan.
  4. Pilih langganan, lalu untuk Identitas utama, pilih identitas terkelola untuk langganan. Kemudian pilih tombol Pilih .

Azure portal screenshot of selecting a user-assigned managed identity when configuring an existing server identity.

Membuat atau mengatur identitas terkelola dengan menggunakan Azure CLI

Azure CLI 2.26.0 (atau yang lebih baru) diperlukan untuk menjalankan perintah ini dengan UMI.

Identitas terkelola Azure SQL Database menggunakan Azure CLI

  • Untuk memprovisikan server baru dengan identitas terkelola yang ditetapkan pengguna, gunakan perintah az sql server create .

  • Untuk mendapatkan identitas terkelola untuk server logis, gunakan perintah az sql server show .

    • Misalnya, untuk mengambil identitas terkelola yang ditetapkan pengguna dari server logis, cari principalId dari masing-masing:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.userAssignedIdentities
      
    • Untuk mengambil identitas terkelola yang ditetapkan sistem dari server logis Azure SQL Database:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
      
  • Untuk memperbarui pengaturan server UMI, gunakan perintah az sql server update .

Identitas terkelola Azure SQL Managed Instance menggunakan Azure CLI

  • Untuk menyediakan instans terkelola baru dengan UMI, gunakan perintah az sql mi create .

  • Untuk mendapatkan identitas terkelola yang ditetapkan sistem dan ditetapkan pengguna untuk instans terkelola, gunakan perintah az sql mi show .

    • Misalnya, untuk mengambil UMI untuk instans terkelola, cari principalId dari masing-masing:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.userAssignedIdentities
      
    • Untuk mengambil SMI instans terkelola:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.principalId
      
  • Untuk memperbarui pengaturan instans terkelola UMI, gunakan perintah az sql mi update .

Membuat atau mengatur identitas terkelola dengan menggunakan PowerShell

Modul Az.Sql 3.4 atau yang lebih baru diperlukan untuk menggunakan PowerShell dengan UMI. Versi terbaru PowerShell direkomendasikan, atau gunakan Azure Cloud Shell di portal Azure.

Identitas terkelola Azure SQL Database menggunakan PowerShell

  • Untuk memprovisikan server baru dengan UMI, gunakan perintah New-AzSqlServer .

  • Untuk mendapatkan identitas terkelola untuk server logis, gunakan perintah Get-AzSqlServer .

    • Misalnya, untuk mengambil UMI server logis, cari principalId masing-masing:

      $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Untuk mengambil SMI server logis Azure SQL Database:

      $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
      $MI.Identity.principalId
      
  • Untuk memperbarui pengaturan server UMI, gunakan perintah Set-AzSqlServer .

Identitas terkelola Azure SQL Managed Instance menggunakan PowerShell

  • Untuk menyediakan instans terkelola baru dengan UMI, gunakan perintah New-AzSqlInstance .

  • Untuk mendapatkan identitas terkelola untuk instans terkelola, gunakan perintah Get-AzSqlInstance .

    • Misalnya, untuk mengambil UMI instans terkelola, cari principalId dari masing-masing:

      $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Untuk mengambil SMI instans terkelola:

      $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
      $MI.Identity.principalId
      
  • Untuk memperbarui pengaturan instans terkelola UMI, gunakan perintah Set-AzSqlInstance .

Membuat atau mengatur identitas terkelola dengan menggunakan REST API

Untuk memperbarui pengaturan UMI untuk server, Anda juga dapat menggunakan skrip provisi REST API yang digunakan dalam Membuat server logis dengan menggunakan identitas terkelola yang ditetapkan pengguna atau Membuat instans terkelola dengan menggunakan identitas terkelola yang ditetapkan pengguna. Jalankan ulang perintah provisi dalam panduan dengan properti identitas terkelola yang telah diperbarui yang ingin Anda perbarui.

Membuat atau mengatur identitas terkelola dengan menggunakan templat ARM

Untuk memperbarui pengaturan UMI untuk server, Anda juga dapat menggunakan templat Azure Resource Manager (templat ARM) yang digunakan dalam Membuat server logis dengan menggunakan identitas terkelola yang ditetapkan pengguna atau Membuat instans terkelola dengan menggunakan identitas terkelola yang ditetapkan pengguna. Jalankan ulang perintah provisi dalam panduan dengan properti identitas terkelola yang telah diperbarui yang ingin Anda perbarui.

Catatan

Anda tidak dapat mengubah administrator server atau kata sandi, atau mengubah admin Microsoft Entra, dengan menjalankan ulang perintah provisi untuk templat ARM.

Batasan dan masalah yang diketahui

  • Setelah Anda membuat instans terkelola, halaman admin Microsoft Entra untuk instans terkelola Anda di portal Azure menunjukkan peringatan: Managed Instance needs permissions to access Microsoft Entra ID. Click here to grant "Read" permissions to your Managed Instance. Jika Anda memberi UMI izin yang sesuai yang dibahas sebelumnya dalam artikel ini, Anda dapat mengabaikan peringatan ini.
  • Jika Anda menggunakan SMI atau UMI sebagai server atau identitas instans, menghapus identitas akan membuat server atau instans tidak dapat mengakses Microsoft Graph. Autentikasi Microsoft Entra dan fungsi lainnya akan gagal. Untuk memulihkan fungsionalitas Microsoft Entra, tetapkan SMI atau UMI baru ke server dengan izin yang sesuai.
  • Untuk memberikan izin untuk mengakses Microsoft Graph melalui SMI atau UMI, Anda perlu menggunakan PowerShell. Anda tidak dapat memberikan izin ini dengan menggunakan portal Azure.