Identitas terkelola di Microsoft Entra untuk Azure SQL

Aplikasi ke:Azure SQL DatabaseAzure SQL Managed Instance

Microsoft Entra ID (formerly 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 ketika prinsipal layanan Azure membuat pengguna Microsoft Entra di SQL Database.

Sebelumnya, Anda hanya dapat menetapkan SMI ke identitas server Azure SQL Managed Instance atau SQL Database. Sekarang, Anda dapat menetapkan UMI 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 SQL connection string Authentication=Active Directory Managed Identity. Anda perlu membuat pengguna SQL dari identitas terkelola di database target dengan menggunakan pernyataan CREATE USER . Untuk informasi selengkapnya, lihat Gunakan autentikasi Microsoft Entra dengan SqlClient.

Untuk mengambil UMI atau SMI terkini untuk instans terkelola Azure SQL atau Azure SQL Database, lihat Ambil atau tetapkan identitas terkelola untuk server logis atau instans terkelola nanti di artikel ini.

Keuntungan menggunakan identitas terkelola yang ditetapkan pengguna

Menggunakan UMI sebagai identitas server memberikan beberapa manfaat:

  • Pengguna memiliki fleksibilitas untuk membuat dan menyimpan UMI mereka sendiri untuk penyewa. Anda dapat menggunakan UMI sebagai identitas server untuk Azure SQL. Anda mengelola UMI sendiri, sedangkan sistem secara unik mendefinisikan dan menetapkan SMI per server.

  • Di masa lalu, Anda memerlukan peran Microsoft Entra ID Directory Readers saat menggunakan SMI sebagai server atau identitas instans. Dengan diperkenalkannya akses ke Microsoft Entra ID melalui Microsoft Graph, pengguna yang khawatir memberikan izin tingkat tinggi seperti role Pembaca Direktori ke SMI atau UMI dapat secara alternatif memberikan izin tingkat lebih rendah sehingga server atau identitas instans dapat mengakses Microsoft Graph.

    Untuk informasi selengkapnya tentang menyediakan izin peran Pembaca Direktori dan perannya, lihat peran Pembaca Direktori di Microsoft Entra ID 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 menetapkan beberapa ID Pengguna Unik (UMI) ke server atau instans yang berbeda.

    Anda dapat menggunakan UMI 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 menggunakan kunci-kunci yang dikelola pelanggan (CMKs). Untuk informasi selengkapnya, lihat Enkripsi data transparan yang dikelola pelanggan menggunakan identitas terkelola yang ditetapkan pengguna.

  • UMI bersifat independen dari server logis atau instans yang dikelola. Saat Anda menghapus server atau instans logis, sistem juga menghapus SMI. UMIs tidak dihapus bersama 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 prinsipal 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.

Perizinan

Setelah membuat UMI, Anda harus memberikan beberapa izin untuk mengizinkan UMI membaca dari Microsoft Graph sebagai identitas server. Berikan izin berikut, atau berikan peran Pembaca Direktori kepada UMI.

Anda harus memberikan izin ini sebelum memprovisikan server logis atau instans terkelola. Setelah Anda memberikan izin ke UMI, izin tersebut berlaku untuk semua server atau instans yang dibuat dengan UMI yang ditetapkan sebagai identitas server.

Penting

Hanya Administrator Peran Istimewa atau peran yang lebih tinggi yang dapat memberikan izin ini.

Izin untuk SMI

SMI memerlukan izin aplikasi Microsoft Graph yang sama.

Hanya berlaku untuk Azure SQL Database: Menggunakan SMI memberikan kesempatan untuk tidak secara eksplisit menyediakan izin Microsoft Graph. Pengguna Microsoft Entra masih dapat dibuat tanpa izin Microsoft Graph yang diperlukan dengan menggunakan sintaks CREATE USER T-SQL. Ini akan memerlukan sintaks SID dan TYPE, seperti yang dijelaskan dalam artikel, CREATE USER.

CREATE USER
    {
    Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH <limited_options_list> [ ,... ] ]
    | Microsoft_Entra_principal WITH <options_list> [ ,... ]
    }
 [ ; ]

<limited_options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | OBJECT_ID = 'objectid'
<options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | SID = sid
    | TYPE = { X | E }

Sintaks di atas memungkinkan pembuatan pengguna Microsoft Entra tanpa validasi. Agar ini berfungsi, Anda harus menyediakan Object Id dari prinsipal Microsoft Entra dan menggunakannya sebagai SID dalam pernyataan T-SQL, seperti yang dijelaskan dalam Buat pengguna database mandiri dari prinsipal Microsoft Entra tanpa validasi.

Pemeriksaan validitas Id Objek adalah tanggung jawab pengguna yang menjalankan pernyataan T-SQL.

Memberikan izin

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

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

Skrip memberikan izin User.Read.All, 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 "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 umi, buka portal Azure. Di sumber daya Microsoft Entra ID, buka Aplikasi perusahaan. Pilih Semua Aplikasi untuk Jenis aplikasi, dan cari UMI yang Anda buat.

Screenshot pengaturan aplikasi perusahaan di portal Azure.

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

Cuplikan layar izin identitas terkelola yang ditetapkan pengguna.

Mendapatkan atau mengatur identitas terkelola untuk server logis atau instans terkelola SQL

Untuk membuat server atau instans dengan menggunakan UMI, lihat panduan berikut:

Mengatur SMI

Untuk mengatur identitas terkelola sistem untuk server logis Azure SQL Database di portal Azure, ikuti langkah-langkah berikut:

  1. Buka sumber daya server SQL atau instans terkelola SQL Anda.

  2. Di bawah Keamanan, pilih Identitas.

  3. Di bawah Identitas terkelola yang ditetapkan sistem, atur Status ke Aktif:

    Screenshot panel identitas untuk server logis di portal Azure.

  4. Pilih Simpan untuk menyimpan perubahan Anda.

Untuk mengatur identitas terkelola sistem untuk Azure SQL Managed Instance di portal Azure, ikuti langkah-langkah berikut:

  1. Buka sumber daya instans terkelola SQL Anda.

  2. Di bawah Keamanan, pilih Identitas.

  3. Di bawah Identitas terkelola yang ditetapkan sistem, atur Status ke Aktif.

    Screenshot panel identitas untuk instans terkelola SQL di portal Azure.

  4. Pilih Simpan untuk menyimpan perubahan Anda.

Dapatkan SMI

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

Screenshot halaman portal Azure untuk server logis Azure SQL Database. Di menu Properti, Identitas Terkelola yang Ditetapkan Sistem disorot.

  • Untuk mengambil UMI untuk Azure SQL Managed Instance atau Azure SQL Database, gunakan contoh PowerShell atau Azure CLI nanti di artikel ini.
  • Untuk mengambil SMI untuk Azure SQL Managed Instance, gunakan contoh PowerShell atau Azure CLI nanti di artikel ini.

Mengatur identitas terkelola pengguna 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 .

 Cuplikan layar portal Azure memilih identitas terkelola yang ditetapkan pengguna saat mengonfigurasi identitas server yang ada.

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.

Azure SQL Database identitas terkelola 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 oleh 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 oleh sistem pada server logika 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 .

Azure SQL Managed Instance identitas terkelola menggunakan Azure CLI

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

  • Untuk memperoleh identitas terkelola yang diberikan oleh sistem dan 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 dari suatu 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. PowerShell versi latest disarankan, atau gunakan Azure Cloud Shell di portal Azure.

Azure SQL Database identitas terkelola 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 memperoleh UMI dari server logis, cari principalId untuk masing-masing:

      $MI = Get-AzSqlServer -ResourceGroupName "resourcegroupnamehere" -Name "sql-logical-server-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json
      
    • Untuk mendapatkan SMI dari 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 UMIs dari 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 dari suatu 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 ditetapkan pengguna 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 di Buat server logis dengan menggunakan identitas terkelola yang ditetapkan pengguna atau Buat instans terkelola dengan menggunakan identitas terkelola yang ditetapkan pengguna. Jalankan ulang perintah provisi dalam panduan dengan properti identitas terkelola yang ditetapkan pengguna 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 managed instance, halaman admin Microsoft Entra untuk managed instance Anda di portal Azure menampilkan 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 diskussikan sebelumnya dalam artikel ini, Anda dapat mengabaikan peringatan ini.
  • Jika Anda menggunakan SMI atau UMI sebagai server atau identitas instans, menghapus identitas membuat server atau instans tidak dapat mengakses Microsoft Graph. Microsoft Entra autentikasi dan fungsi lainnya 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.