Beheerde identiteit voor Azure Synapse

Dit artikel bevat informatie over beheerde identiteit (voorheen bekend als beheerde service-identiteit (Managed Service Identity/MSI)) en hoe dit werkt in Azure Synapse.

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Overzicht

Beheerde identiteiten nemen de noodzaak voor ontwikkelaars weg om referenties te beheren. Beheerde identiteiten bieden een identiteit voor het service-exemplaar wanneer er verbinding wordt gemaakt met resources die ondersteuning bieden voor Microsoft Entra-verificatie. De service kan bijvoorbeeld een beheerde identiteit gebruiken om toegang te krijgen tot resources zoals Azure Key Vault, waar gegevensbeheerders referenties op een veilige manier kunnen opslaan of toegang hebben tot opslagaccounts. De service gebruikt de beheerde identiteit om Microsoft Entra-tokens te verkrijgen.

Er zijn twee typen beheerde identiteit die worden ondersteund:

  • Door het systeem toegewezen: u kunt een beheerde identiteit rechtstreeks op een service-exemplaar inschakelen. Wanneer u een door het systeem toegewezen beheerde identiteit toestaat tijdens het maken van de service, wordt er een identiteit gemaakt in Microsoft Entra dat is gekoppeld aan de levenscyclus van dat service-exemplaar. Standaard kan alleen die Azure-resource deze identiteit gebruiken voor het aanvragen van tokens van Microsoft Entra ID. Als de resource wordt verwijderd, wordt de identiteit automatisch door Azure voor u verwijderd. Voor Azure Synapse Analytics is vereist dat er samen met de Synapse-werkruimte een door het systeem toegewezen beheerde identiteit moet worden gemaakt.
  • Door de gebruiker toegewezen: u kunt ook een beheerde identiteit maken als zelfstandige Azure-resource. U kunt een door de gebruiker toegewezen beheerde identiteit maken en deze toewijzen aan een of meer exemplaren van een Synapse-werkruimte. Bij door de gebruiker toegewezen beheerde identiteiten wordt de identiteit afzonderlijk beheerd van de resources die er gebruik van maken.

Beheerde identiteit biedt de onderstaande voordelen:

  • Referenties opslaan in Azure Key Vault, waarbij een per geval beheerde identiteit wordt gebruikt voor Azure Key Vault-verificatie.
  • Toegang tot gegevensarchieven of berekeningen met behulp van verificatie via beheerde identiteiten, waaronder 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-activiteit, webactiviteit en meer. Raadpleeg artikelen over de connector en activiteiten voor meer informatie.
  • Beheerde identiteit wordt ook gebruikt voor het versleutelen/ontsleutelen van gegevens en metagegevens met behulp van een door de klant beheerde sleutel die is opgeslagen in Azure Key Vault, waardoor wordt voorzien in een dubbele versleuteling.

Door het systeem toegewezen beheerde identiteit

Notitie

Door het systeem toegewezen beheerde identiteit wordt ook wel 'Beheerde identiteit' genoemd elders in de documentatie en in de Synapse Studio-gebruikersinterface voor achterwaartse compatibiliteit. We vermelden expliciet 'Door de gebruiker toegewezen beheerde identiteit' wanneer we ernaar verwijzen.

Door het systeem toegewezen beheerde identiteit genereren

Door het systeem toegewezen beheerde identiteit wordt als volgt gegenereerd:

  • Wanneer u een Synapse-werkruimte maakt via Azure Portal of PowerShell, wordt de beheerde identiteit altijd automatisch gemaakt.
  • Wanneer u een werkruimte maakt via SDK, wordt de beheerde identiteit alleen gemaakt als u Identity = new ManagedIdentity opgeeft in het Synapse-werkruimteobject voor het maken." Zie het voorbeeld in .NET Quickstart : Data Factory maken.
  • Wanneer u een Synapse-werkruimte maakt via REST API, wordt de beheerde identiteit alleen gemaakt als u de sectie 'identiteit' opgeeft in de aanvraagbody. Zie het voorbeeld in rest-quickstart: een data factory maken.

Als uw service-exemplaar geen beheerde identiteit heeft die is gekoppeld aan de volgende instructie voor het ophalen van beheerde identiteiten , kunt u er expliciet een genereren door deze programmatisch bij te werken met id-initiator:

Notitie

  • Beheerde identiteit kan niet worden gewijzigd. Het bijwerken van een service-exemplaar dat al een beheerde identiteit heeft, heeft geen invloed en de beheerde identiteit blijft ongewijzigd.
  • Als u een service-exemplaar bijwerkt dat al een beheerde identiteit heeft zonder de parameter 'identiteit' op te geven in de factory- of werkruimteobjecten of zonder de sectie 'identiteit' op te geven in de hoofdtekst van de REST-aanvraag, krijgt u een foutmelding.
  • Wanneer u een service-exemplaar verwijdert, wordt de bijbehorende beheerde identiteit samen verwijderd.

Door het systeem toegewezen beheerde identiteit genereren met behulp van PowerShell

Roep de opdracht New-AzSynapseWorkspace aan en vervolgens ziet u de velden Identiteit die nieuw worden gegenereerd:

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

Door het systeem toegewezen beheerde identiteit genereren met rest API

Notitie

Als u probeert een service-exemplaar bij te werken dat al een beheerde identiteit heeft zonder de identiteitsparameter in het werkruimteobject op te geven of een identiteitssectie op te geven in de hoofdtekst van de REST-aanvraag, krijgt u een foutmelding.

Roep de onderstaande API aan met de sectie 'identiteit' in de aanvraagbody:

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

Aanvraagbody: voeg 'identiteit' toe: { "type": "SystemAssigned" }.

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

Antwoord: beheerde identiteit wordt automatisch gemaakt en de sectie 'identiteit' wordt dienovereenkomstig ingevuld.

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

Door het systeem toegewezen beheerde identiteit genereren met behulp van een Azure Resource Manager-sjabloon

Sjabloon: voeg 'identity' toe: { "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"
        }
    }]
}

Door het systeem toegewezen beheerde identiteit genereren met 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);

Door het systeem toegewezen beheerde identiteit ophalen

U kunt de beheerde identiteit ophalen uit de Azure-portal of programmatisch. In de volgende secties ziet u enkele voorbeelden.

Tip

Als u de beheerde identiteit niet ziet, genereert u een beheerde identiteit door uw service-exemplaar bij te werken.

Door het systeem toegewezen beheerde identiteit ophalen met behulp van Azure Portal

U vindt de informatie over beheerde identiteiten in Azure Portal-> uw Synapse-werkruimte -> Eigenschappen.

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

  • Object-id van beheerde identiteit

De informatie over beheerde identiteiten wordt ook weergegeven wanneer u een gekoppelde service maakt, die ondersteuning biedt voor verificatie van beheerde identiteiten, zoals Azure Blob, Azure Data Lake Storage, Azure Key Vault, enzovoort.

Volg deze stappen om machtigingen te verlenen. Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.

  1. Klik op Toegangsbeheer (IAM) .

  2. Selecteer Toevoegen>Roltoewijzing toevoegen.

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

  3. Selecteer beheerde identiteit op het tabblad Leden en selecteer vervolgens Leden selecteren.

  4. Selecteer uw Azure-abonnement.

  5. Selecteer onder Door het systeem toegewezen beheerde identiteit de Synapse-werkruimte en selecteer vervolgens een werkruimte. U kunt ook de object-id of werkruimtenaam (als de naam van de beheerde identiteit) gebruiken om deze identiteit te vinden. Gebruik PowerShell om de toepassings-id van de beheerde identiteit op te halen.

  6. Selecteer op het tabblad Beoordelen en toewijzen de optie Beoordelen en toewijzen om de rol toe te wijzen.

Door het systeem toegewezen beheerde identiteit ophalen met behulp van PowerShell

De principal-id van de beheerde identiteit en de tenant-id worden als volgt geretourneerd wanneer u een specifiek service-exemplaar krijgt. Gebruik de PrincipalId om toegang te verlenen:

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

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

U kunt de toepassings-id ophalen door de bovenstaande principal-id te kopiëren en vervolgens de onderstaande Microsoft Entra ID-opdracht uit te voeren met principal-id als 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

Beheerde identiteit ophalen met REST API

De principal-id van de beheerde identiteit en de tenant-id worden als volgt geretourneerd wanneer u een specifiek service-exemplaar krijgt.

Roep de onderstaande API aan in de aanvraag:

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

Antwoord: U krijgt een antwoord zoals wordt weergegeven in het onderstaande voorbeeld. De sectie 'identiteit' wordt dienovereenkomstig ingevuld.

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

Als u de beheerde identiteit wilt ophalen uit een ARM-sjabloon, voegt u een sectie uitvoer toe in de ARM JSON:

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

Azure Synapse Spark Notebooks uitvoeren met door het systeem toegewezen beheerde identiteit

U kunt Synapse Spark Notebooks eenvoudig uitvoeren met de door het systeem toegewezen beheerde identiteit (of door werkruimte beheerde identiteit) door Uitvoeren als beheerde identiteit in te schakelen vanuit het menu Sessie configureren. Als u Spark Notebooks wilt uitvoeren met een door de werkruimte beheerde identiteit, moeten gebruikers beschikken over de volgende RBAC-rollen:

  • Synapse Compute Operator in de werkruimte of geselecteerde Spark-pool
  • Synapse Credential User in de beheerde identiteit van de werkruimte

synapse-run-as-msi-1

synapse-run-as-msi-2

synapse-run-as-msi-3

Notitie

Synapse-notebooks en Spark-taakdefinities ondersteunen alleen het gebruik van door het systeem toegewezen beheerde identiteit via gekoppelde services en de mssparkutils-API's. MSAL en andere verificatiebibliotheken kunnen de door het systeem toegewezen beheerde identiteit niet gebruiken. U kunt in plaats daarvan een service-principal genereren en de referenties opslaan in Key Vault.

Door de gebruiker toegewezen beheerde identiteit

U kunt door de gebruiker toegewezen beheerde identiteiten maken, verwijderen, beheren in Microsoft Entra-id. Raadpleeg voor meer informatie een rol maken, weergeven, verwijderen of toewijzen aan een door de gebruiker toegewezen beheerde identiteit met behulp van Azure Portal.

Als u een door de gebruiker toegewezen beheerde identiteit wilt gebruiken, moet u eerst referenties maken in uw service-exemplaar voor de UAMI.

Notitie

Door de gebruiker toegewezen beheerde identiteit wordt momenteel niet ondersteund in Synapse-notebooks en Spark-taakdefinities.

Volgende stappen

  • Referenties maken.

Zie de volgende onderwerpen waarin wordt geïntroduceerd wanneer en hoe u beheerde identiteit gebruikt:

Zie Overzicht van beheerde identiteiten voor Azure-resources voor meer achtergrondinformatie over beheerde identiteiten voor Azure-resources waarop beheerde identiteiten in Azure Synapse zijn gebaseerd.