Identitas terkelola untuk Azure Synapse Analytics

Artikel ini membantu Anda untuk memahami identitas terkelola (sebelumnya dikenal sebagai Identitas Layanan Terkelola/MSI) dan cara kerjanya di Azure Synapse Analytics.

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Gambaran Umum

Identitas terkelola menghilangkan kebutuhan untuk mengelola info masuk. Identitas terkelola memberikan identitas untuk instans layanan saat menyambungkan ke sumber daya yang mendukung autentikasi Microsoft Entra. Misalnya, layanan dapat menggunakan identitas terkelola untuk mengakses sumber daya seperti Azure Key Vault, tempat admin data dapat menyimpan info masuk atau mengakses akun penyimpanan dengan aman. Layanan ini menggunakan identitas terkelola untuk mendapatkan token Microsoft Entra.

Ada dua jenis identitas terkelola yang didukung:

  • Ditetapkan sistem: Anda dapat mengaktifkan identitas terkelola secara langsung pada instans layanan. Saat Anda mengizinkan identitas terkelola yang ditetapkan sistem selama pembuatan layanan, identitas dibuat di Microsoft Entra terikat dengan siklus hidup instans layanan tersebut. Secara desain, hanya sumber daya Azure yang dapat menggunakan identitas ini untuk meminta token dari Microsoft Entra ID. Jadi, ketika sumber daya dihapus, Azure secara otomatis menghapus identitas untuk Anda. Azure Synapse Analytics mengharuskan identitas terkelola yang ditetapkan sistem harus dibuat bersama dengan ruang kerja Synapse.
  • Ditetapkan pengguna: Anda juga dapat membuat identitas terkelola sebagai sumber daya Azure mandiri. Anda dapat membuat identitas terkelola yang ditetapkan pengguna dan menetapkannya ke satu atau beberapa instans ruang kerja Azure Synapse Analytics. Pada identitas terkelola yang ditetapkan pengguna, identitas dikelola secara terpisah dari sumber daya yang menggunakannya.

Identitas terkelola memberikan keuntungan di bawah ini:

  • Simpan kredensial di Azure Key Vault, tempat identitas terkelola kasus digunakan untuk autentikasi Azure Key Vault.
  • Akses penyimpanan data atau komputasi menggunakan autentikasi identitas terkelola, termasuk penyimpanan Azure Blob, Azure Data Explorer, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, REST, aktivitas Databricks, aktivitas Web, dan banyak lagi. Periksa artikel konektor dan aktivitas untuk detailnya.
  • Identitas terkelola juga digunakan untuk mengenkripsi/mendekripsi data dan metadata menggunakan kunci yang dikelola pelanggan yang disimpan di Azure Key Vault, yang menyediakan enkripsi ganda.

Identitas terkelola yang ditetapkan sistem

Catatan

Identitas terkelola yang ditetapkan sistem juga disebut sebagai 'Identitas terkelola' di tempat lainnya dalam dokumentasi serta di Data Factory Studio untuk tujuan kompatibilitas mundur. Kami akan secara eksplisit menyebutkan 'Identitas terkelola yang ditetapkan pengguna' ketika merujuknya.

Hasilkan identitas terkelola yang ditetapkan sistem

Identitas terkelola yang ditetapkan sistem dibuat sebagai berikut:

  • Saat membuat pabrik data atau ruang kerja Synapse melalui portal Microsoft Azure ataupun PowerShell, identitas terkelola akan selalu dibuat secara otomatis.
  • Saat membuat ruang kerja melalui SDK, identitas terkelola akan dibuat hanya apabila Anda menentukan Identity = FactoryIdentity" baru di objek ruang kerja Azure Synapse Analytics untuk dibuat." Lihat contoh di .NET Quickstart - Buat pabrik data.
  • Saat membuat pabrik data atau ruang kerja Synapse melalui REST API, identitas terkelola hanya akan dibuat apabila Anda menentukan bagian "identitas" di isi permintaan. Lihat contoh di .REST quickstart - buat pabrik data.

Jika menemukan instans layanan Anda tidak memiliki identitas terkelola yang terkait dengan instruksi ambil identitas terkelola berikut, Anda dapat membuatnya secara eksplisit dengan memperbaruinya dengan inisiator identitas secara terprogram:

Catatan

  • Identitas terkelola tidak bisa diubah. Memperbarui instans layanan yang sudah memiliki identitas terkelola tidak akan berdampak apa pun, dan identitas terkelola tetap tidak berubah.
  • Jika Anda memperbarui instans layanan yang sudah memiliki identitas terkelola tanpa menentukan parameter "identitas" di objek pabrik atau ruang kerja atau tanpa menentukan bagian "identitas" di isi permintaan REST, Anda akan mendapatkan kesalahan.
  • Saat Anda menghapus instans layanan, identitas terkelola terkait akan dihapus bersamaan.

Buat identitas terkelola yang ditetapkan sistem menggunakan PowerShell

Panggil perintah New-AzSynapseWorkspace, lalu Anda melihat bidang "Identitas" baru dibuat:

PS C:\> $creds = New-Object System.Management.Automation.PSCredential ("ContosoUser", $password)
PS C:\> New-AzSynapseWorkspace -ResourceGroupName <resourceGroupName> -Name <workspaceName> -Location <region> -DefaultDataLakeStorageAccountName <storageAccountName> -DefaultDataLakeStorageFileSystem <fileSystemName> -SqlAdministratorLoginCredential $creds

DefaultDataLakeStorage           : Microsoft.Azure.Commands.Synapse.Models.PSDataLakeStorageAccountDetails
ProvisioningState                : Succeeded
SqlAdministratorLogin            : ContosoUser
VirtualNetworkProfile            :
Identity                         : Microsoft.Azure.Commands.Synapse.Models.PSManagedIdentity
ManagedVirtualNetwork            :
PrivateEndpointConnections       : {}
WorkspaceUID                     : <workspaceUid>
ExtraProperties                  : {[WorkspaceType, Normal], [IsScopeEnabled, False]}
ManagedVirtualNetworkSettings    :
Encryption                       : Microsoft.Azure.Commands.Synapse.Models.PSEncryptionDetails
WorkspaceRepositoryConfiguration :
Tags                             :
TagsTable                        :
Location                         : <region>
Id                               : /subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/
                                   Microsoft.Synapse/workspaces/<workspaceName>
Name                             : <workspaceName>
Type                             : Microsoft.Synapse/workspaces

Buat identitas terkelola yang ditetapkan sistem menggunakan REST API

Catatan

Jika Anda mencoba memperbarui instans layanan yang sudah memiliki identitas terkelola tanpa menentukan parameter identitas di objek ruang kerja atau memberikan bagian identitas di isi permintaan REST, Anda akan mendapatkan kesalahan.

Panggil API di bawah ini dengan bagian "identitas" di isi permintaan:

PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}?api-version=2018-06-01

Isi permintaan: tambahkan "identitas": { "jenis": "SystemAssigned" }.

{
    "name": "<workspaceName>",
    "location": "<region>",
    "properties": {},
    "identity": {
        "type": "SystemAssigned"
    }
}

Respons: identitas terkelola dibuat secara otomatis, dan bagian "identitas" diisi sesuai.

{
    "name": "<workspaceName>",
    "tags": {},
    "properties": {
        "provisioningState": "Succeeded",
        "loggingStorageAccountKey": "**********",
        "createTime": "2021-09-26T04:10:01.1135678Z",
        "version": "2018-06-01"
    },
    "identity": {
        "type": "SystemAssigned",
        "principalId": "765ad4ab-XXXX-XXXX-XXXX-51ed985819dc",
        "tenantId": "72f988bf-XXXX-XXXX-XXXX-2d7cd011db47"
    },
    "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Synapse/workspaces/<workspaceName>",
    "type": "Microsoft.Synapse/workspaces",
    "location": "<region>"
}

Buat identitas terkelola yang ditetapkan sistem menggunakan templat Azure Resource Manager

Templat: tambahkan "identitas": { "jenis": "SystemAssigned" }.

{
    "contentVersion": "1.0.0.0",
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "resources": [{
        "name": "<workspaceName>",
        "apiVersion": "2018-06-01",
        "type": "Microsoft.Synapse/workspaces",
        "location": "<region>",
        "identity": {
            "type": "SystemAssigned"
        }
    }]
}

Buat identitas terkelola yang ditetapkan sistem menggunakan SDK

Workspace workspace = new Workspace
{
    Identity = new ManagedIdentity
    {
        Type = ResourceIdentityType.SystemAssigned
    },
    DefaultDataLakeStorage = new DataLakeStorageAccountDetails
    {
        AccountUrl = <defaultDataLakeStorageAccountUrl>,
        Filesystem = <DefaultDataLakeStorageFilesystem>
    },
    SqlAdministratorLogin = <SqlAdministratorLoginCredentialUserName>
    SqlAdministratorLoginPassword = <SqlAdministratorLoginCredentialPassword>,
    Location = <region>
};
client.Workspaces.CreateOrUpdate(resourceGroupName, workspaceName, workspace);

Mengambil identitas terkelola yang ditetapkan sistem

Anda dapat mengambil identitas terkelola dari portal Microsoft Azure atau secara terprogram. Bagian berikut ini memperlihatkan beberapa sampel.

Tip

Jika Anda tidak melihat identitas terkelola, buat identitas terkelola dengan memperbarui instans layanan.

Mengambil identitas terkelola yang ditetapkan sistem di portal Microsoft Azure

Anda dapat menemukan informasi identitas terkelola dari portal Microsoft Azure -> ruang kerja Azure Synapse Anda -> Properti.

Shows the Azure portal with the system-managed identity object ID for a Synapse workspace.

  • ID objek identitas terkelola

Informasi identitas terkelola juga akan muncul saat Anda membuat layanan tertaut, yang mendukung autentikasi identitas terkelola, seperti Azure Blob, Azure Data Lake Storage, Azure Key Vault, dll.

Untuk memberikan izin, ikuti langkah berikut ini. Untuk langkah-langkah mendetail, lihat Menetapkan peran Azure menggunakan portal Azure.

  1. Pilih Kontrol Akses (IAM) .

  2. Pilih Tambahkan Tambahkan>penetapan peran.

    Screenshot that shows Access control (IAM) page with Add role assignment menu open.

  3. Pada tab Anggota, pilih Identitas terkelola, kemudian pilih Pilih anggota.

  4. Pilih langganan Azure Anda.

  5. Di bawah Identitas terkelola yang ditetapkan sistem, harap pilih ruang kerja Azure Synapse, dan kemudian pilih ruang kerja. Anda juga bisa menggunakan ID objek ataupun nama ruang kerja (sebagai nama identitas terkelola) untuk menemukan identitas ini. Untuk mendapatkan ID aplikasi identitas terkelola, silakan gunakan PowerShell.

  6. Di tab Tinjau + tetapkan, pilih Tinjau + tetapkan untuk menetapkan peran.

Ambil identitas terkelola yang ditetapkan sistem menggunakan PowerShell

ID utama identitas terkelola dan ID penyewa akan ditampilkan ketika Anda mendapatkan instans layanan tertentu sebagai berikut. Gunakan PrincipalId untuk memberikan akses:

PS C:\> (Get-AzSynapseWorkspace -ResourceGroupName <resourceGroupName> -Name <workspaceName>).Identity

IdentityType   PrincipalId                          TenantId                            
------------   -----------                          --------                            
SystemAssigned cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05 72f988bf-XXXX-XXXX-XXXX-2d7cd011db47

Anda bisa mendapatkan ID aplikasi dengan menyalin ID utama di atas, lalu menjalankan perintah ID Microsoft Entra di bawah ini dengan ID utama sebagai parameter.

PS C:\> Get-AzADServicePrincipal -ObjectId cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05

ServicePrincipalNames : {76f668b3-XXXX-XXXX-XXXX-1b3348c75e02, https://identity.azure.net/P86P8g6nt1QxfPJx22om8MOooMf/Ag0Qf/nnREppHkU=}
ApplicationId         : 76f668b3-XXXX-XXXX-XXXX-1b3348c75e02
DisplayName           : <workspaceName>
Id                    : cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05
Type                  : ServicePrincipal

Ambil identitas terkelola menggunakan REST API

ID utama identitas terkelola dan ID penyewa akan ditampilkan ketika Anda mendapatkan instans layanan tertentu sebagai berikut.

Hubungi API di bawah ini dalam permintaan:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}?api-version=2018-06-01

Respons: Anda akan mendapatkan respons seperti yang ditunjukkan dalam contoh di bawah ini. Bagian "identitas" diisi sesuai.

{
  "properties": {
    "defaultDataLakeStorage": {
      "accountUrl": "https://exampledatalakeaccount.dfs.core.windows.net",
      "filesystem": "examplefilesystem"
    },
    "encryption": {
      "doubleEncryptionEnabled": false
    },
    "provisioningState": "Succeeded",
    "connectivityEndpoints": {
      "web": "https://web.azuresynapse.net?workspace=%2fsubscriptions%2{subscriptionId}%2fresourceGroups%2f{resourceGroupName}%2fproviders%2fMicrosoft.Synapse%2fworkspaces%2f{workspaceName}",
      "dev": "https://{workspaceName}.dev.azuresynapse.net",
      "sqlOnDemand": "{workspaceName}-ondemand.sql.azuresynapse.net",
      "sql": "{workspaceName}.sql.azuresynapse.net"
    },
    "managedResourceGroupName": "synapseworkspace-managedrg-f77f7cf2-XXXX-XXXX-XXXX-c4cb7ac3cf4f",
    "sqlAdministratorLogin": "sqladminuser",
    "privateEndpointConnections": [],
    "workspaceUID": "e56f5773-XXXX-XXXX-XXXX-a0dc107af9ea",
    "extraProperties": {
      "WorkspaceType": "Normal",
      "IsScopeEnabled": false
    },
    "publicNetworkAccess": "Enabled",
    "cspWorkspaceAdminProperties": {
      "initialWorkspaceAdminObjectId": "3746a407-XXXX-XXXX-XXXX-842b6cf1fbcc"
    },
    "trustedServiceBypassEnabled": false
  },
  "type": "Microsoft.Synapse/workspaces",
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}",
  "location": "eastus",
  "name": "{workspaceName}",
  "identity": {
    "type": "SystemAssigned",
    "tenantId": "72f988bf-XXXX-XXXX-XXXX-2d7cd011db47",
    "principalId": "cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05"
  },
  "tags": {}
}

Tip

Untuk mengambil identitas terkelola dari templat ARM, tambahkan bagian output di ARM JSON:

{
    "outputs":{
        "managedIdentityObjectId":{
            "type":"string",
            "value":"[reference(resourceId('Microsoft.Synapse/workspaces', parameters('<workspaceName>')), '2018-06-01', 'Full').identity.principalId]"
        }
    }
}

Menjalankan Azure Synapse Spark Notebooks dengan identitas terkelola yang ditetapkan sistem

Anda dapat menjalankan Synapse Spark Notebooks dengan identitas terkelola yang ditetapkan sistem (atau identitas terkelola ruang kerja) dengan cara mengaktifkan Jalankan sebagai identitas terkelola dari menu Konfigurasikan sesi. Untuk menjalankan Spark Notebooks dengan identitas terkelola ruang kerja, pengguna perlu memiliki peran RBAC berikut:

  • Operator Komputasi Synapse pada ruang kerja atau pool Spark yang dipilih
  • Pengguna Kredensial Synapse pada identitas terkelola ruang kerja

synapse-run-as-msi-1

synapse-run-as-msi-2

synapse-run-as-msi-3

Catatan

Notebook Synapse dan definisi pekerjaan Spark hanya mendukung penggunaan identitas terkelola yang ditetapkan sistem melalui layanan tertaut dan API mssparkutils. MSAL dan pustaka autentikasi lainnya tidak dapat menggunakan identitas terkelola yang ditetapkan sistem. Anda dapat menghasilkan perwakilan layanan dan menyimpan kredensial di Key Vault.

Identitas terkelola yang ditetapkan pengguna

Anda dapat membuat, menghapus, mengelola identitas terkelola yang ditetapkan pengguna di ID Microsoft Entra. Untuk detail selengkapnya, lihat Membuat, mencantumkan, menghapus, atau menetapkan peran ke identitas terkelola yang ditetapkan pengguna menggunakan portal Microsoft Azure.

Untuk menggunakan identitas terkelola yang ditetapkan pengguna, Anda harus terlebih dahulu membuat info masuk di instans layanan untuk UAMI.

Catatan

Identitas Terkelola yang ditetapkan pengguna saat ini tidak didukung di notebook Synapse dan definisi kerja Spark.

Langkah berikutnya

Lihat topik berikut yang memperkenalkan kapan dan cara menggunakan identitas terkelola:

Lihat Identitas Terkelola untuk Gambaran Umum Sumber Daya Azure untuk memperoleh latar belakang selengkapnya mengenai identitas terkelola untuk sumber daya Azure, yang menjadi dasar identitas terkelola di Azure Synapse Analytics.