Dela via


Hanterad identitet för Azure Synapse

I den här artikeln får du hjälp med att förstå hanterad identitet (tidigare hanterad tjänstidentitet/MSI) och hur den fungerar i Azure Synapse.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Översikt

Med hanterade identiteter behöver du inte hantera autentiseringsuppgifter. Hanterade identiteter tillhandahåller en identitet för tjänstinstansen när du ansluter till resurser som stöder Microsoft Entra-autentisering. Tjänsten kan till exempel använda en hanterad identitet för att komma åt resurser som Azure Key Vault, där dataadministratörer på ett säkert sätt kan lagra autentiseringsuppgifter eller komma åt lagringskonton. Tjänsten använder den hanterade identiteten för att hämta Microsoft Entra-tokens.

Det finns två typer av hanterade identiteter som stöds:

  • Systemtilldelad: Du kan aktivera en hanterad identitet direkt på en tjänstinstans. När du tillåter en systemtilldelad hanterad identitet när tjänsten skapas, skapas en identitet i Microsoft Entra som är kopplad till tjänstinstansens livscykel. Det är bara den Azure-resursen som kan använda den här identiteten för att begära tokens från Microsoft Entra ID. Så när resursen tas bort tar Azure automatiskt bort identiteten åt dig. Azure Synapse Analytics kräver att en systemtilldelad hanterad identitet måste skapas tillsammans med Synapse-arbetsytan.
  • Användartilldelad: Du kan också skapa en hanterad identitet som en fristående Azure-resurs. Du kan skapa en användartilldelad hanterad identitet och tilldela den till en eller flera instanser av en Synapse-arbetsyta. I användartilldelade hanterade identiteter hanteras identiteten separat från de resurser som använder den.

Med hanterad identitet får du följande fördelar:

  • Lagra autentiseringsuppgifter i Azure Key Vault, där hanterad identitet används för Azure Key Vault-autentisering.
  • Få åtkomst till datalager eller beräkningar med hanterad identitetsautentisering, bland annat 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, Databricks-aktivitet, webbaktivitet med mera. Mer information finns i artiklarna om anslutningsappen och aktivitet.
  • Hanterad identitet används också för att kryptera/dekryptera data och metadata med hjälp av den kundhanterade nyckeln som lagras i Azure Key Vault, vilket ger dubbel kryptering.

Systemtilldelad hanterad identitet

Kommentar

Systemtilldelad hanterad identitet kallas även "Hanterad identitet" någon annanstans i dokumentationen och i Synapse Studio-användargränssnittet för bakåtkompatibilitet. Vi nämner uttryckligen "Användartilldelad hanterad identitet" när vi refererar till den.

Generera systemtilldelad hanterad identitet

Systemtilldelad hanterad identitet genereras på följande sätt:

  • När du skapar en Synapse-arbetsyta via Azure-portalen eller PowerShell skapas alltid hanterade identiteter automatiskt.
  • När du skapar en arbetsyta via SDK skapas endast hanterad identitet om du anger identitet = ny ManagedIdentity i Synapse-arbetsyteobjektet för skapande." Se exempel i .NET Snabbstart – Skapa datafabrik.
  • När du skapar Synapse-arbetsytan via REST API skapas endast hanterad identitet om du anger avsnittet "identitet" i begärandetexten. Se exempel i REST-snabbstart – skapa datafabrik.

Om du upptäcker att tjänstinstansen inte har någon associerad hanterad identitet efter instruktionen hämta hanterad identitet kan du uttryckligen generera en genom att uppdatera den med identitetsinitiatorn programmatiskt:

Kommentar

  • Det går inte att ändra den hanterade identiteten. Att uppdatera en tjänstinstans som redan har en hanterad identitet påverkar inte och den hanterade identiteten hålls oförändrad.
  • Om du uppdaterar en tjänstinstans som redan har en hanterad identitet utan att ange parametern "identitet" i fabriks- eller arbetsyteobjekten eller utan att ange "identitet" i REST-begärandetexten får du ett fel.
  • När du tar bort en tjänstinstans tas den associerade hanterade identiteten bort.

Generera systemtilldelad hanterad identitet med PowerShell

Anropa kommandot New-AzSynapseWorkspace och se sedan att "identitetsfält" nyligen har genererats:

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

Generera systemtilldelad hanterad identitet med hjälp av REST API

Kommentar

Om du försöker uppdatera en tjänstinstans som redan har en hanterad identitet utan att antingen ange identitetsparametern i arbetsyteobjektet eller ange ett identitetsavsnitt i REST-begärandetexten får du ett fel.

Anropa API:et nedan med avsnittet "identitet" i begärandetexten:

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

Begärandetext: Lägg till "identitet": { "type": "SystemAssigned" }.

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

Svar: Hanterad identitet skapas automatiskt och avsnittet "identitet" fylls i därefter.

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

