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. Det gör det möjligt att autentisera mot tjänster som stöder Azure AD-autentisering, utan att du behöver bädda in autentiseringsuppgifter i din kod.

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

Anteckning

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 om du vill 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 Azure AD klientorganisation som kan tilldelas till en eller flera Azure-tjänstinstanser.

Viktigt

När du skapar användartilldelade hanterade identiteter stöds endast alfanumeriska tecken (0–9, a–z och A–Z) och bindestreck (-). 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 ger 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 Azure AD 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 detta fall den resursgrupp som den virtuella datorn finns i. Uppdatera värdet för <SUBSCRIPTION ID> 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/80c696ff-5efa-4909-a64d-f1b616f423ca/resourcegroups/myResourceGroupVM/providers/Microsoft.Authorization/roleAssignments/f9cc753d-265e-4434-ae19-0c3e2ead62ac
Scope: /subscriptions/80c696ff-5efa-4909-a64d-f1b616f423ca/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

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

  1. Logga in på Azure-portalen på https://portal.azure.com

  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-WebRequest och skicka en begäran till den lokala slutpunkten för hanterade identiteter för Azure-resurser 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äsa egenskaper

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:t 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: