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
- Ha nem ismeri az Azure-erőforrások felügyelt identitását, tekintse meg az áttekintési szakaszt. Mindenképpen tekintse át a rendszer által hozzárendelt és a felhasználó által hozzárendelt felügyelt identitás közötti különbséget.
- Ha még nincs Azure-fiókja, a folytatás előtt regisztráljon egy ingyenes fiókra.
- A példaszkriptek futtatásához két lehetősége van:
- Használja az Azure Cloud Shellt, amelyet a kódblokkok jobb felső sarkában található Kipróbálás gombbal nyithat meg.
- Szkriptek helyi futtatásához telepítse a Microsoft Graph PowerShell SDK legújabb verzióját.
Felügyelt identitáshoz való hozzáférés hozzárendelése egy másik alkalmazás alkalmazásszerepköréhez
Felügyelt identitás engedélyezése Azure-erőforráson, például Azure-beli virtuális gépen.
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
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.
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.
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" } ] }
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
- Felügyelt identitás az Azure-erőforrásokhoz – áttekintés
- Ha engedélyezni szeretné a felügyelt identitást egy Azure-beli virtuális gépen, olvassa el a Felügyelt identitások konfigurálása Azure-erőforrásokhoz azure-beli virtuális gépen a PowerShell használatával című témakört.