Compartir a través de


Ejecución de cuadernos en el lago de datos de Microsoft Sentinel

Los cuadernos de Jupyter Notebook proporcionan un entorno interactivo para explorar, analizar y visualizar datos en el lago de datos de Microsoft Sentinel. Con cuadernos, puede escribir y ejecutar código, documentar el flujo de trabajo y ver los resultados, todo en un solo lugar. Esto facilita la exploración de datos, la creación de soluciones de análisis avanzadas y el uso compartido de información con otros usuarios. Al aprovechar Python y Apache Spark en Visual Studio Code, los cuadernos le ayudan a transformar los datos de seguridad sin procesar en inteligencia accionable.

En este artículo se muestra cómo explorar e interactuar con los datos del lago de datos mediante cuadernos de Jupyter Notebook en Visual Studio Code.

Prerrequisitos

Incorporación al lago de datos de Microsoft Sentinel

Para usar cuadernos en el lago de datos de Microsoft Sentinel, primero debe incorporarlos al lago de datos. Si no se ha incorporado al lago de datos de Sentinel, consulte Incorporación al lago de datos de Microsoft Sentinel. Si recientemente se ha incorporado al lago de datos, puede tardar algún tiempo hasta que se ingiere suficiente volumen de datos antes de poder crear análisis significativos mediante cuadernos.

Permisos

Los roles de Identidad de Microsoft Entra proporcionan un acceso amplio en todas las áreas de trabajo del data lake. Como alternativa, puede conceder acceso a áreas de trabajo individuales mediante roles RBAC de Azure. Los usuarios con permisos de RBAC de Azure para las áreas de trabajo de Microsoft Sentinel pueden ejecutar cuadernos en esas áreas de trabajo en el nivel de lago de datos. Para obtener más información, consulte Roles y permisos en Microsoft Sentinel.

Para crear nuevas tablas personalizadas en el nivel de análisis, a la identidad administrada del lago de datos se le debe asignar el rol Colaborador de Log Analytics en el área de trabajo de Log Analytics.

Para asignar el rol, siga estos pasos:

  1. En Azure Portal, vaya al área de trabajo de Log Analytics a la que desea asignar el rol.
  2. Seleccione Control de acceso (IAM) en el panel de navegación izquierdo.
  3. Seleccione Agregar asignación de roles.
  4. En la tabla Rol, seleccione Colaborador de Log Analytics y, a continuación, seleccione Siguiente.
  5. Seleccione Identidad administrada y, a continuación, seleccione Seleccionar miembros.
  6. La identidad administrada de lago de datos es una identidad administrada asignada por el sistema denominada msg-resources-<guid>. Seleccione la identidad administrada y, a continuación, seleccione Seleccionar.
  7. Seleccione Revisar y asignar.

Para más información sobre cómo asignar roles a identidades administradas, consulte Asignación de roles de Azure mediante Azure Portal.

Instalación de Visual Studio Code y la extensión de Microsoft Sentinel

Si aún no tiene Visual Studio Code, descargue e instale Visual Studio Code para Mac, Linux o Windows.

La extensión de Microsoft Sentinel para Visual Studio Code (VS Code) se instala desde marketplace de extensiones. Para instalar la extensión, siga estos pasos:

  1. Seleccione El Marketplace de extensiones en la barra de herramientas izquierda.
  2. Busque Sentinel.
  3. Seleccione la extensión de Microsoft Sentinel y seleccione Instalar.
  4. Una vez instalada la extensión, el icono de escudo de Microsoft Sentinel aparece en la barra de herramientas izquierda.

Captura de pantalla que muestra el mercado de extensiones.

Instale la extensión Copilot de GitHub para Visual Studio Code para habilitar la finalización de código y sugerencias en cuadernos.

  1. Busque GitHub Copilot en Extensions Marketplace e instálelo.
  2. Después de la instalación, inicie sesión en GitHub Copilot con su cuenta de GitHub.

