Dela via


Hanterad identitet för Azure Data Factory

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Den här artikeln hjälper dig att förstå hanterad identitet (tidigare kallad hanterad tjänstidentitet/MSI) och hur den fungerar i Azure Data Factory.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. 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.
  • 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 datafabrik. I användartilldelade hanterade identiteter hanteras identiteten separat från de resurser som använder den.

Kommentar

Betrodd förbikoppling kan inte använda användartilldelade hanterade identiteter. Den kan bara använda systemtilldelade hanterade identiteter för att ansluta till Azure Storage och Azure Key Vault.

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.

Nödvändiga roller för hanterade identiteter

För att effektivt använda hanterade identiteter i Azure Data Factory måste specifika roller tilldelas för att säkerställa korrekt åtkomst och funktionalitet. Nedan visas de roller som krävs:

  • Systemtilldelad hanterad identitet

    • Läsarroll: Den här rollen är nödvändig för att läsa resursernas metadata.
    • Deltagarroll: Den här rollen krävs för att hantera de resurser som den hanterade identiteten behöver åtkomst till.
  • Användartilldelad hanterad identitet

    • Hanterad identitetsoperatorroll: Med den här rollen kan du hantera den användartilldelade hanterade identiteten.
    • Läsarroll: Den här rollen är nödvändig för att läsa resursernas metadata.
    • Deltagarroll: Den här rollen krävs för att hantera de resurser som den hanterade identiteten behöver åtkomst till.

Systemtilldelad hanterad identitet

Kommentar

Systemtilldelad hanterad identitet kallas även "Hanterad identitet" någon annanstans i dokumentationen och i Data Factory Studio 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 datafabrik via Azure Portal eller PowerShell skapas alltid hanterade identiteter automatiskt.
  • När du skapar en datafabrik via SDK skapas endast den hanterade identiteten om du anger "Identity = new FactoryIdentity()" i fabriksobjektet för skapande. Se exempel i .NET Snabbstart – Skapa datafabrik.
  • När du skapar en datafabrik 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 fabriksobjekten eller utan att ange "identitet" i REST-begärandetexten får du ett fel.
  • När du tar bort en tjänstinstans tas även den associerade hanterade identiteten bort.

Generera systemtilldelad hanterad identitet med PowerShell

Anropa Kommandot Set-AzDataFactoryV2 och se sedan att "identitetsfält" nyligen har genererats:

PS C:\> Set-AzDataFactoryV2 -ResourceGroupName <resourceGroupName> -Name <dataFactoryName> -Location <region>

DataFactoryName   : ADFV2DemoFactory
DataFactoryId     : /subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/ADFV2DemoFactory
ResourceGroupName : <resourceGroupName>
Location          : East US
Tags              : {}
Identity          : Microsoft.Azure.Management.DataFactory.Models.FactoryIdentity
ProvisioningState : Succeeded

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 ange identitetsparametern i fabriksobjektet 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/<subsID>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<data factory name>?api-version=2018-06-01

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

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

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

{
    "name": "<dataFactoryName>",
    "tags": {},
    "properties": {
        "provisioningState": "Succeeded",
        "loggingStorageAccountKey": "**********",
        "createTime": "2017-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.DataFactory/factories/<dataFactoryName>",
    "type": "Microsoft.DataFactory/factories",
    "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": "<dataFactoryName>",
        "apiVersion": "2018-06-01",
        "type": "Microsoft.DataFactory/factories",
        "location": "<region>",
        "identity": {
            "type": "SystemAssigned"
        }
    }]
}

Generera systemtilldelad hanterad identitet med SDK

Anropa funktionen create_or_update med Identity=new FactoryIdentity(). Exempelkod med .NET:

Factory dataFactory = new Factory
{
    Location = <region>,
    Identity = new FactoryIdentity()
};
client.Factories.CreateOrUpdate(resourceGroup, dataFactoryName, dataFactory);

Hämta systemtilldelad hanterad identitet

Du kan hämta den hanterade identiteten från Azure Portal 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 Portal

Du hittar den hanterade identitetsinformationen från Azure Portal –> din datafabrik –> Egenskaper.

Visar Azure Portal med det systemhanterade identitetsobjekt-ID:t och identitetsklientorganisationen för en Azure Data Factory.

  • Objekt-ID för hanterad identitet
  • Hanterad identitetsklientorganisation

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 Data Factory och sedan en datafabrik. Du kan även använda objekt-ID:t eller datafabriksnamnet (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-AzDataFactoryV2 -ResourceGroupName <resourceGroupName> -Name <dataFactoryName>).Identity

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

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 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           : ADFV2DemoFactory
Id                    : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
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.DataFactory/factories/{factoryName}?api-version=2018-06-01

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

{
    "name":"<dataFactoryName>",
    "identity":{
        "type":"SystemAssigned",
        "principalId":"bbbbbbbb-cccc-dddd-2222-333333333333",
        "tenantId":"aaaabbbb-0000-cccc-1111-dddd2222eeee"
    },
    "id":"/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<dataFactoryName>",
    "type":"Microsoft.DataFactory/factories",
    "properties":{
        "provisioningState":"Succeeded",
        "createTime":"2020-02-12T02:22:50.2384387Z",
        "version":"2018-06-01",
        "factoryStatistics":{
            "totalResourceCount":0,
            "maxAllowedResourceCount":0,
            "factorySizeInGbUnits":0,
            "maxAllowedFactorySizeInGbUnits":0
        }
    },
    "eTag":"\"03006b40-XXXX-XXXX-XXXX-5e43617a0000\"",
    "location":"<region>",
    "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.DataFactory/factories', parameters('<dataFactoryName>')), '2018-06-01', 'Full').identity.principalId]"
        }
    }
}

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 Portal.

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

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 Data Factory baseras på.

Se Begränsningar för hanterade identiteter, som även gäller för hanterade identiteter i Azure Data Factory.