Share via


Toegang tot een beheerde identiteit toewijzen aan een toepassingsrol met behulp van Azure CLI

Beheerde identiteiten voor Azure-resources bieden Azure-services een identiteit in Microsoft Entra-id. Ze werken zonder referenties in uw code nodig te hebben. Azure-services gebruiken deze identiteit om te verifiëren bij services die ondersteuning bieden voor Microsoft Entra-verificatie. Toepassingsrollen bieden een vorm van op rollen gebaseerd toegangsbeheer en stellen een service in staat autorisatieregels te implementeren.

Notitie

De tokens die uw toepassing ontvangt, worden in de cache opgeslagen door de onderliggende infrastructuur. Dit betekent dat wijzigingen in de rollen van de beheerde identiteit veel tijd in beslag kunnen nemen. Zie Beperking van het gebruik van beheerde identiteiten voor autorisatie voor meer informatie.

In dit artikel leert u hoe u een beheerde identiteit toewijst aan een toepassingsrol die wordt weergegeven door een andere toepassing met behulp van Azure CLI.

Vereisten

Toegang tot een beheerde identiteit toewijzen aan de app-rol van een andere toepassing

  1. Schakel beheerde identiteit in voor een Azure-resource, zoals een Azure-VM.

  2. Zoek de object-id van de service-principal van de beheerde identiteit.

    Voor een door het systeem toegewezen beheerde identiteit kunt u de object-id vinden in de Azure-portal op de pagina Identiteit van de resource. U kunt ook het volgende script gebruiken om de object-id te vinden. U hebt de resource-id nodig van de resource die u in stap 1 hebt gemaakt. Deze is beschikbaar in de Azure-portal op de pagina Eigenschappen van de resource.

    resourceIdWithManagedIdentity="/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.Compute/virtualMachines/{my virtual machine name}"
    
    oidForMI=$(az resource show --ids $resourceIdWithManagedIdentity --query "identity.principalId" -o tsv | tr -d '[:space:]')
    echo "object id for managed identity is: $oidForMI"
    

    Voor een door de gebruiker toegewezen beheerde identiteit kunt u de object-id van de beheerde identiteit vinden in de Azure-portal op de pagina Overzicht van de resource. U kunt ook het volgende script gebruiken om de object-id te vinden. U hebt de resource-id van de door de gebruiker toegewezen beheerde identiteit nodig.

    userManagedIdentityResourceId="/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{my managed identity name}"
    
    oidForMI=$(az resource show --id $userManagedIdentityResourceId --query "properties.principalId" -o tsv | tr -d '[:space:]')
    echo "object id for managed identity is: $oidForMI"
    
  3. Maak een nieuwe toepassingsregistratie om de service te vertegenwoordigen waarnaar uw beheerde identiteit een aanvraag verzendt. Als de API of service die de app-rol beschikbaar maakt voor de beheerde identiteit al een service-principal in uw Microsoft Entra-tenant heeft, slaat u deze stap over.

  4. Zoek de object-id van de service-principal van de servicetoepassing. U kunt deze vinden met behulp van de Azure-portal. Ga naar Microsoft Entra ID en open de pagina Bedrijfstoepassingen , zoek de toepassing en zoek de object-id. U kunt de object-id van de service-principal ook vinden op basis van de weergavenaam met behulp van het volgende script:

    appName="{name for your application}"
    serverSPOID=$(az ad sp list --filter "displayName eq '$appName'" --query '[0].id' -o tsv | tr -d '[:space:]')
    echo "object id for server service principal is: $serverSPOID"
    

    Notitie

    Weergavenamen voor toepassingen zijn niet uniek, dus controleer of u de service-principal van de juiste toepassing ophaalt.

    U kunt de object-id ook vinden op basis van de unieke toepassings-id voor uw toepassingsregistratie:

    appID="{application id for your application}"
    serverSPOID=$(az ad sp list --filter "appId eq '$appID'" --query '[0].id' -o tsv | tr -d '[:space:]')
    echo "object id for server service principal is: $serverSPOID"
    
  5. Voeg een app-rol toe aan de toepassing die u in stap 3 hebt gemaakt. U kunt de rol maken met behulp van Azure Portal of Microsoft Graph. U kunt bijvoorbeeld een app-rol als volgt toevoegen:

    {
        "allowedMemberTypes": [
            "Application"
        ],
        "displayName": "Read data from MyApi",
        "id": "0566419e-bb95-4d9d-a4f8-ed9a0f147fa6",
        "isEnabled": true,
        "description": "Allow the application to read data as itself.",
        "value": "MyApi.Read.All"
    }
    
  6. Wijs de app-rol toe aan de beheerde identiteit. U hebt de volgende informatie nodig om de app-rol toe te wijzen:

    • managedIdentityObjectId: de object-id van de service-principal van de beheerde identiteit, die u in stap 2 hebt gevonden.
    • serverServicePrincipalObjectId: de object-id van de service-principal van de servertoepassing, die u in stap 4 hebt gevonden.
    • appRoleId: de id van de app-rol die wordt weergegeven door de server-app, die u in stap 5 hebt gegenereerd – in het voorbeeld is de app-rol-id 0566419e-bb95-4d9d-a4f8-ed9a0f147fa6.

    Voer het volgende script uit om de roltoewijzing toe te voegen. Houd er rekening mee dat deze functionaliteit niet rechtstreeks beschikbaar is in de Azure CLI en dat hier een REST-opdracht wordt gebruikt:

    roleguid="0566419e-bb95-4d9d-a4f8-ed9a0f147fa6"
    az rest -m POST -u https://graph.microsoft.com/v1.0/servicePrincipals/$oidForMI/appRoleAssignments -b "{\"principalId\": \"$oidForMI\", \"resourceId\": \"$serverSPOID\",\"appRoleId\": \"$roleguid\"}"
    

Volgende stappen