Gráfico Práctico: Informe Unidades Administrativas Microsoft Entra ID
Obtener más información sobre unidades administrativas con PowerShell
El reciente anuncio de Microsoft sobre la vista previa de unidades administrativas restringidas me hizo pensar que sería una buena idea poder informar detalles de las unidades administrativas y su membresía. El centro de administración de Microsoft Entra ID revela esta información y es fácil revisar las propiedades de una unidad administrativa individual, pero es mucho más difícil obtener una descripción general concisa de todas las unidades administrativas de un inquilino.
Si su inquilino utiliza unidades administrativas, es importante que controle su uso. Obviamente, Microsoft está prestando más atención a estos objetos porque contribuyen en gran medida a resolver el problema del alcance dentro del directorio. Las soluciones de Purview, como la prevención de pérdida de datos (DLP) y la gestión del ciclo de vida de los datos (etiquetas y políticas de retención), admiten la configuración de políticas dirigidas a unidades administrativas. Espero que otras partes del ecosistema de Microsoft 365 sigan un enfoque similar con el tiempo.
Microsoft Graph PowerShell SDK V2
Este artículo describe cómo usar cmdlets del SDK de Microsoft Graph PowerShell para recuperar la información y crear un informe. Microsoft lanzó la V2 del SDK el 4 de julio de 2023. La diferencia obvia entre la V1 y la V2 del SDK es que los cmdlets que interactúan con el punto final Graph de producción (V1.0) siguen una denominación *-Mg*. esquema mientras que sus homólogos beta tienen nombres *-MgBeta*.
Por ejemplo, los cmdlets para recuperar cuentas de usuario de Entra ID (Azure AD) son Get-MgUser y Get-MgBetaUser, respectivamente. El cambio en el nombre de los cmdlets significa que los desarrolladores deben revisar y probar cualquier script escrito con la V1 del SDK para garantizar que su código se ejecute con la V2.
Microsoft Graph PowerShell SDK V2 divide sus cmdlets en dos submódulos y debe instalar ambos para tener acceso a los cmdlets beta. Por el lado positivo, la división en módulos separados significa que es más fácil y rápido cargar el SDK en entornos como Azure Automation. Otro cambio importante para Azure Automation es el soporte formal para identidades administradas. En el pasado existían soluciones alternativas, como obtener un token de acceso de la cuenta de Azure Automation y usar el token para autenticarse, pero ahora puede simplemente hacer lo siguiente:
Connect-MgGraph -Identity
Si usa el SDK con Azure Automation, asegúrese de importar los módulos beta que contienen los cmdlets usados en los runbooks.
La cadena de eliminación de Microsoft 365 y la gestión de rutas de ataque
Una estrategia de ciberseguridad eficaz requiere una comprensión clara y completa de cómo se desarrollan los ataques. Lea este documento técnico para obtener la información experta que necesita para defender su organización.
Actualización del SDK de Microsoft Graph PowerShell
Nueve días después del lanzamiento del SDK V2.0, Microsoft se apresuró a lanzar el V2.1 (13 de julio de 2023) para solucionar algunos problemas. Por ejemplo, el cmdlet Get-MgServicePrincipal se negó obstinadamente a mostrar ningún parámetro. Normalmente, Microsoft genera una nueva versión del SDK mensualmente. Sin embargo, en los primeros días de V2, podría ser aconsejable estar atento a la Galería de PowerShell para asegurarse de utilizar el código más reciente y estable.
El script descrito en este artículo actualiza los módulos SDK V1.0 y beta instalados en las cuentas de Azure Automation a la versión más reciente. El script de este artículo se encarga de la actualización del módulo SDK (y otros módulos) en una PC.
Unidades administrativas informantes
Volviendo a las unidades administrativas, los pasos de procesamiento básicos que utilicé para crear un informe son:
- Conéctese al gráfico con el alcance Directory.Read.All.
- Busque todas las unidades administrativas (normales, dinámicas y restringidas) con el cmdlet Get-MgBetaDirectoryAdministrativeUnit.
- Recupere las asignaciones de roles para unidades administrativas mediante el cmdlet Get-MgBetaRoleManagementDirectoryRoleAssignment. Las asignaciones de funciones permiten que cuentas de usuario específicas realicen tareas de administración para las cuentas de usuario, grupos y dispositivos en una unidad administrativa. Los titulares de funciones administrativas habituales, como administrador global y administrador de usuarios, pueden gestionar objetos en unidades administrativas habituales, pero no pueden acceder a unidades administrativas restringidas. Solo los usuarios a los que se les hayan asignado funciones específicas en el ámbito de unidades administrativas restringidas pueden gestionar objetos en estas unidades.
- Recorra cada unidad administrativa para registrar detalles de su configuración.
- Encuentre las asignaciones de roles específicas de la unidad administrativa y extraiga detalles de las cuentas de usuario, grupos o entidades principales de servicio que desempeñan roles.
- Obtenga detalles de los miembros de la unidad administrativa con el cmdlet Get-MgBetaAdministrativeUnitMember. Para las unidades administrativas dinámicas, el cmdlet devuelve el conjunto de objetos según la regla de membresía definida en la unidad administrativa (como la forma en que funcionan los grupos dinámicos o incluso las listas de distribución dinámicas).
- Actualice una lista de PowerShell con detalles de la unidad administrativa, las asignaciones y su membresía.
- Los resultados de salida son un archivo CSV y una página HTML.
Como puede ver en la lista de pasos de procesamiento, los cmdlets utilizados para procesar unidades administrativas utilizan el punto final beta. Otros cmdlets del script, como Get-MgUser y Get-MgGroup, utilizan el punto final V1.0. Este es un buen ejemplo de cómo los scripts pueden mezclar y combinar cmdlets beta y V1.0 para realizar un trabajo.
Análisis de resultados
La Figura 1 muestra la página HTML generada para mi inquilino. Lo primero que hay que tener en cuenta es que hay dos unidades administrativas sin miembros, lo que significa que los objetos son esencialmente inútiles. Esta condición puede evolucionar con el tiempo si todas las cuentas de usuario, grupos y dispositivos que eran miembros de una unidad administrativa abandonan por una razón u otra. Esto podría ser la eliminación de cuentas individuales o el movimiento masivo de objetos de un inquilino a otro. Para las unidades administrativas dinámicas, es posible que las reglas de membresía para calcular la membresía no devuelvan nada debido a problemas en las propiedades de la cuenta de usuario. O simplemente que un administrador creó una unidad administrativa con algún propósito en mente que nunca sucedió.
Puede ver las reglas de membresía para unidades administrativas dinámicas enumeradas en una columna. Cuando hay asignaciones de roles específicas, se enumeran con el nombre para mostrar del asignado y su tipo (usuario, grupo o entidad de servicio). Asigno roles a entidades de servicio para cuentas de Azure Automation para permitir que sus runbooks procesen subconjuntos de cuentas de usuario.
Si no existen asignaciones de funciones específicas para una unidad administrativa, el informe enumera "Funciones de administrador" para indicar que se aplican las asignaciones de funciones de administrador normales. El alcance de cada unidad administrativa se enumera con "Directorio", lo que significa que no tiene restricciones y "Restringido", lo que significa que solo aquellos con asignaciones de funciones específicas para la unidad administrativa pueden administrar su membresía.
No hay magia en el guión y PowerShell es bastante sencillo. La parte más difícil de escribir scripts como este es encontrar el cmdlet SDK correcto para usar y comprender el resultado devuelto por el cmdlet. Puede descargar el script completo desde GitHub. Todas las sugerencias son bienvenidas y puedes proponer cambios al script a través de GitHub.
Encontrar cuentas cubiertas por unidades administrativas restringidas
Finalmente, una nota sobre cómo descubrir el conjunto de cuentas de usuario cubiertas por unidades administrativas restringidas. Cuando una cuenta de usuario entra dentro del alcance de una unidad administrativa restringida, Entra ID establece su propiedad IsManagementRestricted en True. Por tanto, encontrar el conjunto de cuentas es cuestión de comprobar esta propiedad. Lamentablemente, el filtrado del lado del servidor no es compatible actualmente, por lo que se debe ejecutar un comando como este:
Get-MgBetaUser -Filter "usertype eq 'Member'" -All | where-Object {$_.IsManagementRestricted -eq $True}Informes de bricolaje
Nunca entendí por qué Microsoft presta relativamente poca atención a informar diferentes aspectos de Microsoft 365/Entra ID. Los informes que ayudan a Microsoft a vender más licencias (como informes de uso) están disponibles en el centro de administración de Microsoft 365 y otros portales, pero no mucho más. Lo bueno es que tienes la oportunidad de escribir tus propios informes. La desventaja de esto es el trabajo que se requiere, incluso si ocupa un par de horas en una tarde lluviosa de sábado.
