Självstudie: Använda en användartilldelad hanterad identitet på en virtuell Windows-dator för att få åtkomst till Azure Resource Manager

Den här självstudien beskriver hur du skapar en användartilldelad identitet, hur du tilldelar den till en virtuell Windows-dator (VM) och hur du sedan använder identiteten för att få åtkomst till Azure Resource Manager-API:et. Hanterade tjänstidentiteter hanteras automatiskt av Azure. De möjliggör autentisering till tjänster som stöder Microsoft Entra-autentisering, utan att behöva bädda in autentiseringsuppgifter i koden.

Du lär dig att:

  • Skapa en användartilldelad hanterad identitet
  • Tilldela en användartilldelad identitet till din virtuella Windows-dator
  • Ge den användartilldelade identiteten åtkomst till en resursgrupp i Azure Resource Manager
  • Hämta en åtkomsttoken med hjälp av den användartilldelade identiteten och använd den för att anropa Azure Resource Manager
  • Läsa egenskaper för en resursgrupp

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.

Förutsättningar

Konfigurera Azure PowerShell lokalt

Utför följande steg för att använda Azure PowerShell lokalt för den här artikeln (i stället för att använda Cloud Shell):

  1. Installera den senaste versionen av Azure PowerShell om du inte redan har gjort det.

  2. Logga in på Azure:

    Connect-AzAccount
    
  3. Installera den senaste versionen av PowerShellGet.

    Install-Module -Name PowerShellGet -AllowPrerelease
    

    Du kan behöva Exit avsluta den aktuella PowerShell-sessionen när du har kört det här kommandot för nästa steg.

  4. Installera förhandsversionen av modulen Az.ManagedServiceIdentity för att utföra de användartilldelade hanterade identitetsåtgärderna i den här artikeln:

    Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
    

Aktivera

För ett scenario som baseras på en användartilldelad identitet måste du utföra följande steg:

  • Skapa en identitet
  • Tilldela den nyligen skapade identiteten

Skapa identitet

Det här avsnittet visar hur du skapar en användartilldelad identitet. En användartilldelad identitet skapas som en fristående Azure-resurs. Med hjälp av New-AzUserAssignedIdentity skapar Azure en identitet i din Microsoft Entra-klientorganisation som kan tilldelas till en eller flera Azure-tjänstinstanser.

Viktigt!

När du skapar användartilldelade hanterade identiteter måste namnet börja med en bokstav eller siffra och kan innehålla en kombination av alfanumeriska tecken, bindestreck (-) och understreck (_). För att tilldelningen till en virtuell dator eller vm-skalningsuppsättning ska fungera korrekt är namnet begränsat till 24 tecken. Mer information finns i Vanliga frågor och kända problem.

New-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1

Svaret innehåller information om den användartilldelade identiteten som skapats, liknande den i följande exempel. Anteckna värdena Id och ClientId för din användartilldelade identitet, eftersom de används i efterföljande steg:

{
Id: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1
ResourceGroupName : myResourceGroupVM
Name: ID1
Location: westus
TenantId: 733a8f0e-ec41-4e69-8ad8-971fc4b533f8
PrincipalId: e591178e-b785-43c8-95d2-1397559b2fb9
ClientId: af825a31-b0e0-471f-baea-96de555632f9
ClientSecretUrl: https://control-westus.identity.azure.net/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1/credentials?tid=733a8f0e-ec41-4e69-8ad8-971fc4b533f8&oid=e591178e-b785-43c8-95d2-1397559b2fb9&aid=af825a31-b0e0-471f-baea-96de555632f9
Type: Microsoft.ManagedIdentity/userAssignedIdentities
}

Tilldela identitet

Det här avsnittet visar hur du tilldelar den användartilldelade identiteten till en virtuell Windows-dator. En användartilldelad identitet kan användas av klienter på flera Azure-resurser. Använd följande kommandon för att tilldela den användartilldelade identiteten till en enskild virtuell dator. Använd egenskapen Id som returnerades i föregående steg för -IdentityID-parametern.

$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVM -ResourceGroupName TestRG -VM $vm -IdentityType "UserAssigned" -IdentityID "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"

Bevilja åtkomst

Det här avsnittet visar hur du beviljar din användartilldelade identitet åtkomst till en resursgrupp i Azure Resource Manager. Hanterade identiteter för Azure-resurser tillhandahåller identiteter som din kod kan använda för att begära åtkomsttoken för att autentisera mot resurs-API:er som stöder Microsoft Entra-autentisering. I den här självstudiekursen använder koden Azure Resource Manager-API:et.

Innan koden kan komma åt API:et måste du ge identiteten åtkomst till en resurs i Azure Resource Manager. I det här fallet den resursgrupp som den virtuella datorn finns i. Uppdatera värdet för <SUBSCRIPTIONID> baserat på din miljö.

$spID = (Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1).principalid
New-AzRoleAssignment -ObjectId $spID -RoleDefinitionName "Reader" -Scope "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/"

Svaret innehåller information om rolltilldelningen som skapats, liknande den i följande exempel:

RoleAssignmentId: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.Authorization/roleAssignments/f9cc753d-265e-4434-ae19-0c3e2ead62ac
Scope: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM
DisplayName: ID1
SignInName:
RoleDefinitionName: Reader
RoleDefinitionId: acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId: e591178e-b785-43c8-95d2-1397559b2fb9
ObjectType: ServicePrincipal
CanDelegate: False

Åtkomst till data

Hämta en åtkomsttoken

Dricks

Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.

Under resten av självstudiekursen arbetar du från den virtuella datorn som vi skapade tidigare.

  1. Logga in på Azure-portalen.

  2. Gå till Virtuella datorer på portalen, gå till den virtuella Windows-datorn och klicka sedan på Anslut under Översikt.

  3. Ange det användarnamn och lösenord som du använde när du skapade den virtuella Windows-datorn.

  4. Nu när du har skapat en anslutning till fjärrskrivbord med den virtuella datorn öppnar du PowerShell i fjärrsessionen.

  5. Använd PowerShells Invoke-WebRequestoch gör en begäran till de lokala hanterade identiteterna för Azure-resursers slutpunkt för att hämta en åtkomsttoken för Azure Resource Manager. Värdet client_id är det värde som returnerades när du skapade den användartilldelade hanterade identiteten.

    $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=af825a31-b0e0-471f-baea-96de555632f9&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"}
    $content = $response.Content | ConvertFrom-Json
    $ArmToken = $content.access_token
    

Läsegenskaper

Använd den åtkomsttoken som du hämtade i föregående steg för att komma åt Azure Resource Manager, och läs egenskaperna för den resursgrupp som du gav den användartilldelade identiteten åtkomst till. Ersätt <SUBSCRIPTION ID> med prenumerations-ID för din miljö.

(Invoke-WebRequest -Uri https://management.azure.com/subscriptions/80c696ff-5efa-4909-a64d-f1b616f423ca/resourceGroups/myResourceGroupVM?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{Authorization ="Bearer $ArmToken"}).content

Svaret innehåller information om den specifika resursgruppen, liknande den i följande exempel:

{"id":"/subscriptions/<SUBSCRIPTIONID>/resourceGroups/myResourceGroupVM","name":"myResourceGroupVM","location":"eastus","properties":{"provisioningState":"Succeeded"}}

Nästa steg

I den här självstudien har du lärt dig hur du skapar en användartilldelad identitet och kopplar den till en virtuell Azure-dator för att få åtkomst till Azure Resource Manager-API:et. Mer information om Azure Resource Manager finns här: