Asignar permisos a una identidad administrada con Graph PowerShell
Asignar permisos a identidades administradas en Microsoft Entra puede ser un poco complicado. Desafortunadamente, no hay opciones para asignar permisos mediante el portal de administración de Entra; en cambio, el método preferido es utilizar Microsoft Graph PowerShell.
Requisitos
Para ejecutar los scripts de este tutorial, asegúrese de cumplir con los siguientes requisitos:
- Tenga instalada la última versión del SDK de Microsoft Graph PowerShell.
- Tener el rol de administrador global para dar consentimiento a los permisos.
- Asegúrese de poder conectarse a la aplicación empresarial integrada Microsoft Graph Command Line Tool.
Asignar permisos
Para asignar permisos a una identidad administrada mediante Microsoft Graph PowerShell, comience conectándose a Microsoft Graph con los siguientes permisos:
- Aplicación.Leer.Todo
- AppRoleAssignment.ReadWrite.All
Connect-MgGraph -Scopes Application.Read.All, AppRoleAssignment.ReadWrite.AllNecesitará conocer el ID de la identidad administrada de destino; puede obtenerlo en el portal de administración de Microsoft Entra o puede encontrarlo mediante PowerShell. Utilice el siguiente ejemplo con PowerShell, modificando el valor de la variable $MIName para que coincida con el nombre de su identidad administrada:
$MIName = "Managed Identity Name"
$ManagedIdentity = (Get-MgServicePrincipal -Filter "DisplayName eq '$MIName'")Ahora que ha almacenado su identidad administrada, necesita almacenar información sobre los permisos que desea asignar a la identidad administrada. En la primera línea del código siguiente, reemplace cada entrada de permiso con una lista de los permisos que necesita. La segunda línea recopilará los objetos de permisos del recurso de Microsoft Graph, permitiéndonos reutilizarlos al asignarlos a nuestra Identidad administrada y la tercera línea almacenará la ID del recurso de Microsoft Graph.
$permissions = "permission1", "permission2", "permission3"
$getPerms = (Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'").approles | Where {$_.Value -in $permissions}
$GraphID = (Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'").id
Ahora use un bucle foreach con el cmdlet New-MgServicePrincipalAppRoleAssignment para asignarlos a su identidad administrada.
foreach ($perm in $getPerms){
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ManagedIdentity.Id `
-PrincipalId $ManagedIdentity.Id -ResourceId $GraphID -AppRoleId $perm.id
}Ejemplo de guión completo
Connect-MgGraph -Scopes Application.Read.All, AppRoleAssignment.ReadWrite.All
$ManagedIdentityName = "My Managed Identity"
$permissions = "Mail.send", "AuditLog.Read.All"
$getPerms = (Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'").approles | Where {$_.Value -in $permissions}
$ManagedIdentity = (Get-MgServicePrincipal -Filter "DisplayName eq '$ManagedIdentityName'")
$GraphID = (Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'").id
foreach ($perm in $getPerms){
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ManagedIdentity.Id `
-PrincipalId $ManagedIdentity.Id -ResourceId $GraphID -AppRoleId $perm.id
}