
CA Optics - Analizador de brechas de Acceso condicional de Azure AD
Proyecto archivado debido a cambios en las prioridades de desarrollo y a la reorientación de mis esfuerzos comunitarios hacia otras áreas (PoCs, otras herramientas y demos/presentaciones); el proyecto se establece como solo lectura.
El Analizador de brechas de acceso condicional de Azure AD es una solución para escanear brechas que puedan existir en configuraciones complejas de políticas de acceso condicional de Azure Active Directory.
Si eres nuevo en el acceso condicional, te recomendamos que revises el siguiente artículo de Microsoft: https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/overview
Comando de una sola línea para ejecutar esta herramienta: (si esta es la única parte que planeas leer y ya completaste la instalación)
node ./ca/main.js --mapping --skipObjectId=259fcf40-ff7c-4625-9b78-cd11793f161f --clearPolicyCache --clearTokenCache --clearMappingCache
Después de completar los requisitos previos y leer este archivo README, considera lo siguiente:
Las políticas reportOnly no se consideran finalizadoras:
Lee: scope
ejecuta cada análisis con --clearPolicyCache
ejecuta cada análisis con --clearMappingCache si realizas cambios en los grupos/usuarios relacionados con las políticas
solo las políticas dirigidas a usuarios y aplicaciones están dentro del alcance (este es el alcance más común, pero significa, por ejemplo, que la política de registro de seguridad no se evalúa)
Lee: scope
Comienza con un entorno de prueba para ganar experiencia y poder establecer expectativas sobre la mecánica de la herramienta
si tienes grupos o usuarios conocidos que están excluidos de las políticas, define con --skipObjectIds los objetos que se excluirán del análisis, a menos que busques confirmar las exclusiones
Si vas a ejecutar análisis en varios entornos, asegúrate de eliminar los inicios de sesión y las cachés antes de ejecutar nuevos análisis
Lee:parameters
az account clear y realiza un nuevo inicio de sesión en el entorno que planeas analizar con az loginNotas de la versión: 0.7.1
- Dependencias actualizadas y salidas de texto de los informes
Notas de la versión: 0.7
- Ahora usa el endpoint beta de forma predeterminada; la opción --expand ahora expande los resultados en el informe independientemente del uso de --allTerminations
Notas de la versión: 0.6.9
- usando --expand=9c06d103-f5b0-4404-bb25-aec4636912cd,47087cd3-64e9-470b-980a-5662f498e016 y expandir 10 miembros de grupo para inspección separada.
Notas de la versión: 0.6.8
- Cuando se actualiza una política con cualquier condición de invitado en la GUI, esa política solo estará disponible desde el endpoint beta después de la actualización (durante la vista previa).
- Esta actualización aporta normalización para las políticas que se transfieren al endpoint beta debido a este comportamiento.
- La política se evaluará como las condiciones de invitado anteriores, siempre que se incluyan las siguientes condiciones "internalGuest,b2bCollaborationGuest,b2bCollaborationMember" y no se excluyan inquilinos de la política. Para evaluar políticas transferidas,
- usa '--allowPreviewPolicies' al ejecutar CaOptics para tener en cuenta este comportamiento
Notas de la versión: 0.6.6-7 beta
- Permite usar diferentes endpoints de inicio de sesión para login y graph con los parámetros: --altLogin --altGraph
- Permite el uso de filtrado personalizado para políticas (esto solo se recomienda cuando las políticas no se ajustan al esquema esperado)
Notas de la versión: 0.6.5 beta
- Se añadió un contador al informe cuando también se añade un alto número de permutaciones al reporte (por defecto solo se añaden las no terminadas)
- Correcciones menores de código cambiando <var> por <let>
- El nombre del archivo de informe ahora incluye día, mes, año y tenantId, p. ej. report_day_4_month_9_year_2022-tenant_48f55450-183a-45d6-a9ce-68f3cbc68947.csv
Notas de la versión: 0.6.4 beta
- Obtener más grupos por cada llamada (menos procesamiento por lotes)
- Se corrige la condición de carrera detectada al usar bucles for await en general
- Encierra los valores con "" entre delimitadores (CSV)
Notas de la versión: 0.6.3 beta
- Optimizaciones en la forma en que se gestionan los objetos mapeados.
- Los objetos mapeados se almacenan en caché. Puedes recrear el mapeo de objetos usando el parámetro 'clearMappingCache'
- Las claves de búsqueda siempre comenzarán con las condiciones de 'user/group/role'
- Se añadió la posibilidad de poblar el usermap con UUIDs aleatorios para probar el impacto en el rendimiento (esto es solo una opción de depuración, no algo que estaría en versiones no beta)
Notas de la versión: 0.6.2 beta
- Se separaron los parámetros de caché en funciones independientes -> (clearTokenCache y ClearPolicyCache)
- Se añadió la posibilidad de ejecutar un algoritmo preoptimizado sobre las permutaciones con el parámetro --aggressive (alto consumo de memoria, solo para pruebas A/B)
- fusión completada.
Notas de la versión: 0.6.1 beta
- Se añadió una versión básica de informes CSV
- Se optimizó la generación de permutaciones para asegurar que se generen las permutaciones esenciales y que algunas permutaciones se finalicen antes en las búsquedas
Notas de la versión: 0.6 beta (primera versión no "silenciosa")
- Nombres para mostrar de aplicaciones añadidos al informe MD. Tipo de objeto añadido al tipo de usuario
Notas de la versión: 0.5.2,0.5.1,0.5 beta (consulta las ramas anteriores para ver las notas de la versión)

Ejemplo de detección entre políticas
❌ Cualquier permutación con valor 0 significa que ninguna política se finalizó para esa combinación particular de condiciones.