Dashboard de métricas de Microsoft 365 con Power BI
Microsoft 365

📊 Dashboard de métricas de Microsoft 365 con Power BI

Graph API, Python y un LLM desde una laptop

TL;DR: Construí un dashboard en Power BI que muestra adopción de MFA, usuarios activos y métricas de seguridad de Microsoft 365. Todo corre desde una laptop: un script Python extrae datos de Microsoft Graph, genera CSVs, y Power BI los visualiza. Sin infraestructura cloud, sin servidores intermedios.


El Problema

Microsoft 365 genera toneladas de datos operativos - autenticación, actividad de usuarios, adopción de servicios, seguridad. Pero esa información está dispersa entre portales administrativos y APIs diferentes.

Quería una vista única donde IT y seguridad pudieran ver el estado del entorno de un vistazo.


La Arquitectura (deliberadamente simple)

Microsoft Graph API

        │  Python script (laptop local)

    CSV files


    Power BI Desktop


    Dashboard interactivo

Sin Azure Functions, sin Data Factory, sin dataflows. Un script que se ejecuta manualmente, genera CSVs, y Power BI los consume. Prototipo funcional, no arquitectura enterprise.


Las Métricas Que Importan

Seguridad y MFA:

Identidades:

Actividad:

Los endpoints clave de Graph: /reports/authenticationMethods/userRegistrationDetails para MFA, /users y /directoryRoles para identidades, /reports/getOffice365ActiveUserDetail para actividad.


El Pipeline

1. Autenticación

App Registration en Entra ID con permisos Reports.Read.All, User.Read.All, Directory.Read.All. Credenciales en variables de entorno (nunca en el código).

El script usa MSAL para obtener un token y hace llamadas a Graph:

app = ConfidentialClientApplication(
    client_id=os.getenv("CLIENT_ID"),
    authority=f"https://login.microsoftonline.com/{os.getenv('TENANT_ID')}",
    client_credential=os.getenv("CLIENT_SECRET")
)
token = app.acquire_token_for_client(
    scopes=["https://graph.microsoft.com/.default"]
)

2. Extracción → CSV

Cada endpoint se consulta, se normaliza con pandas, se exporta a CSV. Ejemplo para MFA:

response = requests.get(
    "https://graph.microsoft.com/beta/reports/authenticationMethods/userRegistrationDetails?$top=999",
    headers={"Authorization": f"Bearer {token}"}
)
df = pd.json_normalize(response.json().get("value", []))
df.to_csv("mfa_registration.csv", index=False)

3. Power BI

Get Data → CSV → cargar. Medidas DAX para los KPIs:

Users with MFA = CALCULATE(COUNTROWS(MFA_Table), MFA_Table[isMfaRegistered] = TRUE)
Users without MFA = CALCULATE(COUNTROWS(MFA_Table), MFA_Table[isMfaRegistered] = FALSE)

Dashboard con KPIs arriba (total users, MFA adoption rate, active users, admin accounts) y gráficos debajo (distribución de métodos MFA, actividad, tendencias).


El Rol del LLM

Usé un LLM como asistente durante todo el desarrollo: generación inicial del script, debugging de errores de Graph API, estructuración del modelo de datos, optimización de medidas DAX, y documentación.

No reemplaza el conocimiento técnico - necesitas saber qué preguntar y validar las respuestas. Pero acelera significativamente el ciclo de desarrollo. Tareas que tomarían 30 minutos de Googlear + copiar de StackOverflow se resuelven en 2 minutos de conversación.


Las Limitaciones (honestidad brutal)

Ejecución manual. El dashboard solo se actualiza si ejecutas el script. No hay refresh automático.

Endpoints beta. El reporte de MFA vive en Graph beta - Microsoft puede cambiarlo sin aviso.

No escala. Para entornos enterprise necesitas Azure Functions, Data Factory, o Power BI Dataflows con refresh programado.

Secretos. Variables de entorno son mejor que hardcodear, pero lo ideal sería Azure Key Vault con Managed Identities.

Este es un prototipo funcional para análisis local. Si necesitas algo para producción enterprise, necesitas más infraestructura.


Lo Aprendido

Graph API es poderoso pero fragmentado. Las métricas que necesitas están en endpoints diferentes, con formatos diferentes, y algunos solo en beta. Paciencia.

CSV como intermediario funciona. Para prototipos, no necesitas una base de datos. Python → CSV → Power BI es un pipeline que cualquier IT admin puede mantener.

Power BI brilla con datos limpios. El trabajo pesado es la extracción y normalización. Una vez que los CSVs están bien estructurados, Power BI hace el resto casi solo.

LLMs como aceleradores de desarrollo. No como reemplazo, sino como multiplicador. La combinación de conocimiento técnico propio + asistencia de LLM es muy potente para proyectos de este tipo.

Para profundizar en cómo los LLMs aceleran la productividad, lee IA y Ciberseguridad en la Oficina. Y si necesitas integrar el dashboard con autenticación empresarial, consulta SSO con Google Workspace y Cloudflare.



Por: Cesar Rosa Polanco - Basado en un caso real, con apoyo editorial de inteligencia artificial.

¿Primera vez aquí?

Conoce los temas y artículos clave del blog.

Empieza Aquí →
← Volver a artículos Disponible en inglés →