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:
- Generera hanterad identitet med PowerShell
- Generera hanterad identitet med hjälp av REST API
- Generera hanterad identitet med hjälp av en Azure Resource Manager-mall
- Generera hanterad identitet med hjälp av SDK
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.
- 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.
Välj Åtkomstkontroll (IAM) .
Välj Lägg till>Lägg till rolltilldelning.
Från fliken Medlemmar väljer du Hanterad identitet och välj sedan Välj medlemmar.
Välj din Azure-prenumerationen.
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.
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.
Relaterat innehåll
Se följande avsnitt som introducerar när och hur du använder hanterad identitet:
- Lagra autentiseringsuppgifter i Azure Key Vault.
- Kopiera data från/till Azure Data Lake Store med hanterade identiteter för Azure-resursautentisering.
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.