Exploración de tablas de nivel de lago de datos

Después de instalar la extensión de Microsoft Sentinel, puede comenzar a explorar tablas del nivel del lago de datos y crear cuadernos de Jupyter para analizar los datos.

Inicie sesión en la extensión de Microsoft Sentinel

  1. Seleccione el icono de escudo de Microsoft Sentinel en la barra de herramientas izquierda.

  2. Aparece un cuadro de diálogo con el texto siguiente La extensión "Microsoft Sentinel" quiere iniciar sesión con Microsoft. seleccione Permitir.

    Captura de pantalla que muestra el cuadro de diálogo de inicio de sesión.

  3. Seleccione el nombre de la cuenta para completar el inicio de sesión.

    Captura de pantalla que muestra la lista de selección de la cuenta en la parte superior de la página.

Visualización de tablas y trabajos de Data Lake

Una vez que inicie sesión, la extensión Sentinel muestra una lista de tablas de Lake y trabajos en el panel izquierdo. Las tablas se agrupan por la base de datos y la categoría. Seleccione una tabla para ver las definiciones de columna.

Para obtener información sobre los trabajos, consulte Trabajos y programación.

Captura de pantalla que muestra la lista de tablas, trabajos y metadatos de la tabla seleccionada.

Crea un nuevo cuaderno

  1. Para crear un cuaderno, use uno de los métodos siguientes.

  2. Escriba > en el cuadro de búsqueda o presione Ctrl+Mayús+P y, a continuación, escriba Crear nuevo cuaderno de Jupyter Notebook. Captura de pantalla que muestra cómo crear un cuaderno desde la barra de búsqueda.

  3. Seleccione Archivo > Archivo Nuevo, y a continuación, seleccione Jupyter Notebook en la lista desplegable.
    Captura de pantalla que muestra cómo crear un nuevo cuaderno desde el menú de archivo.

  4. En el nuevo cuaderno, pegue el código siguiente en la primera celda.

    from sentinel_lake.providers import MicrosoftSentinelProvider
    data_provider = MicrosoftSentinelProvider(spark)
    
    table_name = "EntraGroups"  
    df = data_provider.read_table(table_name)  
    df.select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId").show(100,   truncate=False)  
    

El editor proporciona la finalización de código IntelliSense tanto para la clase MicrosoftSentinelProvider como para los nombres de tabla en el lago de datos.

  1. Seleccione el triángulo Ejecutar para ejecutar el código en el cuaderno. Los resultados se muestran en el panel de salida debajo de la celda de código.
    Captura de pantalla que muestra cómo ejecutar una celda de cuaderno.

  2. Seleccione Microsoft Sentinel en la lista para ver una lista de grupos de tiempo de ejecución. Captura de pantalla que muestra el selector en tiempo de ejecución.

  3. Seleccione Medium (Medio) para ejecutar el cuaderno en el grupo de entornos de ejecución de tamaño mediano. Para obtener más información sobre los distintos entornos de ejecución, consulte Selección del entorno de ejecución de Microsoft Sentinel adecuado. Captura de pantalla que muestra el seleccionador de tamaño del grupo de ejecución.

Nota:

Al seleccionar el kernel, se inicia la sesión de Spark y se ejecuta el código en el cuaderno. Después de seleccionar el grupo, la sesión puede tardar entre 3 y 5 minutos. Las ejecuciones posteriores son más rápidas, ya que la sesión ya está activa.

Cuando se inicia la sesión, el código del cuaderno se ejecuta y los resultados se muestran en el panel de salida debajo de la celda de código, por ejemplo: captura de pantalla que muestra los resultados de ejecutar una celda del cuaderno.

Para ver cuadernos de ejemplo que muestran cómo interactuar con el lago de datos de Microsoft Sentinel, consulte Cuadernos de ejemplo para el lago de datos de Microsoft Sentinel.

Barra de estado

