Uso de cuadernos de Jupyter para buscar amenazas de seguridad

Nota

Azure Sentinel ahora se denomina Microsoft Sentinel y se actualizarán estas páginas en las próximas semanas. Obtenga más información sobre las recientes mejoras de seguridad de Microsoft.

Nota

Para obtener información sobre la disponibilidad de características en las nubes de la Administración Pública de Estados Unidos, consulte las tablas de Microsoft Sentinel en Disponibilidad de características en la nube para clientes de la Administración Pública de Estados Unidos.

La base de Microsoft Sentinel es el almacén de datos; este combina consultas de alto rendimiento y esquemas dinámicos, y tiene capacidad para escalar a volúmenes de datos masivos. Azure Portal y todas las herramientas de Microsoft Sentinel emplean una API común para acceder a este almacén de datos.

Esta misma API está disponible también para herramientas externas, como los cuadernos de Jupyter y Python. Mientras que muchas tareas comunes pueden llevarse a cabo en el portal, Jupyter amplía las posibilidades de lo que se puede hacer con estos datos. Combina una programación completa con una vasta colección de bibliotecas pensadas para el análisis de datos, la visualización y Machine Learning. Estas características hacen que Jupyter sea una herramienta fascinante para la búsqueda e investigación relacionadas con cuestiones de seguridad.

Por ejemplo, use cuadernos para:

  • Realizar análisis que no se incluyan de forma preestablecida en Microsoft Sentinel, como algunas características de aprendizaje automático de Python.
  • Crear visualizaciones de datos que no se incluyan de forma preestablecida en Microsoft Sentinel, como escalas de tiempo personalizadas y árboles de proceso.
  • Integrar orígenes de datos fuera de Microsoft Sentinel, como un conjunto de datos local.

Hemos integrado la experiencia de Jupyter en Azure Portal, lo que facilita el proceso para crear y ejecutar cuadernos para analizar los datos. La biblioteca Kqlmagic actúa como el elemento aglutinador que permite realizar consultas KQL desde Microsoft Sentinel y ejecutarlas directamente en un cuaderno.

Microsoft Sentinel incluye varios cuadernos, desarrollados por algunos de los analistas de seguridad de Microsoft:

  • Algunos de estos cuadernos se crean para escenarios concretos y se pueden usar tal cual;
  • otros se incluyen como ejemplos para ilustrar las técnicas y características que se pueden copiar o adaptar para usarlas en sus propios cuadernos,

y también se pueden importar otros desde el repositorio de Microsoft Sentinel en GitHub.

Componentes de Notebook

Los cuadernos constan de dos componentes:

  • La interfaz basada en explorador donde se escriben y ejecutan las consultas y el código, y donde se muestran los resultados de la ejecución.
  • Un kernel, responsable de analizar y ejecutar el código en sí.

El kernel del cuaderno de Microsoft Sentinel se ejecuta en una máquina virtual de Azure. Existen varias opciones de licencia para usar máquinas virtuales más eficaces si los cuadernos incluyen modelos de aprendizaje automático complejos.

Los cuadernos de Microsoft Sentinel usan muchas bibliotecas de Python conocidas, como pandas, matplotlib y bokeh, entre otras. Existen otros muchos paquetes de Python que se pueden elegir, que cubren áreas como las siguientes:

  • Visualizaciones y gráficos
  • Procesamiento de datos y análisis
  • Estadísticas y computación numérica
  • Aprendizaje automático y aprendizaje profundo

Para evitar tener que escribir o pegar código complejo y repetitivo en las celdas del cuaderno, la mayoría de los cuadernos de Python se basan en bibliotecas de terceros denominadas paquetes. Para usar un paquete en un cuaderno, debe instalarlo e importarlo. Proceso de ML de Azure tiene los paquetes más comunes preinstalados. Asegúrese de importar el paquete o la parte pertinente del paquete, como un módulo, un archivo, una función o una clase.

En los cuadernos de Microsoft Sentinel se usa un paquete de Python denominado MSTICPy, que es una colección de herramientas de ciberseguridad para la recuperación, el análisis, el enriquecimiento y la visualización de datos.

