Felügyelt identitáshoz való hozzáférés hozzárendelése egy alkalmazásszerepkörhöz
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.
Feljegyzés
Az alkalmazás által kapott jogkivonatokat a mögöttes infrastruktúra gyorsítótárazza. Ez azt jelenti, hogy a felügyelt identitás szerepköreinek bármilyen módosítása jelentős időt vehet igénybe a feldolgozáshoz. 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 át az Azure-erőforrások felügyelt identitását ismertető témakört.
- 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.
Felügyelt identitáshozzáférés hozzárendelése egy másik alkalmazás alkalmazásszerepköréhez a PowerShell használatával
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á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, amelybe 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. Például abban az esetben, ha hozzáférést szeretne adni a felügyelt identitásnak a Microsoft Graph API-hoz.
Keresse meg a szolgáltatásalkalmazás szolgáltatásnév objektumazonosítóját. Ezt az Azure Portalon találja.
- Nyissa meg például a Microsoft Entra-azonosítót, és nyissa meg a Nagyvállalati alkalmazások lapot. Ezután 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
Feljegyzé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 az előző lépésben létrehozott alkalmazáshoz. Ezután létrehozhatja a szerepkört az Azure Portalon vagy a Microsoft Graph használatával.
- 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 az előző 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.00000000-0000-0000-0000-000000000000
- 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
Példaszkript befejezése
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
Felügyelt identitáshoz való hozzáférés hozzárendelése egy másik alkalmazás alkalmazásszerepköréhez a parancssori felület használatával
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
Felügyelt identitás engedélyezése Azure-erőforrásokon, például Azure-beli virtuális gépeken.
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 az alábbi szkripttel is megkeresheti. Szüksége lesz az előző 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}" oidForMI=$(az resource show --ids $resourceIdWithManagedIdentity --query "identity.principalId" -o tsv | tr -d '[:space:]') echo "object id for managed identity is: $oidForMI"
- 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 az alábbi 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}" oidForMI=$(az resource show --id $userManagedIdentityResourceId --query "properties.principalId" -o tsv | tr -d '[:space:]') echo "object id for managed identity is: $oidForMI"
Hozzon létre egy új alkalmazásregisztrációt annak a szolgáltatásnak a megjelenítéséhez, amelyhez 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.
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 a megjelenítendő név alapján is megtalálhatja a következő szkripttel:
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"
Feljegyzé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.
Az objektumazonosítót az alkalmazásregisztráció egyedi alkalmazásazonosítójával is megtalálhatja:
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"
Adjon hozzá egy alkalmazásszerepkört az előző 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 ilyen alkalmazásszerepkört:
{ "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" }
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.00000000-0000-0000-0000-000000000000
A szerepkör-hozzárendelés hozzáadásához hajtsa végre a következő szkriptet. Ez a funkció nem érhető el közvetlenül az Azure CLI-n, és itt egy REST-parancsot használ:
roleguid="00000000-0000-0000-0000-000000000000" az rest -m POST -u https://graph.microsoft.com/v1.0/servicePrincipals/$oidForMI/appRoleAssignments -b "{\"principalId\": \"$oidForMI\", \"resourceId\": \"$serverSPOID\",\"appRoleId\": \"$roleguid\"}"
Következő 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 az Azure-beli virtuális gépeken lévő Azure-erőforrások felügyelt identitásainak konfigurálását.