La barra de estado de la parte inferior del cuaderno proporciona información sobre el estado actual del cuaderno y la sesión de Spark. La barra de estado incluye la siguiente información:

  • Porcentaje de uso de vCore para el Spark pool seleccionado. Mantenga el puntero sobre el porcentaje para ver el número de núcleos virtuales usados y el número total de núcleos virtuales disponibles en el grupo. Los porcentajes representan el uso actual en cargas de trabajo interactivas y de tareas para la cuenta que ha iniciado sesión.

  • Estado de conexión de la sesión de Spark, por ejemplo Connecting, , Connectedo Not Connected.

Captura de pantalla que muestra la barra de estado en la parte inferior del cuaderno.

Establecimiento de tiempos de espera de sesión

Puede establecer el tiempo de espera de sesión y las advertencias de tiempo de espera para cuadernos interactivos. Para cambiar el tiempo de espera, seleccione el estado de conexión en la barra de estado de la parte inferior del cuaderno. Elija entre las siguientes opciones:

  • Establecer el período de tiempo de espera de sesión: establece el tiempo en minutos antes de que se agote el tiempo de espera de la sesión. El valor predeterminado es 30 minutos.

  • Restablecer el período de tiempo de espera de sesión: restablece el tiempo de espera de la sesión al valor predeterminado de 30 minutos.

  • Establecer el período de advertencia de tiempo de espera de sesión: establece el tiempo en minutos antes de que se muestre una advertencia indicando que la sesión está a punto de agotarse. El valor predeterminado es 5 minutos.

  • Restablecer el plazo de aviso de tiempo de espera de sesión: restablece el plazo de aviso de tiempo de espera de sesión al valor predeterminado de 5 minutos.

    Captura de pantalla que muestra la configuración de tiempo de espera de la sesión.

Uso de GitHub Copilot en cuadernos

Use GitHub Copilot para ayudarle a escribir código en cuadernos. GitHub Copilot proporciona sugerencias de código y autocompletado en función del contexto de tu código. Para usar GitHub Copilot, asegúrese de que tiene instalada la extensión de GitHub Copilot en Visual Studio Code.

Copie el código de los cuadernos de ejemplo para el lago de datos de Microsoft Sentinel y guárdelo en la carpeta notebooks para proporcionar contexto para GitHub Copilot. Después, GitHub Copilot podrá sugerir finalizaciones de código en función del contexto del cuaderno.

En el ejemplo siguiente se muestra GitHub Copilot que genera una revisión de código.

Captura de pantalla que muestra GitHub Copilot que genera una revisión de código.

Clase Provider de Microsoft Sentinel

Para conectarse al lago de datos de Microsoft Sentinel, use la SentinelLakeProvider clase . Esta clase forma parte del access_module.data_loader módulo y proporciona métodos para interactuar con el lago de datos. Para usar esta clase, impórtela y cree una instancia de la clase mediante una spark sesión.

from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)

Para obtener más información sobre los métodos disponibles, consulte Referencia de clase de proveedor de Microsoft Sentinel.

Selección del grupo de tiempo de ejecución adecuado

Hay tres grupos de tiempo de ejecución disponibles para usar cuadernos de Jupyter en la extensión de Microsoft Sentinel. Cada grupo está diseñado para diferentes cargas de trabajo y requisitos de rendimiento. La elección del pool de tiempo de ejecución afecta al rendimiento, el costo y el tiempo de ejecución de los trabajos de Spark.

Grupo de runtime Casos de uso recomendados Características
Pequeño Desarrollo, pruebas y análisis exploratorio ligero.
Cargas de trabajo pequeñas con transformaciones sencillas.
Prioridad de la eficiencia de los costos.
Adecuado para cargas de trabajo pequeñas
Transformaciones simples.
Menor costo y tiempo de ejecución más largo.
Medio Trabajos de ETL con combinaciones, agregaciones y entrenamiento de modelos de ML.
Cargas de trabajo moderadas con transformaciones complejas.
Rendimiento mejorado con respecto a Small.
Controla el paralelismo y las operaciones de uso intensivo de memoria moderadas.
Grande Cargas de trabajo de aprendizaje profundo y aprendizaje automático.
Intercambio extenso de datos, uniones grandes o procesamiento en tiempo real.
Tiempo de ejecución crítico.
Alta capacidad de memoria y proceso.
Retrasos mínimos.
Ideal para cargas de trabajo grandes, complejas o sensibles al tiempo.

