Konfigurasikan dan kelola autentikasi Microsoft Entra dengan Azure Synapse Analytics

Artikel ini menunjukkan cara menggunakan Microsoft Entra ID untuk autentikasi dengan Azure Synapse Analytics.

Catatan

Prinsipal server Microsoft Entra saat ini sedang dalam pratinjau untuk Azure Synapse Analytics.

Prerequisites

Untuk menggunakan autentikasi Microsoft Entra dengan Azure Synapse Analytics, Anda memerlukan prasyarat berikut:

  • Instansi Microsoft Entra yang terisi pengguna dan grup.
  • Workspace Azure Synapse yang sudah ada atau pool SQL khusus yang berdiri sendiri.

Buat dan isi tenant Microsoft Entra

Sebelum Anda dapat mengonfigurasi autentikasi Microsoft Entra untuk Azure Synapse Analytics, Anda perlu membuat tenant Microsoft Entra dan mengisinya dengan pengguna serta grup. Anda dapat mengelola tenant Microsoft Entra sepenuhnya di dalam Azure atau menggunakannya untuk federasi Active Directory Domain Services lokal.

Untuk informasi selengkapnya, lihat:

Menetapkan admin Microsoft Entra

Untuk menggunakan autentikasi Microsoft Entra, sumber daya Azure Synapse Anda memerlukan administrator Microsoft Entra.

Anda juga dapat mengonfigurasi administrator Microsoft Entra saat membuat sumber daya. Jika administrator sudah dikonfigurasi, lewati bagian ini.

Ruang kerja Azure Synapse

Untuk ruang kerja Azure Synapse, konfigurasikan administrator Microsoft Entra di ruang kerja tersebut. Untuk informasi lebih lanjut, lihat Struktur Administrator.

pool SQL dedikasi mandiri

Saat Anda mengatur administrator Microsoft Entra, Anda mengaktifkan autentikasi Microsoft Entra untuk server logis yang menjadi host pool SQL khusus mandiri. Anda dapat mengatur administrator menggunakan portal Azure, PowerShell, Azure CLI, atau REST API.

Di portal Azure, Anda dapat menemukan nama server logis

  • Di kolom server name pada halaman Overview dari kumpulan SQL khusus mandiri Anda di Azure Synapse Analytics.

Untuk mengatur admin Microsoft Entra untuk server logis Anda di portal Microsoft Azure, ikuti langkah-langkah berikut:

  1. Di panel Azure portal Directories + subscriptions, pilih direktori yang berisi sumber daya Azure Synapse Anda sebagai Current directory.

  2. Cari server SQL lalu pilih server logis untuk pool SQL khusus Anda untuk membuka panel server SQL .

  3. Pada panel server SQL untuk server logis Anda, pilih Microsoft Entra ID di bawah Settings untuk membuka panel Microsoft Entra ID.

  4. Pada panel Microsoft Entra ID, pilih Set admin untuk membuka panel Microsoft Entra ID.

  5. Panel Microsoft Entra ID memperlihatkan semua pengguna, grup, dan aplikasi di direktori Anda saat ini dan memungkinkan Anda mencari berdasarkan nama, alias, atau ID. Temukan identitas yang Anda inginkan untuk admin Microsoft Entra Anda dan pilih identitas tersebut, lalu pilih Pilih untuk menutup panel.

  6. Di bagian atas halaman Microsoft Entra ID untuk server logis Anda, pilih Simpan.

    ID Object ditampilkan di samping nama admin untuk pengguna dan grup Microsoft Entra. Untuk aplikasi (perwakilan layanan), ID Aplikasi ditampilkan.

Proses mengubah administrator mungkin memakan waktu beberapa menit. Kemudian administrator baru muncul di bidang admin Microsoft Entra.

Untuk menghapus admin, di bagian atas halaman Microsoft Entra ID, pilih Pindahkan admin, lalu pilih Simpan. Menghapus admin Microsoft Entra menonaktifkan autentikasi Microsoft Entra untuk server logis Anda.

Catatan

Administrator Microsoft Entra disimpan dalam basis data master server sebagai pengguna (identitas utama basis data). Karena nama utama database harus unik, nama tampilan admin tidak boleh sama dengan nama pengguna mana pun di database server master . Jika seorang pengguna dengan nama tersebut sudah ada, konfigurasi admin Microsoft Entra akan gagal dan dibatalkan, menunjukkan bahwa nama tersebut sudah digunakan.

Menetapkan izin Microsoft Graph

Untuk beberapa operasi, Azure Synapse Analytics memerlukan izin untuk melakukan query ke Microsoft Graph, seperti dijelaskan dalam izin Microsoft Graph. Azure Synapse Analytics mendukung izin Microsoft Graph API yang rinci seperti User.Read.All, GroupMember.Read.All, dan Application.Read.All pada identitas sumber daya. Pendekatan ini mengikuti prinsip hak istimewa paling sedikit dan direkomendasikan. Anda juga dapat menggunakan peran Pembaca Direktori sebagai alternatif yang lebih luas. Untuk informasi lebih lanjut, lihat Managed identities in Microsoft Entra for Azure Synapse Analytics.

Peran Pembaca Direktori

Untuk prosedur terpandu, lihat Tetapkan peran Directory Readers ke grup Microsoft Entra.

Skrip PowerShell berikut menambahkan identitas sumber daya Azure Synapse ke peran Directory Readers.

# This script grants "Directory Readers" permission to an Azure Synapse service principal.
# It can be executed only by a user who is a member of the **Privileged Roles Administrator** role.

Import-Module Microsoft.Graph.Authentication
$instanceName = "<InstanceName>"        # Enter the name of your managed instance or server
$tenantId = "<TenantId>"                       # Enter your tenant ID

Connect-MgGraph -TenantId $tenantId -Scopes "RoleManagement.ReadWrite.Directory"

# Get Microsoft Entra "Directory Readers" role and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-MgDirectoryRoleTemplate -Filter "DisplayName eq '$roleName'"
    New-MgDirectoryRoleTemplate -RoleTemplateId $roleTemplate.Id
    $role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
}

# Get service principal for your logical server
$roleMember = Get-MgServicePrincipal -Filter "DisplayName eq '$instanceName'"
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No service principal with name '$($instanceName)' found, make sure that instanceName parameter was entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: Multiple service principals with name '$($instanceName)'"
    Write-Output $roleMember | Format-List DisplayName, Id, AppId
    exit
}

# Check if service principal is already member of Directory Readers role
$isDirReader = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -Filter "Id eq '$($roleMember.Id)'"
if ($isDirReader -eq $null) {
    # Add principal to Directory Readers role
    Write-Output "Adding service principal '$($instanceName)' to 'Directory Readers' role..."
    $body = @{
        "@odata.id"= "https://graph.microsoft.com/v1.0/directoryObjects/{$($roleMember.Id)}"
    }
    New-MgDirectoryRoleMemberByRef -DirectoryRoleId $role.Id -BodyParameter $body
    Write-Output "'$($instanceName)' service principal added to 'Directory Readers' role."
} else {
    Write-Output "Service principal '$($instanceName)' is already member of 'Directory Readers' role."
}

Administrator Microsoft Entra sekarang dapat membuat Microsoft Entra server principal (login) dan database principal (pengguna).

Membuat prinsipal Microsoft Entra di SQL

Untuk terhubung ke database di Azure Synapse Analytics dengan autentikasi Microsoft Entra, Anda perlu mengonfigurasi principal di database untuk identitas tersebut dengan setidaknya izin CONNECT CONNECT.

Izin pengguna database

Saat Anda membuat pengguna basis data, pengguna tersebut secara default menerima CONNECT izin ke basis data tersebut. Pengguna database juga mewarisi izin dalam dua keadaan:

  • Pengguna adalah anggota grup Microsoft Entra yang juga diberikan izin pada server.
  • Anda membuat pengguna dari sebuah login, dan pengguna mewarisi izin login yang diberikan server untuk database tersebut.

Mengelola izin untuk server dan entitas database mengikuti cara yang sama terlepas dari jenis entitas (ID Microsoft Entra, autentikasi SQL, dll.). Berikan izin pada peran basis data daripada langsung memberikan izin kepada pengguna. Kemudian tambahkan pengguna ke peran dengan izin yang sesuai. Pendekatan ini menyederhanakan pengelolaan izin jangka panjang dan mengurangi kemungkinan identitas mempertahankan akses saat akses tersebut tidak lagi semestinya.

Untuk informasi selengkapnya, lihat:

Pengguna database terbatas

Pengguna database tertutup adalah jenis pengguna SQL yang tidak terhubung ke login di master database. Untuk membuat pengguna database mandiri Microsoft Entra, hubungkan ke database dengan identitas Microsoft Entra yang memiliki setidaknya izin ALTER ANY USER. Contoh T-SQL berikut membuat principal database bernama Microsoft_Entra_principal_name dari Microsoft Entra ID.

CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;

Untuk membuat pengguna database terpisah untuk grup Microsoft Entra, masukkan nama tampilan grup:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

Untuk membuat pengguna database mandiri untuk identitas terkelola atau perwakilan layanan, masukkan nama tampilan identitas:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

Untuk membuat pengguna database terkurung untuk pengguna Microsoft Entra, masukkan nama utama pengguna dari identitas:

CREATE USER [adrian@contoso.com] FROM EXTERNAL PROVIDER;

Pengguna berbasis login

Catatan

Microsoft Entra server principal (login) saat ini sedang dalam pratinjau untuk Azure Synapse Analytics.

Prinsipal server Microsoft Entra (atau login) didukung, yang berarti pengguna database terkontener tidak diperlukan. Prinsipal database (pengguna) dapat dibuat berdasarkan prinsipal server, yang berarti pengguna Microsoft Entra dapat mewarisi izin masuk tingkat server yang ditetapkan.

CREATE USER [appName] FROM LOGIN [appName];

Untuk sintaksis tentang membuat prinsipal server Microsoft Entra (login), lihat CREATE LOGIN.

Pengguna eksternal

Anda tidak dapat langsung membuat pengguna database untuk identitas yang dikelola di tenant Microsoft Entra yang berbeda dari yang terkait dengan langganan Azure Anda. Namun, Anda dapat mengimpor pengguna dari direktori lain ke direktori terkait sebagai pengguna eksternal. Anda kemudian dapat menggunakannya untuk membuat pengguna database mandiri yang dapat mengakses database. Pengguna eksternal juga dapat memperoleh akses melalui keanggotaan di grup Microsoft Entra.

Examples: Untuk membuat pengguna database terkontain yang mewakili pengguna domain terfederasi atau terkelola Microsoft Entra:

CREATE USER [alice@fabrikam.com] FROM EXTERNAL PROVIDER;
  • Akun pengguna domain federasi yang Anda impor ke domain terkelola sebagai pengguna eksternal harus menggunakan identitas domain terkelola.

Pertimbangan nama

Anda tidak bisa menggunakan karakter khusus seperti titik dua : atau ampersand & dalam nama pengguna dalam pernyataan T-SQL CREATE LOGIN dan CREATE USER.

Microsoft Entra ID dan Azure Synapse Analytics berbeda dalam desain manajemen pengguna mereka dalam satu hal utama: Microsoft Entra ID mengizinkan nama tampilan duplikat dalam tenant, sedangkan Azure Synapse Analytics membutuhkan nama server principal unik dalam pool SQL khusus dan nama principal database unik dalam database.

Izin Microsoft Graph

Perintah CREATE USER ... FROM EXTERNAL PROVIDER ini memerlukan Azure Synapse Analytics untuk mengakses Microsoft Entra ID (penyedia eksternal) atas nama pengguna yang masuk. Kadang-kadang, Microsoft Entra ID mengembalikan exception.

  • Anda mungkin mengalami kesalahan SQL 33134, yang berisi pesan kesalahan khusus ID Microsoft Entra. Kesalahan biasanya mengatakan bahwa akses ditolak, bahwa pengguna harus mendaftar di MFA untuk mengakses sumber daya, atau bahwa akses antara aplikasi pihak pertama harus ditangani melalui praautorisasi. Dalam dua kasus pertama, masalah biasanya disebabkan oleh kebijakan Akses Bersyarat yang diatur dalam penyewa Microsoft Entra milik pengguna, yang mencegah pengguna mengakses penyedia eksternal. Memperbarui kebijakan Akses Bersyarat untuk mengizinkan akses ke aplikasi 00000003-0000-0000-c000-000000000000 (ID aplikasi Microsoft Graph API) seharusnya menyelesaikan masalah. Jika kesalahan mengatakan akses antara aplikasi pihak pertama harus ditangani melalui praautorisasi, masalahnya adalah karena pengguna masuk sebagai perwakilan layanan. Perintah harus berhasil jika dijalankan oleh pengguna sebagai gantinya.
  • Jika Anda menerima Kedaluwarsa Batas Waktu Koneksi, Anda mungkin perlu mengatur parameter TransparentNetworkIPResolution dari string koneksi ke false. Untuk informasi selengkapnya, lihat Masalah batas waktu koneksi dengan .NET Framework 4.6.1 - TransparentNetworkIPResolution.

Untuk informasi selengkapnya tentang membuat pengguna database mandiri berdasarkan identitas Microsoft Entra, lihat MEMBUAT PENGGUNA.

Konfigurasikan autentikasi multifaktor

Untuk meningkatkan keamanan, pertimbangkan konfigurasi autentikasi multifaktor (MFA), yang meminta pengguna menggunakan metode kedua untuk autentikasi ke database, seperti panggilan telepon atau aplikasi autentikasi.

Untuk menggunakan otentikasi multifaktor dengan Azure Synapse Analytics, pertama-tama aktifkan autentikasi multifaktor, lalu gunakan kebijakan Akses Kondisional untuk menegakkan MFA.

Terhubung ke Microsoft Entra

Setelah autentikasi Microsoft Entra dikonfigurasi, Anda dapat menggunakannya untuk terhubung ke Azure Synapse Analytics dengan SQL Server Management Studio atau SQL Server Data Tools, serta mengonfigurasi aplikasi klien untuk terhubung menggunakan identitas Microsoft Entra.

Memecahkan masalah autentikasi Microsoft Entra

Untuk panduan, lihat Memecahkan masalah terkait autentikasi Microsoft Entra.