Använda hanterade identiteter i ett Azure Batch-konto eller en pool
Den här artikeln beskriver hur du använder hanterade identiteter i ett Microsoft Azure Batch-konto eller en batchpool. I artikeln beskrivs när du ska konfigurera hanterade identiteter i ett batchkonto jämfört med en batchpool. Den beskriver också olika beteendescenarier eftersom hanterad identitetsanvändning kan orsaka förvirring i vissa felsituationer.
Förutsättningar
- Ett Azure Batch-konto.
- Ett Azure Storage-konto.
- Postman.
Konfigurera ditt lagringskonto som ska användas med batchkontot
Om du vill konfigurera hanterade identiteter i batchkontot måste du först konfigurera ditt lagringskonto så att det används som automatisk lagring av batchkontot. Den här automatiska lagringen används för att lagra programpaketen och aktivitetsresursfilerna. För att konfigurera för automatisk lagring måste du länka lagringskontot till ditt batchkonto. Du måste också ange att kontot för automatisk lagring ska använda hanterade identiteter för batchkontot som autentiseringsläge.
Slutför den här installationen genom att följa dessa steg:
I listan över batchkonton väljer du namnet på ditt batchkonto.
Leta upp rubriken Inställningar i navigeringsfönstret för batchkontot och välj sedan Lagringskonto.
Under avsnittet INFORMATION OM LAGRINGSKONTO väljer du Välj ett lagringskonto.
När du har valt ditt lagringskonto går du tillbaka till avsnittet INFORMATION om LAGRINGSKONTO och ändrar fältet Autentiseringsläge till Hanterad identitet för Batch-konto.
Konfigurera hanterad identitet i batchkontot
Kommentar
Interaktionen som beskrivs i det här avsnittet är mellan ett batchkonto och Azure Storage eller Azure Key Vault. Mer information om interaktion mellan batchnoder och andra Azure-resurser finns i nästa avsnitt (Konfigurera hanterad identitet i batchpoolen).
Genom att konfigurera hanterad identitet på ett batchkonto beviljar du behörighet för batchkontot att endast autentisera till andra tjänster. Med den här konfigurationen kan du inte autentisera till batchnoder eller virtuella datorer i batchpoolen .
Du har två alternativ när du konfigurerar hanterad identitet i batchkontot: aktivera den systemtilldelade hanterade identiteten eller skapa en separat användartilldelad hanterad identitet för batchkontot.
Följ dessa steg för att konfigurera hanterad identitet i batchkontot:
I listan över batchkonton väljer du namnet på ditt batchkonto.
Leta upp rubriken Inställningar i navigeringsfönstret för batchkontot och välj sedan Identitet.
I rubriken Identitetstyp väljer du antingen Systemtilldelad (för en systemtilldelad hanterad identitet) eller Användartilldelad (för en användartilldelad hanterad identitet).
När du har slutfört den här konfigurationen går du tillbaka till översiktssidan för ditt batchkonto. I avsnittet Essentials på sidan väljer du JSON-vy. JSON-representationen av den hanterade identiteten visas i något av följande format:
Systemtilldelad hanterad identitet
"identity": { "principalId": "<principal-guid>", "tenantId": "<tenant-guid>", "type": "SystemAssigned" }
Användartilldelad hanterad identitet
"identity": { "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/<subscription-guid>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name>": { "principalId": "<principal-guid>", "clientId": "<client-guid>" } } }
Använda en hanterad identitet för att komma åt ditt konto för automatisk lagring
Funktionen för hanterad identitet i batchkontot används för vissa uppgifter, till exempel att ladda upp ett programpaket till ditt batchkonto. Om du vill ladda upp programpaketet går du till översiktssidan för batchkontot i Azure Portal, väljer Program>lägg till och följer sedan portalens anvisningar för att slutföra uppladdningen. Azure Batch lagrar programpaketet i sitt konto för automatisk lagring. Eftersom du tidigare har angett autentiseringsläget för batchkontot till Hanterad identitet för Batch-konto hämtar systemet autentiseringsuppgifterna från den hanterade identiteten för batchkontot för att få åtkomst till kontot för automatisk lagring.
Du kan behöva kontrollera om den hanterade identiteten har tillräcklig behörighet för kontot för automatisk lagring. Följ dessa steg för att söka efter dessa behörigheter:
I listan över lagringskonton väljer du namnet på ditt konto för automatisk lagring.
I navigeringsfönstret för lagringskontot väljer du Åtkomstkontroll (IAM).
På sidan Åtkomstkontroll (IAM) väljer du knappen Kontrollera åtkomst .
I fönstret Kontrollera åtkomst väljer du alternativet Hanterad identitet .
I fältet Hanterad identitet väljer du den hanterade identitet som du vill visa behörigheter för.
På fliken Aktuella rolltilldelningar kontrollerar du om det finns en tilldelad roll som har tillräcklig behörighet för att ladda upp ett programpaket. Om det inte finns någon sådan rolltilldelning visas följande felmeddelande i dina Azure Portal-meddelanden när du försöker ladda upp programpaketet till batchkontot:
Uppladdningsfel för <paketnamn>.zip
Filuppladdningen påträffade ett oväntat fel under uppladdningen.
Om det här uppladdningsfelet uppstår kontrollerar du HTTP-arkivfilen (.har) för uppladdningsbegäran. Det kommer att finnas en POST-begäran som innehåller ett namnprefix för batch
(till exempel batch?api-version=2020-06-01
), och du ser HTTP-statusen 200. I nyttolasten ser du den faktiska PUT-begäran som skickas till ditt batchkonto. Svaret på PUT-begäran visar HTTP-statusen 409. Det fullständiga felsvaret liknar följande text:
{responses: [{name: "<response-guid>", httpStatusCode: 409,...}]}
{responses: [{name: "<response-guid>", httpStatusCode: 409,...}]}
0: {name: "<response-guid>", httpStatusCode, 409,...}
content: {error: {code: "AutoStorageNoPermission",...}}
error: {code: "AutoStorageNoPermission",...}
code: "AutoStorageNoPermission"
message: "The managed identity does not have permission to access auto storage account. Please use Azure RBAC to assign the managed identity access to auto storage."
target: "BatchAccount"
contentLength: 318
Det här felet innebär att din systemtilldelade eller användartilldelade hanterade identitet i batchkontot inte har tillräcklig behörighet för att vidta åtgärder på kontot för automatisk lagring.
Använda en hanterad identitet för att komma åt ditt nyckelvalv
Information om hur du använder en hanterad identitet för att komma åt ett Azure Key Vault finns i Konfigurera kundhanterade nycklar för ditt Azure Batch-konto med Azure Key Vault och Hanterad identitet.
Konfigurera hanterad identitet i batchpoolen
Kommentar
Interaktionen som beskrivs i det här avsnittet är mellan en batchnod och andra Azure-resurser. Information om interaktion mellan ett batchkonto och antingen Azure Storage eller Azure Key Vault finns i föregående avsnitt (Konfigurera hanterad identitet i ditt batchkonto).
Om du vill tillåta att Azure Batch-noder får åtkomst till andra Azure-resurser använder du en hanterad identitet som har konfigurerats i Azure Batch-poolen.
Om autentiseringsläget för kontot för automatisk lagring är inställt på Hanterad identitet för Batch-konto, tar Azure Batch-noderna emot de hanterade identitetstoken. Noderna använder de hanterade identitetstoken för att autentisera via Microsoft Entra-autentisering med hjälp av Azure Instance Metadata Service (IMDS).
Azure Batch-poolen stöder endast den användartilldelade versionen av den hanterade identiteten. Därför måste du skapa en användartilldelad hanterad identitet i samma klientorganisation som ditt Azure Batch-konto. Du måste också bevilja behörighet i lagringsdataplanet (till exempel via Storage Blob Data Owner) till den användartilldelade hanterade identiteten.
Associera hanterad identitet till noden som har åtkomst till kontot för automatisk lagring
För den användartilldelade identitet som beräkningsnoderna använder för att få åtkomst till automatisk lagring måste du tilldela den här identitetsreferensen till pooler som har beräkningsnoder som behöver åtkomst till automatisk lagring. (Information om det här kravet beskrivs i REST-API:et förBatch-konto – Uppdatera AutoStorageBaseProperties i egenskapennodeIdentityReference
.) Därför måste du konfigurera nodidentitetsreferensen på två platser på Azure Portal:
Nodidentitetsreferensen i kontot för automatisk lagring av batchkonto
Den användartilldelade hanterade identiteten i batchpoolen
Viktigt!
Du kan definiera mer än en användartilldelad hanterad identitet i poolidentiteten. Den som definieras i nodidentitetsreferensen måste dock också definieras i poolidentiteten.
Konfigurera nodidentitetsreferensen för kontot för automatisk lagring
Följ dessa steg för att konfigurera nodidentitetsreferensen i ditt konto för automatisk lagring:
I listan över batchkonton väljer du namnet på ditt batchkonto.
Leta upp rubriken Inställningar i navigeringsfönstret för batchkontot och välj sedan Lagringskonto.
Under avsnittet INFORMATION om LAGRINGSKONTO väljer du Välj ett lagringskonto och sedan ditt konto för automatisk lagring.
Gå till referensrubriken Nodidentitet och välj sedan Lägg till.
Slutför processen för att lägga till din nya användartilldelade nodidentitetsreferens.
Konfigurera batchpoolens användartilldelade hanterade identitet
Följ dessa steg för att konfigurera den användartilldelade hanterade identiteten i batchpoolen:
I listan över batchkonton väljer du namnet på ditt batchkonto.
Leta upp rubriken Funktioner i navigeringsfönstret för batchkontot och välj sedan Pooler.
På sidan batchpool väljer du Lägg till.
På sidan Lägg till pool anger du ett pool-ID. I fältet Identitet väljer du Användartilldelad.
Leta upp rubriken Användartilldelad hanterad identitet och välj sedan Lägg till.
Slutför processen för att lägga till nodidentitetsreferensen som du skapade tidigare i batchpoolen.
Användningsfall för hanterad identitet i en batchnod
Du kan använda hanterad identitet i en batchnod på olika sätt, till exempel för följande funktioner:
- Ladda ned programpaket från en batchpool
- Ladda ned resursfiler för aktiviteter från en batchpool
Ladda ned programpaket från en batchpool
När du skapar en batchpool kan du ange programpaket på poolnivå. Programpaketen laddas ned från kontot för automatisk lagring och installeras i alla noder i den här poolen. Mer information finns i Ladda upp och hantera program. Ladda upp programpaketen till batchkontot innan du refererar till dem när du skapar batchpoolen. Om du vill lägga till programpaket i batchpoolen går du till sidan Lägg till pool för batchkontot, letar upp rubriken VALFRIA INSTÄLLNINGAR och väljer sedan Programpaket.
Beteendescenarier
I det här avsnittet beskrivs nodens driftstatus och status för programpaketets nedladdning för följande hanterade identitetsparametrar:
Om den hanterade identiteten anges i nodidentitetsreferensen
Om den hanterade identiteten har tillräcklig behörighet i kontot för automatisk lagring
Om batchpoolen skapades med samma hanterade identitet eller en annan hanterad identitet
I Azure Portal hittar du nod- och paketnedladdningstillstånden på översiktssidan för batchnoden. För att komma till den här sidan letar du upp rubriken Allmänt i batchpoolens navigeringsfönster, väljer Noder och väljer sedan namnet på den nod som du vill se.
I följande tabell beskrivs fyra beteendescenarier som omfattar hanterade identitets- och programpaket i en batchpool.
Scenarionummer | Hanterad identitetsanvändning | Behörigheter för hanterad identitet i kontot för automatisk lagring | Specifikation för skapande av pool | Nodstatus | Pakethämtningsstatus |
---|---|---|---|---|---|
1 | Anges i nodidentitetsreferens | Tillräckliga behörigheter | Skapas i poolen med samma hanterade identitet | Har startats | Laddas ned till noden i katalogen root/applications |
2 | Anges i nodidentitetsreferens | Otillräckliga behörigheter | Skapas i poolen med samma hanterade identitet | Startades korrekt, men i inaktivt tillstånd | Inte nedladdad till noden |
3 | Anges inte i nodidentitetsreferens | Tillräckliga eller otillräckliga behörigheter | Skapas i poolen med samma eller en annan hanterad identitet | Fastnat på obestämd tid i starttillståndet | Inte nedladdad till noden |
4 | Anges i nodidentitetsreferens | Tillräckliga eller otillräckliga behörigheter | Skapas i poolen med hjälp av en annan hanterad identitet | Oanvändbart tillstånd | Inte nedladdad till noden |
I scenario 3, när Azure Batch-tjänsten försöker starta noden, blir nodidentitetsreferensen null. Detta gör att noden förblir fast i ett starttillstånd . Om du vill verifiera den här statusen går du till sidan Översikt över batchpoolnoden och väljer sedan Ladda upp batchloggar för att ladda upp batchloggarna till en lagringscontainer. I fönstret Ladda upp batchloggar väljer du din Azure Storage-container, väljer knappen Välj lagringscontainer och väljer sedan och laddar ned filen agent-debug.log från lagringscontainern. Loggfilen innehåller flera poster som har meddelandet "poolen är inte helt ansluten ännu, health=Status.TvmJoinPoolInProgress".
I Scenario 4 kan du definiera mer än en hanterad identitet när du skapar batchpoolen. Vad händer om den hanterade identitet som du definierar i nodidentitetsreferensen inte läggs till i poolidentiteten? I så fall kan Azure Batch-tjänsten inte hitta rätt hanterad identitet som matchar den som definieras i nodreferensen. I stället visas följande nodfel i tjänsten:
Noden har 1 fel.
Ett fel uppstod på noden
Kod: ApplicationPackageError
Meddelande:
Ett eller flera programpaket som angetts för poolen är ogiltiga
Ladda ned resursfiler för aktiviteter från en batchpool
När du skapar en uppgift kan du ange resursfiler som ska användas i aktiviteten. Dessa filer laddas ned automatiskt till noden från kontot för automatisk lagring innan aktivitetskommandot körs. Mer information finns i Uppgifter i Azure Batch. Följ dessa steg för att ange resursfiler för aktiviteter:
I listan över batchkonton väljer du namnet på ditt batchkonto.
I navigeringsfönstret för batchkontot letar du upp rubriken Funktioner och väljer Jobb.
På sidan Jobb väljer du Lägg till.
Fyll i de obligatoriska fälten i fönstret Lägg till jobb och välj sedan OK.
Leta upp rubriken Allmänt i navigeringsfönstret för batchjobbet och välj sedan Uppgifter.
På sidan Uppgifter väljer du Lägg till.
I fönstret Lägg till uppgifter fyller du i alla obligatoriska fält. Leta sedan upp rubriken AVANCERADE INSTÄLLNINGAR och välj Resursfiler.
Du kan ange resursfilerna med hjälp av de metoder som beskrivs i följande tabell.
Metod | Kommentar |
---|---|
Container för automatisk lagring | Identitetsreferensen visas som Ingen och kan inte ändras. Noden kommer åt kontot för automatisk lagring för att hämta resursfiler. |
Container-URL eller HTTP-URL | Du kan definiera ett annat Azure Storage-kontos URL om tillräckligt med behörigheter har konfigurerats i det Azure Storage-kontot för identitetsreferensen och identiteten har lagts till i batchpoolen. |
Om du behöver åtkomst till kontot för automatisk lagring måste identiteten definieras i både nodidentitetsreferensen och poolidentiteten.
När du anger resursfildefinitionerna är parametrarna Blob-prefix och Filsökväg valfria. Blobprefixet används för att filtrera specifika blobar. Filsökvägen används för att skapa en undermapp i noden för lagring av blobfilerna. Om filsökvägen inte har definierats lagras filerna i sökvägen för varje aktivitet (rot/wd).
Resursfiltyp | Värde | Blobprefix | Filsökväg | Filläge (endast Linux) | Identitetsreferens |
---|---|---|---|---|---|
AutoStorageContainerName | <name-of-app> | mypath1 | |||
StorageContainerUrl | <https:// account-name.blob.core.windows.net/con> | mypath2 | /subscriptions/<subscription-guid>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name> | ||
HttpUrl | <https:// account-name.blob.core.windows.net/con/api.crt> | mypath3 | /subscriptions/<subscription-guid>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name> |
Beteendescenarier
I följande tabell beskrivs fyra beteendescenarier som kan inträffa när du använder hanterad identitet för att skapa en batchpool och sedan skapar en uppgift som har resursfiler för att hämta en blob från en container för automatisk lagring.
Scenarionummer | Hanterad identitetsanvändning | Behörigheter för hanterad identitet i kontot för automatisk lagring | Specifikation för skapande av pool | Resultat |
---|---|---|---|---|
1 | Anges i nodidentitetsreferens | Tillräckliga behörigheter | Skapas i poolen med samma hanterade identitet | Blobfilen har laddats ned till noden i katalogen root/wd/<file-path> , som du ser på aktivitetsöversiktssidan |
2 | Anges i nodidentitetsreferens | Otillräckliga behörigheter | Skapas i poolen med samma hanterade identitet | Aktiviteten misslyckas på grund av ett ResourceContainerAccessDenied-fel , felmeddelandet "Åtkomst för en av de angivna Azure Blob-containererna nekas" |
3 | Anges inte i nodidentitetsreferens | Tillräckliga eller otillräckliga behörigheter | Skapas i poolen med samma eller en annan hanterad identitet | Aktiviteten misslyckas på grund av ett ResourceContainerAccessDenied-fel , felmeddelandet "Åtkomst för en av de angivna Azure Blob-containererna nekas" |
4 | Anges i nodidentitetsreferens | Tillräckliga eller otillräckliga behörigheter | Skapas i poolen med hjälp av en annan hanterad identitet | Aktiviteten misslyckas på grund av ett ResourceContainerListMiscError-fel , felmeddelandet "Diverse fel påträffades när en av de angivna Azure Blob-containererna listades" |
I scenarier där blobhämtningsaktiviteten misslyckas går du till sidan Uppgifter i Azure Portal och väljer sedan namnet på aktiviteten som visas bredvid felkoden. Leta sedan upp rubriken Allmänt i aktivitetssidans navigeringsfönster, välj Egenskaper och välj sedan Json-vy. JSON-visningen av egenskaper visar motsvarande felmeddelande och annan information om den misslyckade aktiviteten. I scenario 4 misslyckas till exempel Felet ResourceContainerListMiscError på grund av felet "HTTP 400 Felaktig begäran". Det beror på att den hanterade identitet som definieras i nodidentitetsreferensen inte matchar någon av de hanterade identiteter som definieras i konfigurationen av poolidentiteten.
Kontrollera att din hanterade identitet kan komma åt Azure-resurser
Så här kontrollerar du i Windows att en hanterad identitet som har tilldelats en Azure Batch-nod har tillräcklig behörighet för att komma åt Azure-resurser (till exempel ett lagringskonto):
Kommentar
Den här proceduren emulerar det sista steget som du behöver göra för att hämta en token som har ett giltigt identitets-ID för att komma åt lagringskontot och söka efter tillräckliga behörigheter. Om identiteten inte definieras i nodidentitetsreferensen kan noden inte hämta identitets-ID:t. I så fall är hela processen redan blockerad innan du kan köra det sista steget. Innan du gör den här proceduren kontrollerar du att identiteten har definierats i nodidentitetsreferensen.
Använd RDP (Remote Desktop Protocol) för att ansluta till noden.
I Postman skickar du en GET-begäran som innehåller
Metadata: true
rubriken till följande URL:http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01& resource=https://storage.azure.com/& mi_res_id=/subscriptions/<subscription-guid>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned-identity-name>
169.254.169.254
IP-adressen kallas även Azure Instance Metadata Service (IMDS). IMDS innehåller information om den virtuella datorinstansen. Om du har den här vm-instansinformationen kan du använda den virtuella datorn för att begära token för hanterad identitet.Parametervärdet
mi_res_id
i URL:en är fetstilt. Det här är resurs-ID:t för den användartilldelade hanterade identiteten som du definierade i poolidentiteten. Följ dessa steg för att hitta resurs-ID:t tillsammans med klient-ID:t och huvudnamns-ID:t:I listan över batchkonton väljer du namnet på ditt batchkonto.
Leta upp rubriken Funktioner i navigeringsfönstret för batchkontot och välj sedan Pooler.
I listan över batchpooler väljer du namnet på batchpoolen.
Leta upp rubriken Allmänt i navigeringsfönstret i batchpoolen och välj sedan Egenskaper.
På sidan poolegenskaper väljer du Json-vy.
Leta upp listan i
identity
/userAssignedIdentities
JSON-texten. För den användartilldelade hanterade identiteten som du använder kopierar du värdena för följande egenskaper:resourceId
clientId
(ett GUID)principalId
(ett GUID)
När du har skickat URL:en i Postman innehåller JSON-svarets brödtext poster för
access_token
(en lång textsträng, även kallad ägartoken) ochclient_id
(ett GUID). Svarsvärdetclient_id
ska matcha detclientId
värde som du kopierade från egenskapssidan för batchpoolen.Kopiera den fullständiga ägartoken och testa den sedan i Postman genom att hämta bloben från ditt konto för automatisk lagring. I det här exemplet har den hanterade identiteten inte behörighet att komma åt lagringen. Därför svarar kontot för automatisk lagring genom att returnera ett HTTP 403-fel (AuthorizationPermissionMismatch-fel, meddelande "Den här begäran har inte behörighet att utföra den här åtgärden med den här behörigheten").
Kommentar
Huvudet x-ms-version krävs för att hämta bloben. Mer information finns i Hämta Blob-API för Azure Storage.
Ansvarsfriskrivning för information från tredje part
De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.
Ansvarsfriskrivning för tredje part
Microsoft tillhandahåller kontaktinformation från tredje part som hjälper dig att hitta ytterligare information om det här ämnet. Denna kontaktinformation kan ändras utan föregående meddelande. Microsoft garanterar inte att kontaktinformation från tredje part är korrekt.
Kontakta oss för att få hjälp
Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.