Búsqueda de sitios web

Consentimiento del administrador de Microsoft Graph PowerShell


El concepto de Consentimiento del administrador puede resultar un poco confuso y la documentación oficial de Microsoft hace un trabajo terrible al explicarlo.

Este artículo responderá las siguientes preguntas:

  • ¿Cuál es el propósito del consentimiento del administrador?
  • ¿Cómo funciona el consentimiento del administrador?
  • ¿Cómo se revisa la configuración actual de Consentimiento del administrador?
  • ¿Cómo se configura el consentimiento del administrador?

Usaremos Easy365Manager como caso de uso para responder estas preguntas.

Easy365Manager es un complemento para usuarios y computadoras de Active Directory que (versión 1.5 y posteriores) usa Microsoft Graph PowerShell para permitir la administración de Office 365 directamente desde AD.

¿Cuál es el propósito del consentimiento del administrador?

El objetivo del Consentimiento del administrador es mantener un control estricto de las acciones que pueden realizar las aplicaciones de Azure, como Microsoft Graph PowerShell u otras aplicaciones de Microsoft o de terceros.

Con acceso delegado, la aplicación Microsoft Graph PowerShell puede ejecutar sus comandos de PowerShell en su contexto de seguridad. Esto tiene dos ventajas principales:

  • Sólo puedes realizar acciones para las que tienes los derechos
  • Cualquier acción realizada se registra con su ID en el registro de auditoría unificado.

Pero permitir que aplicaciones de terceros (o Microsoft) ejecuten comandos en su contexto de seguridad no debe tomarse a la ligera; es por eso que existe una capa adicional de control: el Consentimiento.

El consentimiento actúa como una lista blanca que permite a una identidad (por ejemplo, adm.msk@easy365manager.com) ejercer permisos (por ejemplo, User.ReadWrite.All) en un recurso (por ejemplo, Microsoft Graph).

Un consentimiento no otorga ningún permiso. Solo le permite utilizar sus permisos existentes.

Un consentimiento puede ser un Consentimiento de usuario otorgado a un usuario individual o puede ser un Consentimiento de administrador otorgado por un administrador a todos los usuarios.

¿Cómo funciona el consentimiento del administrador?

Siempre que utilice una aplicación de Azure, como Microsoft Graph PowerShell, alguien debe dar su consentimiento para que la aplicación actúe en su nombre utilizando sus permisos.

El consentimiento puede realizarse como un Consentimiento del usuario (usted mismo da su consentimiento, asumiendo que tiene los derechos para hacerlo), o puede ser un Consentimiento del administrador (un administrador da su consentimiento en su nombre).

Usando Microsoft Graph PowerShell como ejemplo, así es como se hace:

Puede notar un gran problema aquí:

Si un administrador ya ha otorgado un Consentimiento de usuario, ya no se le presentará la opción de otorgar un Consentimiento de administrador.

¿Por qué es esto un problema?

Digamos que un administrador se ha otorgado un Consentimiento de usuario para administrar usuarios de Office 365. Más tarde decide implementar un Consentimiento de administrador para permitir que todo su personal ejecute algunos scripts de PowerShell para modificar las propiedades del usuario.

Dado que el Consentimiento del usuario ha bloqueado su camino para otorgar el consentimiento del administrador, y dado que el Portal de Azure no incluye una GUI para la gestión del consentimiento, ¡ahora se encuentra atrapada con un PowerShell realmente desagradable para solucionar este problema!

Continúe leyendo para obtener más información sobre esto...

¿Cómo se revisa la configuración de consentimiento del administrador?

La configuración actual de consentimiento de su aplicación es visible a través del Portal de Azure y PowerShell

Para revisar la configuración de consentimiento mediante Azure Portal, vaya a Aplicaciones empresariales.

Luego seleccione Microsoft Graph PowerShell y haga clic en Permisos en la sección Seguridad.

(Si no puede encontrar Microsoft Graph PowerShell, lea este artículo).

Consentimiento del administrador le mostrará el consentimiento del administrador (consentimiento otorgado a todos los usuarios por un administrador).

Consentimiento del usuario le mostrará el consentimiento personal otorgado a usuarios individuales.

¡La lista de permisos es una lista de solo lectura sin opción de realizar modificaciones!

Ver la configuración de consentimiento de la aplicación actual usando PowerShell es un poco más tedioso:

Debe identificar el ID de la entidad de servicio de Microsoft Graph PowerShell y debe identificar el ID de la entidad de servicio de Microsoft Graph (ya que, en teoría, los permisos podrían asignarse a otros recursos).

