Felügyelt identitáshozzáférés hozzárendelése alkalmazásszerepkörhöz a PowerShell használatával

Az Azure-erőforrások felügyelt identitásai identitást biztosítanak az Azure-szolgáltatások számára a Microsoft Entra ID-ban. Anélkül működnek, hogy hitelesítő adatokra van szükségük a kódban. Az Azure-szolgáltatások ezt az identitást használják a Microsoft Entra-hitelesítést támogató szolgáltatások hitelesítésére. Az alkalmazásszerepkörök a szerepköralapú hozzáférés-vezérlés egy formáját biztosítják, és lehetővé teszik, hogy egy szolgáltatás engedélyezési szabályokat implementáljon.

Megjegyzés:

Az alkalmazás által kapott jogkivonatokat a mögöttes infrastruktúra gyorsítótárazza, ami azt jelenti, hogy a felügyelt identitás szerepköreinek bármilyen módosítása jelentős időt vehet igénybe. További információ: A felügyelt identitások hitelesítéshez való használatának korlátozása.

Ebből a cikkből megtudhatja, hogyan rendelhet hozzá felügyelt identitást egy másik alkalmazás által közzétett alkalmazásszerepkörhöz a Microsoft Graph PowerShell SDK használatával.

Előfeltételek

Felügyelt identitáshoz való hozzáférés hozzárendelése egy másik alkalmazás alkalmazásszerepköréhez

  1. Felügyelt identitás engedélyezése Azure-erőforráson, például Azure-beli virtuális gépen.

  2. Keresse meg a felügyelt identitás szolgáltatásnév objektumazonosítóját.

    A rendszer által hozzárendelt felügyelt identitások esetében az objektumazonosító az Azure Portalon található az erőforrás Identitás lapján. Az objektumazonosítót a következő PowerShell-szkripttel is megkeresheti. Szüksége lesz az 1. lépésben létrehozott erőforrás erőforrás-azonosítójára, amely az Azure Portalon érhető el az erőforrás Tulajdonságok lapján.

    $resourceIdWithManagedIdentity = '/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.Compute/virtualMachines/{my virtual machine name}'
    (Get-AzResource -ResourceId $resourceIdWithManagedIdentity).Identity.PrincipalId
    

    Felhasználó által hozzárendelt felügyelt identitás esetén a felügyelt identitás objektumazonosítóját az Azure Portalon találja az erőforrás Áttekintés lapján. Az objektumazonosítót a következő PowerShell-szkripttel is megkeresheti. Szüksége lesz a felhasználó által hozzárendelt felügyelt identitás erőforrás-azonosítójára.

    $userManagedIdentityResourceId = '/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{my managed identity name}'
    (Get-AzResource -ResourceId $userManagedIdentityResourceId).Properties.PrincipalId
    
  3. Hozzon létre egy új alkalmazásregisztrációt annak a szolgáltatásnak a megjelenítéséhez, amelyre a felügyelt identitás kérést küld. Ha az alkalmazásszerepkör-támogatást a felügyelt identitásnak elérhetővé tevő API vagy szolgáltatás már rendelkezik szolgáltatásnévvel a Microsoft Entra-bérlőben, hagyja ki ezt a lépést. Ha például hozzáférést szeretne adni a felügyelt identitásnak a Microsoft Graph API-hoz, kihagyhatja ezt a lépést.

  4. Keresse meg a szolgáltatásalkalmazás szolgáltatásnév objektumazonosítóját. Ezt az Azure Portalon találja. Nyissa meg a Microsoft Entra-azonosítót, és nyissa meg a Vállalati alkalmazások lapot, majd keresse meg az alkalmazást, és keresse meg az objektumazonosítót. A szolgáltatásnév objektumazonosítóját megjelenítendő neve alapján is megtalálhatja a következő PowerShell-szkripttel:

    $serverServicePrincipalObjectId = (Get-MgServicePrincipal -Filter "DisplayName eq '$applicationName'").Id
    

    Megjegyzés:

    Az alkalmazások megjelenítendő nevei nem egyediek, ezért ellenőriznie kell, hogy a megfelelő alkalmazás szolgáltatásnevet szerezte-e be.

  5. Adjon hozzá egy alkalmazásszerepkört a 3. lépésben létrehozott alkalmazáshoz. A szerepkört az Azure Portalon vagy a Microsoft Graph használatával hozhatja létre. Hozzáadhat például egy alkalmazásszerepkört a következő lekérdezés futtatásával a Graph Explorerben:

    PATCH /applications/{id}/
    
    {
        "appRoles": [
            {
                "allowedMemberTypes": [
                    "User",
                    "Application"
                ],
                "description": "Read reports",
                "id": "1e250995-3081-451e-866c-0f6efef9c638",
                "displayName": "Report reader",
                "isEnabled": true,
                "value": "report.read"
            }
        ]
    }
    
  6. Rendelje hozzá az alkalmazásszerepkört a felügyelt identitáshoz. Az alkalmazásszerepkör hozzárendeléséhez a következő információkra lesz szüksége:

    • managedIdentityObjectId: a felügyelt identitás szolgáltatásnévének objektumazonosítója, amelyet a 2. lépésben talált.
    • serverServicePrincipalObjectId: a kiszolgálóalkalmazás szolgáltatásnévének objektumazonosítója, amelyet a 4. lépésben talált.
    • appRoleId: a kiszolgálóalkalmazás által közzétett alkalmazásszerepkör azonosítója, amelyet az 5. lépésben hozott létre – a példában az alkalmazásszerepkör azonosítója.0566419e-bb95-4d9d-a4f8-ed9a0f147fa6

    A szerepkör-hozzárendelés hozzáadásához hajtsa végre a következő PowerShell-parancsot:

    New-MgServicePrincipalAppRoleAssignment `
        -ServicePrincipalId $serverServicePrincipalObjectId `
        -PrincipalId $managedIdentityObjectId `
        -ResourceId $serverServicePrincipalObjectId `
        -AppRoleId $appRoleId
    