Nota:

Cuando se accede por primera vez, las opciones del kernel pueden tardar unos 30 segundos en cargarse.
Después de seleccionar un grupo de tiempo de ejecución, el inicio de la sesión puede tardar entre 3 y 5 minutos.

Visualización de mensajes, registros y errores

Los registros de mensajes y los mensajes de error se muestran en tres áreas de Visual Studio Code.

  1. El panel de Salida.

    1. En el panel Salida , seleccione Microsoft Sentinel en la lista desplegable.
    2. Seleccione Depurar para incluir entradas de registro detalladas.

    Captura de pantalla que muestra el panel de salida.

  2. Los mensajes en línea del cuaderno proporcionan comentarios e información sobre la ejecución de celdas de código. Estos mensajes incluyen actualizaciones de estado de ejecución, indicadores de progreso y notificaciones de error relacionadas con el código de la celda anterior.

  3. Una ventana emergente de notificación en la esquina inferior derecha de Visual Studio Code, también conocido como mensaje emergente, proporciona alertas en tiempo real y actualizaciones sobre el estado de las operaciones en el bloc de notas y la sesión de Spark. Estas notificaciones incluyen mensajes, advertencias y alertas de error, como la conexión correcta a una sesión de Spark y advertencias de tiempo de espera.

    Recorte de pantalla que muestra un mensaje emergente y un mensaje de error en línea.

Trabajos y programación

Puede programar trabajos para que se ejecuten en momentos o intervalos específicos mediante la extensión de Microsoft Sentinel para Visual Studio Code. Los trabajos permiten automatizar las tareas de procesamiento de datos para resumir, transformar o analizar datos en el lago de datos de Microsoft Sentinel. Los trabajos también se usan para procesar datos y escribir resultados en tablas personalizadas en el nivel de lago de datos o en el nivel de análisis. Para obtener más información sobre cómo crear y administrar trabajos, consulte Creación y administración de trabajos de Jupyter Notebook.

Parámetros y límites de servicio para cuadernos de VS Code

En la sección siguiente, se enumeran los parámetros de servicio y los límites del lago de datos de Microsoft Sentinel al usar cuadernos de VS Code.

Categoría Parámetro/límite
Tabla personalizada en el nivel de análisis Las tablas personalizadas del nivel de análisis no se pueden eliminar de un cuaderno; Use Log Analytics para eliminar estas tablas. Para más información, consulte Incorporación o eliminación de tablas y columnas en registros de Azure Monitor.
Tiempo de espera del socket web de puerta de enlace 2 horas
Tiempo de espera de consulta interactiva 2 horas
Tiempo de espera de inactividad de sesión interactiva 20 minutos
Lenguaje Pitón
Tiempo de espera del trabajo del cuaderno 8 horas
Número máximo de trabajos de cuaderno simultáneos 3, los trabajos posteriores se ponen en cola
Número máximo de usuarios simultáneos en consultas interactivas 8-10 en piscina grande
Hora de inicio de la sesión La sesión de proceso de Spark tarda aproximadamente entre 5 y 6 minutos en iniciarse. Puede ver el estado de la sesión en la parte inferior del cuaderno de VS Code.
Bibliotecas compatibles Solo se admiten bibliotecas de Azure Synapse 3.4 y la biblioteca del proveedor de Microsoft Sentinel para funciones abstractas para consultar el lago de datos. No se admiten las instalaciones de Pip ni las bibliotecas personalizadas.
Límite de experiencia de usuario de VS Code para mostrar registros 100 000 filas

