Dela via


Hanterad identitet för Azure Data Factory

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

Tips

Data Factory i Microsoft Fabric är nästa generations Azure Data Factory, med en enklare arkitektur, inbyggd AI och nya funktioner. Om dataintegrering är nytt för dig börjar du med Fabric Data Factory. Befintliga ADF-arbetsbelastningar kan uppgraderas till Fabric för att få åtkomst till nya funktioner inom datavetenskap, realtidsanalys och rapportering.

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 modulen Azure Az PowerShell för att interagera med Azure. Kom igång genom att läsa Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i 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 token.

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. Avsiktligt kan endast den Azure resursen använda den här identiteten för att begära token från Microsoft Entra ID. När resursen tas bort tar Azure automatiskt bort identiteten åt dig.
  • User-assigned: 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

Säker förbikoppling kan inte använda hanterade identiteter som tilldelats av användare. 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, i vilket fall som helst hanterad identitet används för Azure Key Vault-autentisering.
  • Få åtkomst till datalager eller beräkningar med hjälp av hanterad identitetsautentisering, inklusive 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 anslutningar och aktiviteter.
  • 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.

Kommentar

  • Användare med rollen Data Factory-deltagare kan skapa och köra pipelines som utnyttjar både den systemtilldelade hanterade identiteten (SAMI) samt alla användartilldelade hanterade identiteter (UAMI) kopplade till datafabriken. Dessa identiteter ärver alla behörigheter som redan har beviljats dem för externa resurser (till exempel lagringskonton, SQL-databaser, Key Vault Fabric Lakehouse).
  • Tilldela bidragsroll endast till betrodda principaler och med minsta möjliga omfång. Granska och begränsa de behörigheter som beviljas till datafabrikens hanterade identiteter, använd RBAC med lägsta behörighet på underordnade resurser och granska regelbundet rolltilldelningar och aktivitetsloggar.

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-portalen eller PowerShell skapas alltid hanterade identiteter automatiskt.
  • När du skapar en datafabrik via SDK skapas endast hanterad identitet om du anger "Identitet = ny 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 portalen eller programmatiskt. I följande avsnitt visas några exempel.

Tips

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 datafabrik -> Egenskaper.

Visa Azure portalen med systemhanterat identitetsobjekt-ID och identitetsklientorganisation för en Azure Data Factory.

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

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 för datafabrikens hanterade identitet till dina Azure datakällor. Detaljerade steg finns i Tilldela Azure roller med hjälp av Azure-portalen.

  1. Välj Access control (IAM) på sidan Azure portal för datakällan.

  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. Välj den roll som krävs för att bevilja nödvändig åtkomst till datakällan. Detta kan variera beroende på vilken datakälla och vilka behörigheter som krävs där av datafabriken. Om datafabriken till exempel bara behöver läsa från en Azure-SQL Server väljer du rollen Reader.

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

  5. Välj din Azure prenumeration.

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

  7. 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 principals-ID och sedan köra följande Microsoft Entra ID-kommando med principals-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":{

    }
}

Tips

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

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

Se Hanterade identiteter för Azure Resursöversikt för mer bakgrund om hanterade identiteter för Azure resurser, som hanterad identitet i Azure Data Factory baseras på.

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