Generera systemtilldelad hanterad identitet med hjälp av en Azure Resource Manager-mall

Mall: lägg till "identitet": { "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"
        }
    }]
}

Generera systemtilldelad hanterad identitet med 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);

Hämta systemtilldelad hanterad identitet

Du kan hämta den hanterade identiteten från Azure-portalen eller programmatiskt. I följande avsnitt visas några exempel.

Dricks

Om du inte ser den hanterade identiteten genererar du en hanterad identitet genom att uppdatera tjänstinstansen.

Hämta systemtilldelad hanterad identitet med Hjälp av Azure-portalen

Du hittar den hanterade identitetsinformationen från Azure-portalen –> din Synapse-arbetsyta –> Egenskaper.

Visar Azure-portalen med det systemhanterade identitetsobjekt-ID:t för en Synapse-arbetsyta.

  • Objekt-ID för hanterad identitet

Den hanterade identitetsinformationen visas också när du skapar en länkad tjänst som stöder hanterad identitetsautentisering, till exempel Azure Blob, Azure Data Lake Storage, Azure Key Vault osv.

Följ dessa steg om du vill bevilja behörigheter. Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.

  1. Välj Åtkomstkontroll (IAM) .

  2. Välj Lägg till>Lägg till rolltilldelning.

    Skärmbild som visar sidan Åtkomstkontroll (IAM) med menyn Lägg till rolltilldelning öppen.

  3. Från fliken Medlemmar väljer du Hanterad identitet och välj sedan Välj medlemmar.

  4. Välj din Azure-prenumerationen.

  5. Under Systemtilldelad hanterad identitet väljer du Synapse-arbetsyta och sedan en arbetsyta. Du kan också använda objekt-ID:t eller arbetsytans namn (som namnet på den hanterade identiteten) för att hitta den här identiteten. Om du vill hämta den hanterade identitetens program-ID använder du PowerShell.

  6. På fliken Granska + tilldela väljer du Granska + tilldela för att tilldela rollen.

Hämta systemtilldelad hanterad identitet med PowerShell

Huvud-ID:t och klient-ID:t för den hanterade identiteten returneras när du får en specifik tjänstinstans på följande sätt. Använd PrincipalId för att bevilja åtkomst:

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

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

Du kan hämta program-ID:t genom att kopiera ovanstående huvudnamns-ID och sedan köra under Microsoft Entra ID-kommandot med huvud-ID som 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

Hämta hanterad identitet med hjälp av REST API

Huvud-ID:t och klient-ID:t för den hanterade identiteten returneras när du får en specifik tjänstinstans på följande sätt.

Anropa API:et nedan i begäran:

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

Svar: Du får svar som du ser i exemplet nedan. Avsnittet "identitet" fylls i i enlighet med detta.

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

Dricks

Om du vill hämta den hanterade identiteten från en ARM-mall lägger du till ett utdataavsnitt i ARM JSON:

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

Köra Azure Synapse Spark Notebooks med systemtilldelad hanterad identitet

Du kan enkelt köra Synapse Spark Notebooks med den systemtilldelade hanterade identiteten (eller arbetsytans hanterade identitet) genom att aktivera Kör som hanterad identitet från menyn Konfigurera session . För att kunna köra Spark Notebooks med arbetsytans hanterade identitet måste användarna ha följande RBAC-roller:

  • Synapse Compute Operator på arbetsytan eller vald Spark-pool
  • Synapse Credential User på arbetsytans hanterade identitet

synapse-run-as-msi-1

synapse-run-as-msi-2

synapse-run-as-msi-3

Kommentar

Synapse-notebook-filer och Spark-jobbdefinitioner stöder endast användning av systemtilldelade hanterade identiteter via länkade tjänster och API:er för mssparkutils. MSAL och andra autentiseringsbibliotek kan inte använda den systemtilldelade hanterade identiteten. Du kan i stället generera ett huvudnamn för tjänsten och lagra autentiseringsuppgifterna i Key Vault.

Användartilldelad hanterad identitet

Du kan skapa, ta bort, hantera användartilldelade hanterade identiteter i Microsoft Entra-ID. Mer information finns i Skapa, lista, ta bort eller tilldela en roll till en användartilldelad hanterad identitet med hjälp av Azure-portalen.

För att kunna använda en användartilldelad hanterad identitet måste du först skapa autentiseringsuppgifter i tjänstinstansen för UAMI.

Kommentar

Användartilldelad hanterad identitet stöds för närvarande inte i Synapse-notebook-filer och Spark-jobbdefinitioner.

Nästa steg

Se följande avsnitt som introducerar när och hur du använder hanterad identitet:

Mer bakgrund om hanterade identiteter för Azure-resurser finns i Översikt över hanterade identiteter för Azure-resurser, som den hanterade identiteten i Azure Synapse baseras på.