Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
- En Azure Portal, vaya al área de trabajo de Log Analytics a la que desea asignar el rol.
- Seleccione Control de acceso (IAM) en el panel de navegación izquierdo.
- Seleccione Agregar asignación de roles.
- En la tabla Rol, seleccione Colaborador de Log Analytics y, a continuación, seleccione Siguiente.
- Seleccione Identidad administrada y, a continuación, seleccione Seleccionar miembros.
- 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. - 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:
- Seleccione El Marketplace de extensiones en la barra de herramientas izquierda.
- Busque Sentinel.
- Seleccione la extensión de Microsoft Sentinel y seleccione Instalar.
- Una vez instalada la extensión, el icono de escudo de Microsoft Sentinel aparece en la barra de herramientas izquierda.
Instale la extensión Copilot de GitHub para Visual Studio Code para habilitar la finalización de código y sugerencias en cuadernos.
- Busque GitHub Copilot en Extensions Marketplace e instálelo.
- 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
Seleccione el icono de escudo de Microsoft Sentinel en la barra de herramientas izquierda.
Aparece un cuadro de diálogo con el texto siguiente La extensión "Microsoft Sentinel" quiere iniciar sesión con Microsoft. seleccione Permitir.
Seleccione el nombre de la cuenta para completar el inicio de sesión.
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.
Crea un nuevo cuaderno
Para crear un cuaderno, use uno de los métodos siguientes.
Escriba > en el cuadro de búsqueda o presione Ctrl+Mayús+P y, a continuación, escriba Crear nuevo cuaderno de Jupyter Notebook.
Seleccione Archivo > Archivo Nuevo, y a continuación, seleccione Jupyter Notebook en la lista desplegable.
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.
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.
Seleccione Microsoft Sentinel en la lista para ver una lista de grupos de tiempo de ejecución.
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.
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:
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, ,ConnectedoNot Connected.
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.
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.
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.
El panel de Salida.
- En el panel Salida , seleccione Microsoft Sentinel en la lista desplegable.
- Seleccione Depurar para incluir entradas de registro detalladas.
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.
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.
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. |