Zelfstudie: Toegang krijgen tot Azure Resource Manager met een door de gebruiker toegewezen beheerde identiteit op een Windows-VM

In deze zelfstudie wordt uitgelegd hoe u een door de gebruiker toegewezen identiteit kunt maken, deze toewijzen aan een virtuele Windows-machine (VM) en die identiteit vervolgens gebruiken om toegang te krijgen tot de Azure Resource Manager-API. Beheerde service-identiteiten worden automatisch beheerd door Azure. Ze maken verificatie mogelijk voor services die Azure AD-verificatie ondersteunen, zonder dat er referenties in uw code hoeven te worden ingesloten.

In deze zelfstudie leert u procedures om het volgende te doen:

  • Een door de gebruiker toegewezen beheerde identiteit maken
  • Uw door de gebruiker toegewezen identiteit toewijzen aan uw Windows-VM
  • De door de gebruiker toegewezen identiteit toegang verlenen tot een resourcegroep in Azure Resource Manager
  • Een toegangstoken ophalen met behulp van de door de gebruiker toegewezen identiteit en daarmee Azure Resource Manager aanroepen
  • De eigenschappen van een resourcegroep lezen

Notitie

U wordt aangeraden de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Vereisten

Azure PowerShell lokaal configureren

Als u Azure PowerShell voor dit artikel lokaal wilt gebruiken (in plaats van Cloud Shell), voert u de volgende stappen uit:

  1. Installeer de meest recente versie van Azure PowerShell als u dat nog niet hebt gedaan.

  2. Meld u aan bij Azure:

    Connect-AzAccount
    
  3. Installeer de nieuwste versie van PowerShellGet.

    Install-Module -Name PowerShellGet -AllowPrerelease
    

    Mogelijk moet u Exit buiten de huidige PowerShell-sessie nadat u deze opdracht voor de volgende stap hebt uitgevoerd.

  4. Installeer de voorlopige versie van de Az.ManagedServiceIdentity-module en voer de aan de gebruiker toegewezen identiteitsbewerkingen in dit artikel uit:

    Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
    

Inschakelen

Voor een scenario dat is gebaseerd op een door de gebruiker toegewezen identiteit, moet u de volgende stappen uitvoeren:

  • Een identiteit maken
  • De zojuist gemaakte identiteit toewijzen

Identiteit maken

In deze sectie leert u hoe u een door een gebruiker toegewezen beheerde identiteit kunt maken. Een door de gebruiker toegewezen identiteit wordt als een zelfstandige Azure-resource gemaakt. Met behulp van New-AzUserAssignedIdentity maakt Azure een identiteit in uw Azure AD tenant die kan worden toegewezen aan een of meer Azure-service-exemplaren.

Belangrijk

Wanneer u aan gebruikers toegewezen beheerde identiteiten maakt, worden alleen alfanumerieke tekens (0-9, a-z, A-Z) en het afbreekstreepje (-) ondersteund. De toewijzing aan een virtuele machine of virtuele-machineschaalset verloopt goed als de naam wordt beperkt tot 24 tekens. Zie Veelgestelde vragen en bekende problemen voor meer informatie.

New-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1

Het antwoord bevat details voor de gemaakte door de gebruiker toegewezen identiteit, vergelijkbaar met het volgende voorbeeld. Noteer de waarden voor Id en ClientId voor de door de gebruiker toegewezen identiteit, aangezien deze worden gebruikt in volgende stappen:

{
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
}

Identiteit toewijzen

In deze sectie leert u hoe u de door de gebruiker toegewezen identiteit aan een Windows-VM kunt toewijzen Een door de gebruiker toegewezen identiteit kan worden gebruikt door clients op meerdere Azure-resources. Gebruik de volgende opdrachten om de door de gebruiker toegewezen identiteit toe te wijzen aan één VM. Gebruik de eigenschap Id die in de vorige stap is geretourneerd voor de parameter -IdentityID.

$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"

Toegang verlenen

In deze sectie leert u hoe u uw door de gebruiker toegewezen identiteit toegang kunt verlenen tot een resourcegroep in Azure Resource Manager. Beheerde identiteiten voor Azure-resources bieden identiteiten die uw code kan gebruiken om toegangstokens aan te vragen voor verificatie bij resource-API's die ondersteuning bieden voor Azure AD-verificatie. In deze zelfstudie krijgt uw code toegang tot de Azure Resource Manager-API.

Voordat uw code toegang tot de API kan krijgen, moet u de identiteit toegang geven tot een resource in Azure Resource Manager. In dit geval is dat de resourcegroep waarin de VM zich bevindt. Werk de waarde voor <SUBSCRIPTION ID> bij overeenkomstig uw omgeving.

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

Het antwoord bevat details voor de gemaakte roltoewijzing, vergelijkbaar met het volgende voorbeeld:

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

Toegang tot gegevens

Een toegangstoken opvragen

Voor de rest van de zelfstudie werkt u op de virtuele machine die we eerder hebben gemaakt.

  1. Meld u aan bij Azure Portal op https://portal.azure.com

  2. Navigeer in Azure Portal naar Virtuele machines, ga naar de virtuele Windows-machine en klik op de pagina Overzicht op Verbinden.

  3. Voer de gebruikersnaam en het wachtwoord in die u hebt gebruikt bij het maken van de Windows-VM.

  4. Nu u een Verbinding met extern bureaublad met de virtuele machine hebt gemaakt, opent u PowerShell in de externe sessie.

  5. Dien met behulp van Invoke-WebRequest van Powershell een aanvraag in bij de lokale beheerde identiteiten om een toegangstoken voor Azure Resource Manager op te halen voor het Azure-resources-eindpunt. De waarde voor client_id is de waarde die wordt geretourneerd wanneer u de door de gebruiker toegewezen beheerde identiteit maakt.

    $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
    

Leeseigenschappen

Gebruik het in de vorige stap opgehaalde toegangstoken om toegang te krijgen tot Azure Resource Manager en lees de eigenschappen van de resourcegroep waarvoor u uw door de gebruiker toegewezen identiteit toegang hebt verleend. Vervang door de abonnements-id <SUBSCRIPTION ID> van uw omgeving.

(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

Het antwoord bevat de gegevens van de specifieke resourcegroep, vergelijkbaar met het volgende voorbeeld:

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

Volgende stappen

In deze zelfstudie hebt u geleerd een door de gebruiker toegewezen identiteit te maken en deze te koppelen aan een virtuele machine in Azure voor toegang tot de Azure Resource Manager-API. Zie voor meer informatie over Azure Resource Manager: