Udostępnij przez


Tożsamości zarządzane dla usługi Azure Synapse Analytics

Ten artykuł pomaga zrozumieć tożsamość zarządzaną (wcześniej znaną jako tożsamość usługi zarządzanej/MSI) i sposób jej działania w usłudze Azure Synapse.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Omówienie

Tożsamości zarządzane eliminują potrzebę zarządzania poświadczeniami. Tożsamości zarządzane zapewniają tożsamość dla instancji usługi podczas łączenia się z zasobami obsługującymi uwierzytelnianie Microsoft Entra. Na przykład usługa może używać tożsamości zarządzanej do uzyskiwania dostępu do zasobów, takich jak Azure Key Vault, gdzie administratorzy danych mogą bezpiecznie przechowywać poświadczenia lub uzyskiwać dostęp do kont magazynu. Usługa używa tożsamości zarządzanej do uzyskiwania tokenów usługi Microsoft Entra.

Istnieją dwa typy obsługiwanych tożsamości zarządzanych:

  • Przypisane przez system: Można włączyć tożsamość zarządzaną bezpośrednio w wystąpieniu usługi. Kiedy zezwalasz na użycie tożsamości zarządzanej nadanej przez system podczas tworzenia usługi, w usłudze Microsoft Entra zostaje utworzona tożsamość, która jest powiązana z cyklem życia tego wystąpienia usługi. Zgodnie z projektem tylko ten zasób platformy Azure może używać tej tożsamości do żądania tokenów z usługi Microsoft Entra ID. Dlatego po usunięciu zasobu platforma Azure automatycznie usuwa tożsamość za Ciebie. Azure Synapse Analytics wymaga, aby tożsamość zarządzana przypisana przez system była tworzona razem z obszarem roboczym Synapse.
  • Przypisane przez użytkownika: możesz również utworzyć tożsamość zarządzaną jako autonomiczny zasób platformy Azure. Możesz utworzyć zarządzaną tożsamość przypisaną przez użytkownika i przypisać ją do jednego lub więcej wystąpień obszaru roboczego usługi Synapse. W tożsamościach zarządzanych przypisanych przez użytkownika tożsamość jest zarządzana oddzielnie od zasobów, które z niej korzystają.

Tożsamość zarządzana zapewnia następujące korzyści:

  • Przechowywanie poświadczeń w usłudze Azure Key Vault, gdzie tożsamość zarządzana jest używana do uwierzytelniania w usłudze Azure Key Vault.
  • Uzyskiwanie dostępu do magazynów danych lub obliczeń z wykorzystaniem uwierzytelniania tożsamości zarządzanej, w tym także usług Azure Blob Storage, Azure Data Explorer, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, REST, działania usługi Databricks, działania sieciowego i nie tylko. Aby uzyskać szczegółowe informacje, zapoznaj się z artykułami dotyczącymi łącznika i działań.
  • Tożsamość zarządzana jest również używana do szyfrowania/odszyfrowywania danych i metadanych przy użyciu klucza zarządzanego przez klienta przechowywanego w usłudze Azure Key Vault, zapewniając podwójne szyfrowanie.

Tożsamość zarządzana przypisana przez system

Uwaga

Tożsamość zarządzana przypisana przez system jest również nazywana „tożsamością zarządzaną” w innych miejscach dokumentacji i w interfejsie użytkownika Synapse Studio na rzecz zgodności wstecznej. Podczas odwoływania się do niej jawnie będziemy wspominać "Tożsamość zarządzana przypisana przez użytkownika".

Uzyskaj tożsamość zarządzaną przypisaną przez system przy użyciu portalu Azure

Informacje o tożsamości zarządzanej można znaleźć w portalu Azure —> obszar roboczy usługi Synapse —> Właściwości.

Zrzut ekranu portalu Azure z identyfikatorem obiektu tożsamości zarządzanej przez system dla obszaru roboczego Synapse.

Informacje o tożsamości zarządzanej będą również wyświetlane podczas tworzenia połączonej usługi, która obsługuje uwierzytelnianie tożsamości zarządzanej, takie jak Azure Blob, Azure Data Lake Storage, Azure Key Vault itp.

Aby udzielić uprawnień, wykonaj następujące kroki. Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

  1. Wybierz pozycję Kontrola dostępu (IAM).

  2. Wybierz pozycję Dodaj>Dodaj przypisanie roli.

    Zrzut ekranu przedstawiający stronę Kontrola dostępu (IAM) z otwartym menu Dodaj przypisanie roli.

  3. Na karcie Członkowie wybierz pozycję Tożsamość zarządzana, a następnie wybierz pozycję Wybierz członków.

  4. Wybierz subskrypcję platformy Azure.

  5. W obszarze Tożsamość zarządzana przypisana przez system wybierz Obszar roboczy Synapse, a następnie wybierz obszar roboczy. Możesz również użyć identyfikatora obiektu lub nazwy obszaru roboczego (jako nazwy tożsamości zarządzanej), aby znaleźć tę tożsamość. Aby uzyskać identyfikator aplikacji tożsamości zarządzanej, użyj programu PowerShell.

  6. Na karcie Przeglądanie i przypisywanie wybierz pozycję Przejrzyj i przypisz, aby przypisać rolę.

Pobieranie tożsamości zarządzanej przypisanej przez system przy użyciu programu PowerShell

Identyfikator jednostki tożsamości zarządzanej i identyfikator dzierżawy zostaną zwrócone po otrzymaniu określonego wystąpienia usługi w następujący sposób. Użyj identyfikatora PrincipalId , aby udzielić dostępu:

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

IdentityType   PrincipalId                          TenantId                            
------------   -----------                          --------                            
SystemAssigned aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb aaaabbbb-0000-cccc-1111-dddd2222eeee

Identyfikator aplikacji można uzyskać, kopiując powyższy identyfikator główny, a następnie uruchamiając poniższe polecenie Microsoft Entra ID z tym identyfikatorem jako parametrem.

PS C:\> Get-AzADServicePrincipal -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb

ServicePrincipalNames : {00001111-aaaa-2222-bbbb-3333cccc4444, https://identity.azure.net/P86P8g6nt1QxfPJx22om8MOooMf/Ag0Qf/nnREppHkU=}
ApplicationId         : 00001111-aaaa-2222-bbbb-3333cccc4444
DisplayName           : <workspaceName>
Id                    : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Type                  : ServicePrincipal

Pobieranie tożsamości zarządzanej przy użyciu interfejsu API REST

Identyfikator jednostki tożsamości zarządzanej i identyfikator dzierżawy zostaną zwrócone po otrzymaniu określonego wystąpienia usługi w następujący sposób.

Wywołaj poniższy interfejs API w ramach żądania.

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

Odpowiedź: otrzymasz odpowiedź, jak pokazano w poniższym przykładzie. Sekcja "tożsamość" zostaje odpowiednio wypełniona.

{
  "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": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
  },
  "tags": {}
}

Napiwek

Aby pobrać tożsamość zarządzaną z szablonu ARM, dodaj sekcję outputs w formacie JSON ARM.

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

Generuj przypisaną przez system tożsamość zarządzaną

Tożsamość zarządzana przypisana przez system jest generowana w następujący sposób:

  • Podczas tworzenia obszaru roboczego usługi Synapse za pośrednictwem witryny Azure Portal lub programu PowerShell tożsamość zarządzana będzie zawsze tworzona automatycznie.
  • Podczas tworzenia obszaru roboczego za pomocą zestawu SDK tożsamość zarządzana zostanie utworzona tylko wtedy, gdy określisz "Identity = new ManagedIdentity" w obiekcie obszaru roboczego usługi Synapse do utworzenia. Zobacz przykład w .NET Quickstart - Create data factory.
  • Podczas tworzenia obszaru roboczego usługi Synapse za pomocą interfejsu API REST tożsamość zarządzana zostanie utworzona tylko wtedy, gdy określisz sekcję "tożsamość" w treści żądania. Zobacz przykład w Szybki start REST — tworzenie fabryki danych.

Jeśli wystąpienie usługi nie ma tożsamości zarządzanej skojarzonej po pobraniu instrukcji tożsamości zarządzanej, możesz je jawnie wygenerować, aktualizując je za pomocą inicjatora tożsamości programowo:

Uwaga

  • Nie można zmodyfikować tożsamości zarządzanej. Aktualizowanie wystąpienia usługi, które ma już tożsamość zarządzaną, nie będzie miało żadnego wpływu, a tożsamość zarządzana pozostaje niezmieniona.
  • Jeśli zaktualizujesz wystąpienie usługi, które ma już tożsamość zarządzaną bez określenia parametru "identity" w fabryce lub obiektach obszaru roboczego lub bez określania sekcji "tożsamość" w treści żądania REST, zostanie wyświetlony błąd.
  • Usunięcie wystąpienia usługi spowoduje usunięcie skojarzonej tożsamości zarządzanej.

Generowanie tożsamości zarządzanej przypisanej przez system przy użyciu programu PowerShell