También necesita saber qué derechos se necesitan para extraer la información para poder conectarse con el alcance apropiado (lea este artículo para obtener más información).

Este es un script de ejemplo para obtener la configuración de consentimiento para la aplicación Microsoft Graph PowerShell (asignada en el recurso de Microsoft Graph):

Connect-MgGraph -Scopes "DelegatedPermissionGrant.ReadWrite.All Directory.AccessAsUser.All Directory.Read.All"
$MSGraphPS_AppId = "14d82eec-204b-4c2f-b7e8-296a70dab67e"
$MSGraph_AppId = "00000003-0000-0000-c000-000000000000"
$MicrosoftPowerShellGraph_Id = (Get-MgServicePrincipal -All | Where-Object { $_.AppId -eq $MSGraphPS_AppId}).Id
$Microsoftgraph_Id = (Get-MgServicePrincipal -All | Where-Object { $_.AppId -eq $MSGraph_AppId}).Id
Get-MgOauth2PermissionGrant -All | Where-Object { $_.clientId -eq $MicrosoftPowerShellGraph_Id -and $_.ResourceId -eq $Microsoftgraph_Id} | ft PrincipalId,Scope

El resultado del script será similar a este:

PrincipalId                           Scope
-----------                           -----
                                      User.ReadWrite.All Group.ReadWrite.All Domain.Read.All Directory.ReadWrite.All offline_access
10f136c2-55f0-41c4-9c96-6bab410c7c54  DelegatedPermissionGrant.ReadWrite.All Directory.AccessAsUser.All Directory.Read.All openid profile offline_access Directory.ReadWrite.All User.Read email

Los consentimientos del administrador se enumeran con un PrincipalId vacío (ya que se aplican a todos).

Los consentimientos del usuario se enumeran con un PrincipalId que identifica al usuario.

¿Cómo se configura el consentimiento del administrador?

Como se vio en el diagrama de flujo anterior, es muy fácil otorgar un Consentimiento de administrador CUANDO NO SE HA otorgado un Consentimiento de usuario anteriormente.

Simplemente conéctese a Microsoft Graph PowerShell con el alcance deseado, por ejemplo:

Connect-MgGraph -Scopes "User.ReadWrite.All,Group.ReadWrite.All"

Luego seleccione “Consentimiento en nombre de su organización”:

Sin embargo, si ya tiene un Consentimiento de usuario, debe configurar el Consentimiento de administrador con PowerShell.

Este es un procedimiento muy engorroso ya que el Consentimiento del administrador de múltiples valores se escribe en un atributo de un solo valor. Por lo tanto, cualquier Consentimiento de administrador existente se elimina de la aplicación cuando aplica un nuevo Consentimiento de administrador.

Entonces debes considerar lo siguiente:

  • Identifique los alcances que no están incluidos en su solicitud actual pero que deben mantenerse
  • Identifique ámbitos que ya estén configurados con un privilegio mayor que el que está aplicando.

    • Si, por ejemplo, está aplicando "User.Read.All" pero ya existe "User.ReadWrite.All", entonces probablemente desee conservarlo.

La mala interfaz para gestionar los consentimientos de las aplicaciones empresariales pondrá a muchos administradores en una situación difícil… Lo cual no tiene ningún sentido:

Con la inclusión de Microsoft Graph PowerShell como aplicación empresarial (y las secuencias de comandos de MSOnline y AzureAD eliminadas a principios de 2023), la gestión de los derechos básicos de secuencias de comandos debería ser accesible para administradores de todos los niveles (y no solo para programadores semi-experimentados).

Script de PowerShell para gestionar el consentimiento del administrador

Easy365Manager versión 1.5 y posteriores se basan en el SDK de Microsoft Graph PowerShell.

Para admitir la delegación de la administración de Office 365, hemos creado un script de PowerShell para configurar el consentimiento del administrador requerido sin modificar ninguna configuración existente.

Siéntase libre de modificar el script y publicar cualquier cambio siempre que dé crédito a la página fuente.

Y, por supuesto, si desea trabajar de la forma más eficiente posible, considere probar la prueba de 30 días de Easy365Manager.

  • La descarga y la instalación tardan sólo unos minutos.
  • No se necesitan cambios de infraestructura.
  • La integración con usuarios y computadoras de AD garantiza una interfaz súper intuitiva.

Nuestros clientes normalmente ahorran docenas de horas cada mes al saltarse el tedioso PowerShell para realizar tareas simples como la delegación del calendario:

Descarga tu prueba de 30 días aquí. ¡Trabajarás de manera más eficiente al final del día!

Artículos relacionados