Solución de problemas

En la tabla siguiente se enumeran los errores comunes que puede encontrar al trabajar con cuadernos, sus causas principales y las acciones sugeridas para resolverlos.

Categoría de error Nombre del error Código de error Mensaje de error Acción sugerida
DatabaseError BaseDeDatosNoEncontrada 2001 No se encontró la base de datos {DatabaseName}. Compruebe que la base de datos existe. Si la base de datos es nueva, espere a que se actualicen los metadatos.
DatabaseError AmbiguousDatabaseName 2002 Varias bases de datos (identificadores: {DatabaseID1}, {DatabaseID2}, ...) comparten el nombre {DatabaseName}. Proporcione un identificador de base de datos específico. Especifique un identificador de base de datos cuando varias bases de datos tengan el mismo nombre.
DatabaseError DatabaseIdMismatch 2003 No se encontró la base de datos ({DatabaseName}, id. {DatabaseID}). Compruebe tanto el nombre de la base de datos como el identificador. Para obtener identificadores de base de datos, enumere todas las bases de datos.
DatabaseError ErrorDeListadoDeBasesDeDatos 2004 No se pueden capturar bases de datos. Reinicie la sesión e inténtelo de nuevo. Reinicie la sesión y vuelva a intentar la operación después de unos minutos.
Error de tabla TablaNoExiste 2100 La tabla {TableName} no se encuentra en la base de datos {DatabaseName}. Compruebe que la tabla existe en la base de datos. Si la tabla o la base de datos son nuevas, espere unos minutos e inténtelo de nuevo.
Error de tabla ProvisioningIncomplete 2101 La tabla {TableName} no está lista. Espere unos minutos antes de intentarlo de nuevo. La tabla se está aprovisionando. Espere unos minutos antes de intentarlo de nuevo.
Error de tabla DeltaTableMissing 2102 La tabla {TableName} está vacía. Las nuevas tablas pueden tardar hasta unas horas en estar listas. Puede tardar unas horas en sincronizar completamente una tabla de análisis en el lago de datos. En el caso de las tablas que solo están en el lago de datos, compruebe si los datos deben cargarse o restaurarse.
Error de tabla LaTablaNoExisteParaEliminar 2103 No se puede eliminar la tabla. No se encontró la tabla {TableName}. Compruebe que la tabla existe en la base de datos. Si la tabla o la base de datos son nuevas, espere unos minutos e inténtelo de nuevo.
AuthorizationFailure MissingSASToken 2201 No se puede acceder a la tabla. Reinicie la sesión e inténtelo de nuevo. Error de autorización al intentar capturar el token de acceso de la tabla. Reinicie la sesión e inténtelo de nuevo.
AuthorizationFailure InvalidSASToken 2202 No se puede acceder a la tabla. Reinicie la sesión e inténtelo de nuevo. Error de autorización al intentar capturar el token de acceso de la tabla. Reinicie la sesión e inténtelo de nuevo.
AuthorizationFailure Token Caducado 2203 No se puede acceder a la tabla. Reinicie la sesión e inténtelo de nuevo. Error de autorización al intentar capturar el token de acceso de la tabla. Reinicie la sesión e inténtelo de nuevo.
AuthorizationFailure TablaPermisosInsuficientes 2204 Acceso necesario para la tabla {TableName} en la base de datos {DatabaseName}. Póngase en contacto con un administrador para solicitar acceso a la tabla o a la base de datos (área de trabajo).
AuthorizationFailure InternalTableAccessDenied 2205 El acceso a la tabla {TableName} está restringido. Solo se puede acceder a las tablas definidas por el usuario o del sistema desde un cuaderno.
AuthorizationFailure ErrorDeAutenticaciónDeTabla 2206 No se pueden guardar datos en la tabla. Reinicie la sesión e inténtelo de nuevo. Error de autorización al intentar guardar datos en la tabla. Reinicie la sesión e inténtelo de nuevo.
ErrorDeConfiguración HadoopConfigFailure 2301 No se puede actualizar la configuración de sesión. Reinicie la sesión e inténtelo de nuevo. Este problema es transitorio y se puede resolver reiniciando la sesión e intentando de nuevo. Si este problema persiste, póngase en contacto con el soporte técnico.
DataError JsonParsingFailure 2302 Los metadatos de la tabla están dañados. Póngase en contacto con el servicio de soporte técnico para obtener ayuda. Póngase en contacto con el servicio de soporte técnico para obtener ayuda. Proporcione el identificador de inquilino, el nombre de la tabla y el nombre de la base de datos.
TableSchemaError TableSchemaMismatch 2401 Columna no encontrada en la tabla de destino. Alinee el esquema dataframe y la tabla de destino o use el modo de sobrescritura. Actualice el esquema DataFrame para que coincida con la tabla de la base de datos de destino. También puede reemplazar la tabla por completo en modo de sobrescritura.
TableSchemaError MissingRequiredColumns 2402 Falta la columna {ColumnName} en el DataFrame. Compruebe el esquema dataframe y alinee con la tabla de destino. Actualice el esquema DataFrame para que coincida con la tabla de la base de datos de destino. También puede reemplazar la tabla por completo en modo de sobrescritura.
TableSchemaError CambioDeTipoDeColumnaNoPermitido 2403 No se puede cambiar el tipo de datos de la columna {ColumnName}. No se permite un cambio de tipo de datos para la columna. Compruebe las columnas existentes en la tabla de destino y alinee todos los tipos de datos del dataFrame.
TableSchemaError ColumnNullabilityChangeNotAllowed 2404 No se puede cambiar la nulabilidad de la columna {ColumnName}. No se puede actualizar la configuración de nulabilidad de la columna. Compruebe la tabla de destino y alinee la configuración con dataFrame.
Error de Ingesta ErrorDeCreaciónDeCarpeta 2501 No se puede crear almacenamiento para la tabla {TableName}. Este problema es transitorio y se puede resolver reiniciando la sesión e intentando de nuevo. Si este problema persiste, póngase en contacto con el soporte técnico.
Error de Ingesta SubJobRequestFailure 2502 No se puede crear un trabajo de ingesta de datos para la tabla {TableName}. Este problema es transitorio y se puede resolver reiniciando la sesión e intentando de nuevo. Si este problema persiste, póngase en contacto con el soporte técnico.
Error de Ingesta SubJobCreationFailure 2503 No se puede crear un trabajo de ingesta de datos para la tabla {TableName}. Este problema es transitorio y se puede resolver reiniciando la sesión e intentando de nuevo. Si este problema persiste, póngase en contacto con el soporte técnico.
InputError ModoDeEscrituraInválido 2601 Modo de escritura no válido. Use anexar o sobrescribir. Especifique un modo de escritura válido (anexar o sobrescribir) antes de guardar el dataframe.
InputError ParticiónNoPermitida 2602 No se pueden crear particiones de tablas de análisis. Quite todas las particiones de todas las columnas de las tablas de análisis.
InputError MissingTableSuffixLake 2603 Nombre de tabla personalizado no válido. Todos los nombres de las tablas personalizadas del lago de datos deben terminar con _SPRK. Agregue _SPRK como sufijo al nombre de la tabla antes de escribirlo en el lago de datos.
InputError MissingTableSuffixLA 2604 Nombre de tabla personalizado no válido. Todos los nombres de las tablas de análisis personalizados deben terminar con _SPRK_CL. Agregue _SPRK_CL como sufijo al nombre de la tabla antes de escribirlo en el almacenamiento de análisis.
ErrorDesconocido Error Interno del Servidor 2901 Ha habido algún error. Reinicie la sesión e inténtelo de nuevo. Este problema es transitorio y se puede resolver reiniciando la sesión e intentando de nuevo. Si este problema persiste, póngase en contacto con el soporte técnico.