Teljes szkript

Ez a példaszkript bemutatja, hogyan rendelhet hozzá egy Azure-webalkalmazás felügyelt identitását egy alkalmazásszerepkörhöz.

# Install the module.
# Install-Module Microsoft.Graph -Scope CurrentUser

# Your tenant ID (in the Azure portal, under Azure Active Directory > Overview).
$tenantID = '<tenant-id>'

# The name of your web app, which has a managed identity that should be assigned to the server app's app role.
$webAppName = '<web-app-name>'
$resourceGroupName = '<resource-group-name-containing-web-app>'

# The name of the server app that exposes the app role.
$serverApplicationName = '<server-application-name>' # For example, MyApi

# The name of the app role that the managed identity should be assigned to.
$appRoleName = '<app-role-name>' # For example, MyApi.Read.All

# Look up the web app's managed identity's object ID.
$managedIdentityObjectId = (Get-AzWebApp -ResourceGroupName $resourceGroupName -Name $webAppName).identity.principalid

Connect-MgGraph -TenantId $tenantId -Scopes 'Application.Read.All','Application.ReadWrite.All','AppRoleAssignment.ReadWrite.All','Directory.AccessAsUser.All','Directory.Read.All','Directory.ReadWrite.All'

# Look up the details about the server app's service principal and app role.
$serverServicePrincipal = (Get-MgServicePrincipal -Filter "DisplayName eq '$serverApplicationName'")
$serverServicePrincipalObjectId = $serverServicePrincipal.Id
$appRoleId = ($serverServicePrincipal.AppRoles | Where-Object {$_.Value -eq $appRoleName }).Id

# Assign the managed identity access to the app role.
New-MgServicePrincipalAppRoleAssignment `
    -ServicePrincipalId $serverServicePrincipalObjectId `
    -PrincipalId $managedIdentityObjectId `
    -ResourceId $serverServicePrincipalObjectId `
    -AppRoleId $appRoleId

További lépések