Wywołaj polecenie New-AzSynapseWorkspace , a następnie zobaczysz nowo wygenerowane pola "Tożsamość":

PS C:\> $password = ConvertTo-SecureString -String "****" -AsPlainText -Force
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

Generowanie tożsamości zarządzanej przypisanej przez system przy użyciu interfejsu API REST

Uwaga

Jeśli spróbujesz zaktualizować wystąpienie usługi, które ma już tożsamość zarządzaną bez określenia parametru tożsamości w obiekcie obszaru roboczego lub udostępnienia sekcji tożsamości w treści żądania REST, zostanie wyświetlony błąd.

Wywołaj poniższy interfejs API za pomocą sekcji "identity" w treści żądania:

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

Treść żądania: dodaj "identity": { "type": "SystemAssigned" }.

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

Odpowiedź: tożsamość zarządzana jest tworzona automatycznie, a sekcja "tożsamość" jest wypełniana odpowiednio.

{
    "name": "<workspaceName>",
    "tags": {},
    "properties": {
        "provisioningState": "Succeeded",
        "loggingStorageAccountKey": "**********",
        "createTime": "2021-09-26T04:10:01.1135678Z",
        "version": "2018-06-01"
    },
    "identity": {
        "type": "SystemAssigned",
        "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
    },
    "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Synapse/workspaces/<workspaceName>",
    "type": "Microsoft.Synapse/workspaces",
    "location": "<region>"
}

Generowanie tożsamości zarządzanej przypisanej przez system przy użyciu szablonu usługi Azure Resource Manager

Szablon: dodaj "identity": { "type": "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"
        }
    }]
}

Generowanie tożsamości zarządzanej przypisanej przez system przy użyciu zestawu 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);

Pobierz zarządzaną tożsamość przypisaną przez system

Tożsamość zarządzaną można pobrać z portalu Azure lub w sposób programistyczny. W poniższych sekcjach przedstawiono kilka przykładów.

Napiwek

Jeśli tożsamość zarządzana nie jest widoczna, wygeneruj tożsamość zarządzaną przez aktualizację wystąpienia usługi.

Wykonywanie notatników Spark w usłudze Azure Synapse z tożsamością zarządzaną przypisaną przez system

Notatniki Synapse Spark można łatwo uruchomić, korzystając z tożsamości zarządzanej przypisanej przez system (lub tożsamości zarządzanej obszaru roboczego), włączając opcję Uruchom jako zarządzana tożsamość z menu Konfiguruj sesję. Aby uruchomić notatniki Spark za pomocą zarządzanej tożsamości obszaru roboczego, użytkownicy muszą mieć następujące role RBAC:

  • Operator obliczeniowy usługi Synapse w obszarze roboczym lub wybranej puli spark
  • Użytkownik poświadczeń Synapse w zarządzanej tożsamości obszaru roboczego

synapse-run-as-msi-1

synapse-run-as-msi-2

synapse-run-as-msi-3

Uwaga

Notesy usługi Synapse i definicje zadań platformy Spark obsługują tylko korzystanie z tożsamości zarządzanej przypisanej przez system za pośrednictwem połączonych usług i interfejsów API mssparkutils. Biblioteka MSAL i inne biblioteki uwierzytelniania nie mogą używać przypisanej przez system tożsamości zarządzanej. Zamiast tego możesz wygenerować podmiot usługi i przechowywać poświadczenia w usłudze Key Vault.

Tożsamość zarządzana przypisana przez użytkownika

Możesz tworzyć, usuwać i zarządzać zarządzanymi tożsamościami przypisanymi przez użytkowników w usłudze Microsoft Entra ID. Aby uzyskać więcej informacji, zobacz Tworzenie, wyświetlanie listy, usuwanie lub przypisywanie roli do tożsamości zarządzanej przypisanej przez użytkownika przy użyciu witryny Azure Portal.

Aby użyć tożsamości zarządzanej przypisanej przez użytkownika (UAMI), musisz najpierw utworzyć poświadczenia w wystąpieniu usługi.

Uwaga

Tożsamość zarządzana przypisana przez użytkownika już wspiera działania związane z notesami usługi Synapse oraz definiowanie zadań platformy Spark w potoku danych.

Następne kroki

Zapoznaj się z następującymi artykułami, które przedstawiają, kiedy i jak używać tożsamości zarządzanej:

Zobacz Tożsamości zarządzane dla zasobów platformy Azure — omówienie , aby uzyskać więcej informacji na temat tożsamości zarządzanych dla zasobów platformy Azure, na których oparta jest tożsamość zarządzana w usłudze Azure Synapse.