Tożsamość zarządzana dla usługi Azure Synapse

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ść wystąpienia usługi podczas nawiązywania połączenia z zasobami obsługującymi uwierzytelnianie usługi 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: tożsamość zarządzaną można włączyć bezpośrednio w wystąpieniu usługi. Gdy zezwalasz na tożsamość zarządzaną przypisaną przez system podczas tworzenia usługi, tożsamość jest tworzona w usłudze Microsoft Entra powiązanej 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ść. Usługa Azure Synapse Analytics wymaga utworzenia tożsamości zarządzanej przypisanej przez system wraz z obszarem roboczym usługi Synapse.
  • Przypisana przez użytkownika: możesz również utworzyć tożsamość zarządzaną jako autonomiczny zasób platformy Azure. Możesz utworzyć tożsamość zarządzaną przypisaną przez użytkownika i przypisać ją do co najmniej jednego wystąpienia 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ń przy użyciu uwierzytelniania tożsamości zarządzanej, a w tym 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, aktywności internetowej 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 innym miejscu w dokumentacji i w interfejsie użytkownika programu Synapse Studio na potrzeby zgodności z poprzednimi wersjami. Podczas odwoływania się do niej jawnie będziemy wspominać "Tożsamość zarządzana przypisana przez użytkownika".

Generowanie tożsamości zarządzanej przypisanej przez system

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 tożsamość = nowa tożsamość zarządzana" w obiekcie obszaru roboczego usługi Synapse do utworzenia". Zobacz przykład w przewodniku Szybki start platformy .NET — tworzenie fabryki danych.
  • 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 przewodniku 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:\> $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": "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>"
}

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);

Pobieranie tożsamości zarządzanej przypisanej przez system

Tożsamość zarządzaną można pobrać z witryny Azure Portal lub programowo. W poniższych sekcjach przedstawiono kilka przykładów.

Napiwek

Jeśli tożsamość zarządzana nie jest widoczna, wygeneruj tożsamość zarządzaną, aktualizując wystąpienie usługi.

Pobieranie tożsamości zarządzanej przypisanej przez system przy użyciu witryny Azure Portal

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

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

  • Identyfikator obiektu tożsamości zarządzanej

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.

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

  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 pozycję Obszar roboczy usługi 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 cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05 72f988bf-XXXX-XXXX-XXXX-2d7cd011db47

Identyfikator aplikacji można uzyskać, kopiując powyższy identyfikator podmiotu zabezpieczeń, a następnie uruchamiając poniższe polecenie Microsoft Entra ID z identyfikatorem podmiotu zabezpieczeń jako parametrem.

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

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 żądaniu:

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ść" jest wypełniana odpowiednio.

{
  "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": {}
}

Napiwek

Aby pobrać tożsamość zarządzaną z szablonu usługi ARM, dodaj sekcję danych wyjściowych w formacie JSON usługi ARM:

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

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

Notesy platformy Spark usługi Synapse można łatwo wykonać przy użyciu tożsamości zarządzanej przypisanej przez system (lub tożsamości zarządzanej obszaru roboczego), włączając opcję Uruchom jako tożsamość zarządzaną z menu Konfigurowanie sesji . Aby wykonać notesy spark z tożsamością zarządzaną 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ń usługi Synapse w tożsamości zarządzanej 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ć jednostkę usługi i zapisać poświadczenia w usłudze Key Vault.

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

Tożsamości zarządzane przypisane przez użytkownika można tworzyć, usuwać i zarządzać nimi 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, musisz najpierw utworzyć poświadczenia w wystąpieniu usługi dla interfejsu użytkownika.

Uwaga

Tożsamość zarządzana przypisana przez użytkownika nie jest obecnie obsługiwana w notesach usługi Synapse i definicjach zadań platformy Spark.

Następne kroki

Zapoznaj się z następującymi tematami, 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.