Cómo encontrar permisos para Microsoft Graph PowerShell
Microsoft Graph PowerShell funciona de forma un poco diferente a lo que podría estar familiarizado con los módulos de PowerShell heredados. Primero debe establecer qué permisos necesita para realizar las tareas que desea, luego estos permisos deben definirse cuando se conecta usando el parámetro -scope o dentro de la aplicación a la que se esté conectando.
La mejor práctica es utilizar el principio de privilegio mínimo, lo que significa que no se permite la capacidad de realizar tareas que no es necesario realizar. Por ejemplo, si solo necesita leer información sobre un grupo en Azure AD, no necesita asignarse permisos de escritura, ya que los permisos de lectura cumplirían con sus requisitos.
Al asignar permisos que no necesita, se está volviendo demasiado privilegiado. Esto es algo que se lee a menudo en las noticias, por ejemplo, cuando un atacante ha comprometido el sistema de un usuario normal sólo para darse cuenta de que puede causar más daño del que pretendía, debido a que tiene acceso a funciones y datos privilegiados.
Al reducir los permisos que asigna con Microsoft Graph, no solo mitiga las consecuencias en caso de que un sistema se vea comprometido, sino que también reduce el riesgo de que se realicen acciones accidentales. , lo que podría provocar tiempo de inactividad o pérdida de datos.
En este tutorial, le mostraré cómo puede utilizar varias herramientas para determinar el permiso necesario y el menos requerido para realizar las tareas que necesita.
Utilice el cmdlet Find-MgGraphCommand para buscar permisos
PowerShell se puede usar para exponer qué permisos se requieren para ejecutar los comandos que queremos usar en nuestros scripts. Tanto Find-MgGraphCommand como Find-MgGraphPermissions pueden lograr resultados similares.
El Find-MgGraphCommand el cmdlet le permitirá apuntar a un cmdlet específico dentro de PowerShell; luego podrá expandir la propiedad de permisos del cmdlet para evaluar los permisos relacionados. Mientras que el cmdlet Find-MgGraphPermission le permite buscar permisos que coincidan con el nombre del permiso. y luego proporciona una descripción del permiso.
Personalmente, el cmdlet Find-MgGraphCommand me parece mucho más útil, así que me centraré en eso aquí. La razón por la que uso a menudo Find-MgGraphCommand en lugar del cmdlet dedicado para buscar permisos, es que a menudo sabré qué comando necesito ejecutar para realizar una tarea de acción específica sabiendo qué permisos necesito.
Por ejemplo, para ver todos los permisos que pertenecen al cmdlet Get-MgBetaGroup, puede ejecutar lo siguiente:
Find-MgGraphCommand -command Get-MgBetaGroup -apiversion beta | `
select -first 1 -expandproperty permissionsDesde el resultado, puede ver los nombres de los permisos, que pueden incluirse en sus scripts o aplicaciones de autenticación y también puede ver la descripción completa que define el permiso. El parámetro -apiversion también se incluyó para orientar el beta versión de la API de Microsoft Graph tal como declaramos un cmdlet beta en nuestro comando.
También se pueden especificar otros parámetros utilizando Find-MgGraphCommand, como el parámetro -Uri . Esto le permite buscar comandos según la ruta URI, que también expone los permisos relacionados. Por ejemplo, para ver todos los cmdlets relacionados para la ruta URI de los usuarios, puede ejecutar el siguiente comando:
Find-MgGraphCommand -Uri "/users/{id}"
Su resultado será similar al siguiente y devolverá resultados tanto para la versión 1.0 como para la versión beta de Graph API.
Los comodines también se pueden utilizar para expandir los resultados de la búsqueda y encontrar una cadena o un término de búsqueda específicos. Por ejemplo, si desea buscar todos los comandos que incluyen la cadena "usuarios" en algún lugar del nombre, puede ejecutar lo siguiente:
Find-MgGraphCommand -Uri .*users*.
Su resultado se verá como el siguiente:
Puedes ver lo útil que esto puede ser, ya que a partir de lo anterior, puedes notar que hay una selección más amplia de comandos disponibles en la API beta, en comparación con la versión 1.0.
Utilice Microsoft Graph Explorer para buscar permisos
La herramienta exploradora de Microsoft Graph también puede resultar útil para buscar los permisos necesarios. Tomemos el siguiente ejemplo: estoy realizando un GET< span style="font-weight: 400;"> solicitud con la siguiente URL https://graph.microsoft.com/v1.0/me/ unidad/reciente. Esto devolverá todos mis archivos recientes guardados en mi propia carpeta de OneDrive. Una vez que haya seleccionado el método e ingresado la URL, la pestaña Modificar permisos le proporcionará los permisos necesarios para realizar la tarea.
Podemos ver eso porque solo estoy realizando un GET solicitud, la pestaña de modificación de permisos me recomienda los permisos de lectura necesarios.
Ahora digamos que quiero crear una nueva carpeta dentro de la raíz de mi OneDrive. Puede hacerlo utilizando una solicitud POST con el siguiente cuerpo de solicitud:
{
"name": "My new folder name,
"folder": {}
}Ahora podemos ver que la pestaña de modificar permisos nos muestra los permisos necesarios para crear carpetas y archivos, estos son Archivos.ReadWrite y Archivos.ReadWrite.All .
El mismo proceso se aplica si desea ejecutar una consulta más avanzada; por ejemplo, a continuación actualizaré el atributo de extensión de un dispositivo Intune administrado:
Si seleccionamos la pestaña modificar permisos, extrañamente, solo se nos dice que necesitamos el Directorio. AccessAsUser.All permiso, lo que significa que tendríamos los mismos permisos que el usuario actualmente conectado.
Ahora, esto regresa a lo que se sabe sobre los tipos de permisos, donde algunos permisos están disponibles usando el método de solicitud, es posible que no estén disponibles usando el método delegado, y viceversa. Esto es cierto en el ejemplo anterior y nos conducirá muy bien al siguiente segmento.
Utilice Microsoft Docs para buscar permisos
La documentación oficial de Microsoft en https://learn.microsoft.com es donde puede obtener detalles más detallados sobre los cmdlets, permisos y sintaxis de cada comando, aunque esta información aún se puede exponer utilizando los otros métodos de la publicación.
Si tomamos el ejemplo anterior, donde actualizamos el atributo de extensión de un dispositivo usando el explorador Microsoft Graph (con permisos delegados), la pestaña de permisos de modificación solo nos expone a Permiso Directory.AccessAsUser.All. En este escenario, no podemos ver qué permisos se requieren si quisiéramos usar los permisos de la aplicación, debido a las limitaciones de los permisos delegados.
Sin embargo, podemos usar la documentación de referencia de Microsoft para Graph API para encontrar la información que necesitamos. El siguiente enlace le llevará a la página de referencia Actualizar dispositivo: https://learn.microsoft.com/en-gb/graph/api/device-update?view=graph-rest-beta&tabs=powershell
En esta página, bajo el encabezado de permisos, verá la siguiente tabla de permisos:
La tabla nos muestra que el tipo de permiso de la aplicación proporciona los permisos específicos necesarios para realizar la acción de actualización del dispositivo, mientras que el delegado no. Entonces, en algunos casos, el método que utilizamos está determinado por la limitación de permisos disponibles.







