Tutorial: Creación de informes personalizados en Azure Data Explorer con datos de otros orígenes

En el tutorial Creación de informes personalizados en Azure Data Explorer mediante datos de Microsoft Entra se muestra cómo crear informes personalizados en Azure Data Explorer mediante datos de los servicios de gobierno de Microsoft Entra ID y Microsoft Entra ID.

También puede incorporar datos a Azure Data Explorer desde orígenes más allá de Microsoft Entra. Entre los escenarios para esta funcionalidad se incluyen:

  • Un administrador desea ver eventos en el registro de auditoría con detalles adicionales sobre usuarios, paquetes de acceso u otros objetos que no forman parte del registro de auditoría en sí.
  • Un administrador quiere ver todos los usuarios agregados a una aplicación de Microsoft Entra ID y sus derechos de acceso en el propio repositorio de la aplicación, como una base de datos SQL.

Estos tipos de informes no están integrados en el identificador de Entra de Microsoft. Sin embargo, puede crear estos informes usted mismo extrayendo datos del identificador de Microsoft Entra y combinando datos mediante consultas personalizadas en Azure Data Explorer.

Consulta de datos en Azure Monitor

Si va a enviar los registros de auditoría, inicio de sesión u otros registros de Microsoft Entra a Azure Monitor, puede incorporar esos registros de esa área de trabajo de Log Analytics de Azure Monitor en las consultas, sin necesidad de copiar los datos en Azure Data Explorer. Para obtener más información sobre la relación entre Azure Monitor y Azure Data Explorer, consulte Consulta de datos en Azure Monitor mediante Azure Data Explorer.

Este ejemplo se basa en el tutorial para rellenar Azure Data Explorer desde la gobernanza de identificadores de Microsoft Entra y muestra la unión del registro de auditoría de Microsoft Entra almacenado en Azure Monitor como AuditLogs con los paquetes de acceso de Microsoft Entra almacenados en Azure Data Explorer como EntraAccessPackages.

  1. Inicie sesión en el centro de administración de Microsoft Entra.

  2. Seleccione Configuración de diagnóstico.

  3. Seleccione el área de trabajo de Log Analytics a la que va a enviar los registros.

  4. En la información general del área de trabajo de Log Analytics, registre el identificador de suscripción, el nombre del recurso y el nombre del área de trabajo.

  5. Inicie sesión en Azure Portal.

  6. Vaya a la interfaz de usuario web de Azure Data Explorer.

  7. Asegúrese de que el clúster de Azure Data Explorer aparezca en la lista.

  8. Seleccione + Agregar>conexión.

  9. En la ventana Agregar conexión , escriba la dirección URL en el área de trabajo de Log Analytics. La dirección URL se forma a partir del nombre de host específico de la nube, el identificador de suscripción, el nombre del grupo de recursos y el nombre del área de trabajo del área de trabajo de Log Analytics de Azure Monitor, como se describe en Adición de un área de trabajo de Log Analytics.

  10. Una vez establecida la conexión, el área de trabajo de Log Analytics aparece en el panel izquierdo con el clúster nativo de Azure Data Explorer.

    Seleccione Consulta y, a continuación, seleccione el clúster de Azure Data Explorer.

  11. En el panel de consultas, consulte las tablas de Azure Monitor que contienen los registros de Microsoft Entra en las consultas de Azure Data Explorer. Por ejemplo:

    let CL1 = 'https://ade.loganalytics.io/subscriptions/*subscriptionid*/resourcegroups/*resourcegroupname*/providers/microsoft.operationalinsights/workspaces/*workspacename*';
    cluster(CL1).database('*workspacename*').AuditLogs | where Category == "EntitlementManagement"  and OperationName == "Fulfill access package assignment request"
    | mv-expand TargetResources | where TargetResources.type == 'AccessPackage' | project ActivityDateTime,APID = toguid(TargetResources.id)
    | join EntraAccessPackages on $left.APID == $right.Id
    | limit 100
    

Incorporación de datos de otros orígenes

Puede crear tablas adicionales en Azure Data Explorer para ingerir datos de otros orígenes. Si los datos están en un archivo JSON (similar a los ejemplos anteriores) o en un archivo CSV, puede crear la tabla en el momento en que obtenga los datos del archivo por primera vez. Una vez creada la tabla, también puede usar LightIngest para ingerir datos en Azure Data Explorer desde un archivo JSON o CSV.

Para más información sobre la ingesta de datos, consulte introducción a la ingesta de datos de Azure Data Explorer.

Ejemplo: Combine asignaciones de aplicaciones de Microsoft Entra y un segundo origen para crear un informe de todos los usuarios que tuvieron acceso a una aplicación entre dos fechas

En este informe se muestra cómo puede combinar datos de dos sistemas independientes para crear informes personalizados en Azure Data Explorer. Agrega datos sobre los usuarios, sus roles y otros atributos de dos sistemas en un formato unificado para el análisis o los informes.

En el ejemplo siguiente se supone que una tabla denominada salesforceAssignments se rellenó con datos procedentes de otra aplicación. La tabla tiene las UserNamecolumnas , Name, EmployeeId, Department, JobTitleAppNameRole, , y .CreatedDateTime

// Define the date range and service principal ID for the query 

let startDate = datetime("2023-06-01"); 
let endDate = datetime("2024-03-13"); 
let servicePrincipalId = "<your service principal-id>"; 

// Pre-process AppRoleAssignments with specific filters and projections 
let processedAppRoleAssignments = AppRoleAssignments 
    | where ResourceId == servicePrincipalId and todatetime(CreatedDateTime) between (startDate .. endDate) 
    | extend AppRoleId = tostring(AppRoleId) 
    | project PrincipalId, AppRoleId, CreatedDateTime, ResourceDisplayName; // Exclude DeletedDateTime and keep ResourceDisplayName 

// Pre-process AppRoles to get RoleDisplayName for each role 
let processedAppRoles = AppRoles 
    | mvexpand AppRoles 
    | project AppRoleId = tostring(AppRoles.Id), RoleDisplayName = tostring(AppRoles.DisplayName); 

// Main query: Process EntraUsers by joining with processed role assignments and roles 
EntraUsers 
    | join kind=inner processedAppRoleAssignments on $left.ObjectID == $right.PrincipalId // Join with role assignments 
    | join kind=inner processedAppRoles on $left.AppRoleId == $right.AppRoleId // Join with roles to get display names 

    // Summarize to get the latest record for each unique combination of user and role attributes 
    | summarize arg_max(AccountEnabled, *) by UserPrincipalName, DisplayName, tostring(EmployeeId), Department, JobTitle, ResourceDisplayName, RoleDisplayName, CreatedDateTime 

    // Final projection of relevant fields, including source indicator and report date 
    | project UserPrincipalName, DisplayName, EmployeeId=tostring(EmployeeId), Department, JobTitle, AccountEnabled=tostring(AccountEnabled), ResourceDisplayName, RoleDisplayName, CreatedDateTime, Source="EntraUsers", ReportDate = now() 

// Union with processed salesforceAssignments to create a combined report 
| union ( 
    salesforceAssignments 

    // Project fields from salesforceAssignments to align with the EntraUsers data structure 
    | project UserPrincipalName = UserName, DisplayName = Name, EmployeeId = tostring(EmployeeId), Department, JobTitle, AccountEnabled = "N/A", ResourceDisplayName = AppName, RoleDisplayName = Role, CreatedDateTime, Source = "salesforceAssignments", ReportDate = now() 
)