Las herramientas de MSTICPy están diseñadas expresamente para facilitar la creación de cuadernos que se puedan usar en búsquedas e investigaciones, y estamos trabajando activamente en nuevas características y mejoras. Para más información, consulte:

El repositorio de Microsoft Sentinel en GitHub es la ubicación de los futuros cuadernos de Microsoft Sentinel creados por Microsoft o procedentes de contribuciones de la comunidad.

Administración del acceso a los cuadernos de Microsoft Sentinel

Para usar los cuadernos de Jupyter Notebook en Microsoft Sentinel, primero debe tener los permisos adecuados, en función del rol de usuario.

Aunque puede ejecutar cuadernos de Microsoft Sentinel en JupyterLab o Jupyter clásico, en Microsoft Sentinel, los cuadernos se ejecutan en una plataforma de Azure Machine Learning. Para ejecutar cuadernos en Microsoft Sentinel, debe tener acceso adecuado al área de trabajo de Microsoft Sentinel y un área de trabajo de Azure Machine Learning.

Permiso Descripción
Permisos de Microsoft Sentinel Al igual que otros recursos de Microsoft Sentinel, para acceder a los cuadernos de Microsoft Sentinel se requiere un rol de lector, respondedor o colaborador de Microsoft Sentinel.

Para más información, consulte Permisos de Microsoft Sentinel.
Permisos de Azure Machine Learning Un área de trabajo de Azure Machine Learning es un recurso de Azure. Al igual que otros recursos de Azure, cuando se crea un área de trabajo de Azure Machine Learning, viene con roles predeterminados. Puede agregar usuarios al área de trabajo y asignarlos a uno de estos roles integrados. Para más información, vea Roles predeterminados de Azure Machine Learning y Roles integrados de Azure.

Importante: El acceso de los roles puede tener un ámbito de varios niveles en Azure. Por ejemplo, un usuario con acceso de propietario a un área de trabajo podría no tener acceso de propietario al grupo de recursos que contiene el área de trabajo. Para obtener más información, consulte Cómo funciona Azure RBAC.

Si es propietario de un área de trabajo de Azure ML, puede agregar y quitar roles para el área de trabajo y asignar roles a los usuarios. Para más información, consulte:
- Azure Portal
- PowerShell
- CLI de Azure
- API de REST
- Plantillas de Azure Resource Manager
- CLI de Azure Machine Learning

Si los roles integrados no son suficientes, también puede crear roles personalizados. Los roles personalizados pueden tener permisos para leer, escribir, eliminar y procesar recursos de ese área de trabajo. Puede hacer que el rol esté disponible en un nivel de área de trabajo específico, un nivel de grupo de recursos específico o un nivel de suscripción específico. Para más información, vea Creación de un rol personalizado.

Creación de un área de trabajo de Azure ML desde Microsoft Sentinel

En este procedimiento se describe cómo crear un área de trabajo de Azure ML desde Microsoft Sentinel para los cuadernos de Microsoft Sentinel.

Para crear el área de trabajo:

  1. En Azure Portal, vaya a Microsoft Sentinel > Administración de amenazas > Cuadernos y, después, seleccione Crear un área de trabajo de AML.

  2. Escriba los detalles siguientes y, después, seleccione Siguiente.

    Campo Descripción
    Suscripción Seleccione la suscripción de Azure que quiera usar.
    Grupos de recursos Use un grupo de recursos existente en su suscripción o escriba un nombre para crear un nuevo grupo de recursos. Un grupo de recursos almacena los recursos relacionados con una solución de Azure.
    Workspace name (Nombre del área de trabajo) Escriba un nombre único que identifique el área de trabajo. Los nombres deben ser únicos en el grupo de recursos. Utilice un nombre que sea fácil de recordar y que se diferencie del de las áreas de trabajo creadas por otros.
    Región Seleccione la ubicación más cercana a los usuarios y los recursos de datos para crear el área de trabajo.
    Cuenta de almacenamiento Una cuenta de almacenamiento se usa como un almacén de datos predeterminado para el área de trabajo. Puede crear un recurso de Azure Storage o seleccionar uno existente en la suscripción.
    KeyVault Un almacén de claves se usa para almacenar secretos y otra información confidencial que el área de trabajo necesita. Puede crear un recurso de Azure Key Vault o seleccionar uno existente en la suscripción.
    Application Insights El área de trabajo usa Azure Application Insights para almacenar información de supervisión sobre los modelos implementados. Puede crear un recurso de Azure Application Insights o seleccionar uno existente en la suscripción.
    Registro de contenedor Un registro de contenedor se usa para registrar imágenes de Docker usadas en el entrenamiento y las implementaciones. Para minimizar los costos, se crea un recurso de Azure Container Registry solo después de compilar la primera imagen. Como alternativa, puede optar por crear el recurso ahora o seleccionar uno existente en la suscripción, o bien seleccione Ninguno si no desea usar ningún registro de contenedor.
  3. En la pestaña Redes, seleccione si desea conectar el área de trabajo mediante un punto de conexión público o mediante un punto de conexión privado que configure. Si el área de trabajo de Microsoft Sentinel tiene un punto de conexión público, se recomienda usar un punto de conexión público para el área de trabajo de Azure ML para evitar posibles problemas en la comunicación de red. Seleccione Revisar y crear cuando haya terminado.

  4. En la pestaña Revisar y crear, revise la información para comprobar que es correcta y, después, seleccione Crear para empezar a implementar el área de trabajo. Por ejemplo:

    Revise y cree el área de trabajo de Machine Learning desde Microsoft Sentinel .

    La creación del área de trabajo en la nube puede tardar varios minutos. Durante este tiempo, la página Información general del área de trabajo muestra el estado de implementación actual y se actualiza cuando se completa la implementación.

  5. Una vez completada la implementación, puede volver a Cuadernos de Microsoft Sentinel e iniciar los cuadernos desde la nueva área de trabajo de Azure ML.

    Si tiene varios cuadernos, asegúrese de seleccionar un área de trabajo de AML predeterminada que se usará al iniciar los cuadernos. Por ejemplo:

    Seleccione un área de trabajo de AML predeterminada para los cuadernos .

Inicio de un cuaderno en el área de trabajo de Azure ML

Una vez creada el área de trabajo de AML, empiece a iniciar los cuadernos en el área de trabajo de Azure ML, desde Microsoft Sentinel.

Nota

Puede ver un cuaderno como un documento estático, como en el representador de cuadernos estáticos integrado de GitHub. Pero para ejecutar código en un cuaderno, debe adjuntarlo a un proceso de back-end denominado kernel de Jupyter. El kernel ejecuta el código y contiene todas las variables y objetos que crea el código. El explorador es el visor de estos datos.

En Azure Machine Learning, el kernel se ejecuta en una máquina virtual denominada Proceso de Azure Machine Learning. La instancia de Proceso puede admitir la ejecución de muchos cuadernos a la vez.

Para iniciar el cuaderno desde Microsoft Sentinel:

  1. En Azure Portal, vaya a Microsoft Sentinel > Threat management (Administración de amenazas) > Notebooks (Cuadernos), donde puede ver los cuadernos que proporciona Microsoft Sentinel.

    Sugerencia

    En la parte superior de la página Cuadernos, seleccione Guías y comentarios para mostrar más recursos e instrucciones en un panel de la derecha.

  2. Seleccione un cuaderno para ver su descripción, los tipos de datos necesarios y los orígenes de datos.

    Cuando haya encontrado el cuaderno que desea usar, seleccione Guardar cuaderno para clonarlo en su propia área de trabajo.

    Edite el nombre según sea necesario. Si el cuaderno ya existe en el área de trabajo, puede sobrescribir el cuaderno existente o crear uno.

    Guarde un cuaderno para clonarlo en su propia área de trabajo .

  3. Una vez guardado el cuaderno, el botón Guardar cuaderno cambia a Iniciar cuaderno. Seleccione Iniciar cuaderno para abrirlo en el área de trabajo de AML.

    Por ejemplo:

    Inicie el cuaderno en el área de trabajo de AML .

  4. En la parte superior de la página, seleccione una instancia de Proceso que se usará para el servidor de cuadernos.

    Si no tiene una instancia de proceso, cree una. Si la instancia de proceso está detenida, asegúrese de iniciarla. Para más información, vea Ejecución de un cuaderno en Estudio de Azure Machine Learning.

    Solo puede ver y usar las instancias de proceso que usted cree. Los archivos de usuario se almacenan de forma independiente de la máquina virtual y se comparten entre todas las instancias de proceso en el área de trabajo.

    Sugerencia

    Si va a crear una instancia de proceso para probar los cuadernos, cree la instancia de proceso con la categoría De uso general.

    El kernel también se muestra en la parte superior derecha de la ventana de Azure Machine Learning. Si el kernel que necesita no está seleccionado, seleccione otra versión en la lista desplegable.

  5. Una vez creado e iniciado el servidor de cuadernos, puede empezar a ejecutar las celdas del cuaderno. En cada celda, seleccione el icono Ejecutar para ejecutar el código del cuaderno.

    Para más información, vea Métodos abreviados del modo de comando.

  6. Si el cuaderno no responde o quiere volver a empezar, puede reiniciar el kernel y volver a ejecutar las celdas del cuaderno desde el principio. Seleccione Kernel operations > Restart kernel (Operaciones de kernel>Reiniciar kernel). Por ejemplo:

    Reinicie un kernel de cuaderno .

    Importante

    Al reiniciar el kernel se borran todas las variables y otros estados. Tendrá que volver a ejecutar las celdas de inicialización y autenticación después de reiniciar.

Ejecución de código en el cuaderno

En un cuaderno:

  • Las celdas de Markdown tienen texto, incluido HTML, e imágenes estáticas.
  • Las celdas de código contienen código. Después de seleccionar una celda de código, ejecute el código en la celda; para ello, seleccione el icono Reproducir situado a la izquierda de la celda, o bien presione MAYÚS+ENTRAR.

Importante

Ejecute siempre las celdas de código del cuaderno en secuencia. La omisión de celdas puede producir errores.

Por ejemplo, ejecute la siguiente celda de código en el cuaderno:

# This is your first code cell. This cell contains basic Python code.

# You can run a code cell by selecting it and then selecting
# the Play button to the left of the cell, or by pressing SHIFT+ENTER.
# Code output displays below the code.

print("Congratulations, you just ran this code cell")

y = 2 + 2

print("2 + 2 =", y)

El código de ejemplo mostrado anteriormente genera esta salida:

Congratulations, you just ran this code cell

2 + 2 = 4

Las variables establecidas dentro de una celda de código de cuaderno se conservan entre celdas, por lo que puede encadenar celdas. Por ejemplo, la siguiente celda de código usa el valor de y de la celda anterior:

# Note that output from the last line of a cell is automatically
# sent to the output cell, without needing the print() function.

y + 2

La salida es la siguiente:

6

Descarga de todos los cuadernos de Microsoft Sentinel

En esta sección se describe cómo usar Git para descargar todos los cuadernos disponibles en el repositorio de Microsoft Sentinel en GitHub, desde dentro de un cuaderno de Microsoft Sentinel, directamente al área de trabajo de Azure Machine Learning.

Al almacenar los cuadernos de Microsoft Sentinel en el área de trabajo de Azure Machine Learning puede mantenerlos actualizados con facilidad.

  1. Desde un cuaderno de Microsoft Sentinel, escriba el código siguiente en una celda vacía y, después, ejecute la celda:

    !git clone https://github.com/Azure/Azure-Sentinel-Notebooks.git azure-sentinel-nb
    

    Se crea una copia del contenido del repositorio de GitHub en el directorio azure-sentinel-nb de la carpeta de usuario del área de trabajo de Azure Machine Learning.

  2. Copie los cuadernos que quiera desde esta carpeta al directorio de trabajo.

  3. Para actualizar los cuadernos con los cambios recientes de GitHub, ejecute lo siguiente:

    !cd azure-sentinel-nb && git pull
    

Solución de problemas

Normalmente, un cuaderno crea o se adjunta a un kernel sin problemas y no es necesario realizar ningún cambio manual. Si se producen errores o el cuaderno no parece estar en ejecución, es posible que tenga que comprobar la versión y el estado del kernel.

Si tiene problemas con los cuadernos, vea Solución de problemas con los cuadernos en Azure Machine Learning.

Forzado del almacenamiento en caché de las cuentas de usuario y las credenciales entre ejecuciones de cuadernos

De forma predeterminada, las cuentas de usuario y las credenciales no se almacenan en caché entre las ejecuciones del cuaderno, incluso para la misma sesión.

Para forzar el almacenamiento en caché durante la sesión:

  1. Autentíquese con la CLI de Azure. En una celda vacía del cuaderno, escriba y ejecute el código siguiente:

    !az login
    

    Se mostrará la siguiente salida:

    To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the 9-digit device code to authenticate.
    
  2. Seleccione y copie el token de nueve caracteres de la salida y seleccione la dirección URL devicelogin para ir a la página indicada.

  3. Pegue el token en el cuadro de diálogo y continúe con el inicio de sesión como se le solicite.

    Cuando el inicio de sesión se complete correctamente, verá la siguiente salida:

    Subscription <subscription ID> 'Sample subscription' can be accessed from tenants <tenant ID>(default) and <tenant ID>. To select a specific tenant when accessing this subscription, use 'az login --tenant TENANT_ID'.
    
    

Nota

The following tenants don't contain accessible subscriptions. Use 'az login --allow-no-subscriptions' to have tenant level access.

<tenant ID> 'foo'
<tenant ID> 'bar'
[
{
   "cloudName": "AzureApp",
   "homeTenantId": "<tenant ID>",
   "id": "<ID>",
   "isDefault": true,
   "managedByTenants": [
   ....

Error: Runtime dependency of PyGObject is missing

If the Runtime dependency of PyGObject is missing error appears when you load a query provider, try troubleshooting using the following steps:

  1. Proceed to the cell with the following code and run it:

    qry_prov = QueryProvider("AzureSentinel")
    

    Se muestra una advertencia similar a la del mensaje siguiente, que indica que falta una dependencia de Python (pygobject):

    Runtime dependency of PyGObject is missing.
    
    Depends on your Linux distribution, you can install it by running code similar to the following:
    sudo apt install python3-gi python3-gi-cairo gir1.2-secret-1
    
    If necessary, see PyGObject's documentation: https://pygobject.readthedocs.io/en/latest/getting_started.html
    
    Traceback (most recent call last):
      File "/anaconda/envs/azureml_py36/lib/python3.6/site-packages/msal_extensions/libsecret.py", line 21, in <module>
    import gi  # https://github.com/AzureAD/microsoft-authentication-extensions-for-python/wiki/Encryption-on-Linux
    ModuleNotFoundError: No module named 'gi'
    
  2. Use el script aml-compute-setup.sh, ubicado en el repositorio de cuadernos de Microsoft Sentinel de GitHub, para instalar automáticamente pygobject en todos los cuadernos y entornos de Anaconda en la instancia de Proceso.

Sugerencia

También puede corregir esta advertencia si ejecuta el código siguiente desde un cuaderno:

!conda install --yes -c conda-forge pygobject

Pasos siguientes

Integre la experiencia del cuaderno con el análisis de macrodatos en Azure Synapse. Para obtener más información, vea Integración de cuadernos con Azure Synapse (versión preliminar pública).

Otros cuadernos compartidos del repositorio de GitHub de Microsoft Sentinel están diseñados como herramientas útiles, ilustraciones y ejemplos de código que puede usar al desarrollar sus propios cuadernos.

Agradecemos cualquier comentario, sugerencias, peticiones de características, contribuciones de cuadernos, informes de errores o mejoras y adiciones a cuadernos ya existentes. Vaya al repositorio de Azure Sentinel en GitHub para abrir una incidencia, crear una bifurcación y cargar una contribución.

  • Obtenga más información sobre el uso de los cuadernos en la búsqueda y la investigación de amenazas mediante la exploración de algunas plantillas de cuadernos, como Examen de credenciales en Azure Log Analytics e Investigación guiada: alertas de proceso.

    Busque más plantillas de cuaderno en la pestaña Microsoft Sentinel > Cuadernos > Plantillas.

  • Busque más cuadernos en el repositorio de Microsoft Sentinel en GitHub:

    • El directorio Sample-Notebooks incluye cuadernos de ejemplo que se guardan con datos que puede usar para mostrar la salida deseada.

    • El directorio HowTos incluye cuadernos que describen conceptos como la configuración de la versión predeterminada de Python, la creación de marcadores de Microsoft Sentinel a partir de un cuaderno, etc.

Para obtener más información, consulte: