Desarrollo de una solución SIEM para Microsoft Sentinel

Las soluciones de Microsoft Sentinel permiten a los proveedores de software independientes (ISV) y a los socios agrupar un conector de datos con contenido de seguridad relacionado, como libros de trabajo, reglas analíticas, consultas de búsqueda proactiva, playbooks y analizadores, en un único paquete instalable. A continuación, los clientes pueden detectar e implementar estas soluciones desde el centro de contenido de Microsoft Sentinel y Azure Marketplace.

Note

Si es un ISV que crea una integración de Microsoft Sentinel, es posible que el equipo de Microsoft App Assure pueda ayudar a lo largo del proceso. Para interactuar con el equipo, envíe un correo electrónico a azuresentinelpartner@microsoft.com.

Phase Activities
Más información Obtenga información sobre Sentinel, identifique qué crear, crear cuentas de publicador y configurar el entorno.
Build Aprovisiona tu entorno, compila tu conector y el contenido de la solución
Test Empaquetar la solución, probarla, enviar una solicitud de incorporación de cambios y resolver comentarios
Publicar Crear una oferta en el Centro de partners, probar la versión preliminar y publicarla
Versión preliminar Informar a los clientes, resolver problemas de soporte técnico, supervisar durante cuatro semanas
Ir al mercado Quite el indicador de versión preliminar, escuche a los clientes y mejore su solución

Learn

Antes de comenzar la compilación, complete los siguientes pasos:

Build

En la fase de creación, configuras tu entorno de desarrollo y, a continuación, creas el contenido del conector y de la solución.

Configura tu entorno

Antes de compilar, configure el entorno de desarrollo para que pueda crear, probar y enviar contenido de la solución.

Bifurcación y clonación del repositorio

Para hacer un fork y clonar el repositorio de Azure-Sentinel, siga estos pasos:

  1. En GitHub, vaya al repositorio Azure-Sentinel y seleccione Fork.

  2. Clone la bifurcación en la máquina local:

    git clone https://github.com/<your-github-username>/Azure-Sentinel.git
    cd Azure-Sentinel
    
  3. Añada el remoto upstream para poder traer los cambios más recientes:

    git remote add upstream https://github.com/Azure/Azure-Sentinel.git
    

Configuración de un área de trabajo de desarrollo y pruebas

Necesita un área de trabajo de Microsoft Sentinel operativa para desarrollar y validar el conector y el contenido antes de enviarlos. Consulte Incorporación de Microsoft Sentinel.

Una vez aprovisionado el área de trabajo, asigne los permisos siguientes:

  • Colaborador de Microsoft Sentinel en el espacio de trabajo para desplegar y administrar recursos
  • Colaborador de Log Analytics en el espacio de trabajo para crear y administrar tablas personalizadas y reglas de recopilación de datos (DCR)
  • Colaborador en el grupo de recursos para implementar plantillas de ARM durante las pruebas

Incorporación al portal de Defender

Incorpore el área de trabajo al portal de Defender para validar la instalación de la solución, asegúrese de la ingesta sin problemas en la plataforma de operaciones de seguridad unificada y pruebe de un extremo a otro antes de la publicación. Para obtener más información, consulte Microsoft Sentinel en el portal de Microsoft Defender.

Compilar una solución

Una solución Microsoft Sentinel es una carpeta de archivos de contenido y conector que la herramienta de empaquetado ensambla en un paquete implementable. Cree la estructura de carpetas, agregue los archivos de empaquetado y, a continuación, compile cada tipo de contenido.

Creación de la estructura de carpetas de la solución en GitHub

Para configurar la estructura de carpetas de la solución, siga estos pasos:

  1. Crea una nueva rama en la bifurcación y cambie a ella. Use un nombre descriptivo como add-<YourSolutionName>-solution:

    git checkout -b add-<YourSolutionName>-solution
    
  2. Cree una carpeta con el nombre de la solución en Solutions/:

    Solutions/<YourSolutionName>/
    ├── Data/
    │   └── Solution_<YourSolutionName>.json
    ├── SolutionMetadata.json
    ├── ReleaseNotes.md
    ├── Data Connectors/
    ├── Workbooks/
    ├── Analytic Rules/
    ├── Hunting Queries/
    ├── Playbooks/
    └── Parsers/
    
    Archivo/carpeta Obligatorio Contenido
    Data/Solution_<YourSolutionName>.json Obligatorio Manifiesto de solución que enumera todos los archivos de contenido de la solución y impulsa la herramienta de creación de paquetes
    SolutionMetadata.json Obligatorio Metadatos del publicador y del marketplace: identificador del publicador, identificador de la oferta, categorías e información de soporte
    ReleaseNotes.md Obligatorio Tabla de historial de cambios con versiones, necesaria para cada envío de paquete
    Data Connectors/ Opcional Archivos JSON del conector o código Azure Functions para conectores basados en funciones
    Workbooks/ Opcional Archivos JSON del libro de trabajo y capturas de pantalla de vista previa en blanco y negro
    Analytic Rules/ Opcional Plantillas de reglas analíticas de YAML
    Hunting Queries/ Opcional Plantillas YAML de consultas de búsqueda
    Playbooks/ Opcional Archivos JSON de cuadernos de estrategias y definiciones de conectores personalizados de Azure Logic Apps
    Parsers/ Opcional Definiciones en YAML de funciones y analizadores de Kusto

    Las subcarpetas de contenido son opcionales. Cree solo las carpetas que correspondan a su solución. No es necesario incluir todos los tipos de contenido, pero cumplir los requisitos mínimos de contenido mejora la puntuación de calidad.

    Para obtener un ejemplo de una estructura de carpetas completa, abra la carpeta Solutions/ en el repositorio y examine algunas de las soluciones existentes.

Creación de los archivos de empaquetado de soluciones

Data/Solution_<YourSolutionName>.json

Este archivo controla la herramienta de empaquetado V3. Enumera todos los archivos de contenido de la solución y controla cómo se ensamblan en mainTemplate.json. Cada tipo de contenido es una matriz. Agregue una entrada por archivo para cada fragmento de contenido que tenga. Para obtener más información sobre la herramienta de empaquetado, consulte Empaquetar la solución.

En el ejemplo siguiente, la solución tiene dos reglas analíticas, por lo que la "Analytic Rules" matriz tiene dos entradas. Si, por ejemplo, no va a crear ningún cuaderno de estrategias, elimine por completo la clave "Playbooks" del archivo.

{
  "Name": "Contoso MyProduct",
  "Author": "Contoso - support@contoso.com",
  "Logo": "<img src=\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/contoso.svg\" width=\"75px\" height=\"75px\">",
  "Description": "The Contoso MyProduct solution for Microsoft Sentinel enables you to ingest MyProduct logs into Microsoft Sentinel.",
  "BasePath": "C:/GitHub/Azure-Sentinel/Solutions/Contoso MyProduct",
  "Version": "1.0.0",
  "Metadata": "SolutionMetadata.json",
  "TemplateSpec": true,
  "Data Connectors": [
    "Data Connectors/ContosoMyProduct.json"
  ],
  "Workbooks": [
    "Workbooks/ContosoMyProductWorkbook.json"
  ],
  "Analytic Rules": [
    "Analytic Rules/ContosoMyProductSuspiciousLogin.yaml",
    "Analytic Rules/ContosoMyProductDataExfiltration.yaml"
  ],
  "Hunting Queries": [
    "Hunting Queries/ContosoMyProductThreatHunt.yaml"
  ],
  "Parsers": [
    "Parsers/ContosoMyProduct.yaml"
  ],
  "Playbooks": [
    "Playbooks/ContosoMyProduct-EnrichIncident/azuredeploy.json"
  ]
}
Campo Notas
Name Solo caracteres alfanuméricos y espacios. Sin guiones, caracteres de subrayado ni símbolos.
Author Formato: Organization - email@domain.com
Logo Etiqueta HTML <img> que apunta al logotipo SVG en la URL directa de GitHub en Logos/. Consulte Agregar el logotipo para conocer los requisitos de archivo y las reglas de validación.
BasePath La ruta de acceso del repositorio local a la carpeta de la solución. No se usa en tiempo de ejecución.
Version Debe coincidir con SolutionMetadata.json y mainTemplate.json.
TemplateSpec Compruebe las soluciones existentes en el repositorio para obtener el valor correcto para el tipo de conector.
Matrices de contenido Una entrada por archivo. Agregue todos los archivos de un tipo de contenido determinado a su matriz. Quite la clave por completo si no tiene contenido de ese tipo. No deje una matriz vacía. Las rutas son relativas a BasePath.

SolutionMetadata.json

Este archivo contiene los metadatos de la tienda y del editor que se utilizan durante la certificación de Partner Center.

{
  "publisherId": "contoso",
  "offerId": "contoso-myproduct-sentinel",
  "firstPublishDate": "2026-06-15",
  "lastPublishDate": "2026-06-15",
  "providers": [
    "Contoso"
  ],
  "categories": {
    "domains": [
      "Security - Threat Intelligence"
    ]
  },
  "support": {
    "name": "Contoso",
    "email": "support@contoso.com",
    "tier": "Partner",
    "link": "https://support.contoso.com"
  }
}

publisherId y offerId proceden de la oferta del Centro de partners. support.tier debe ser "Partner" para las soluciones de ISV. Para obtener valores válidos categories.domains , consulte el catálogo de soluciones.

Campo Notas
publisherId Su id. de editor de Partner Center.
offerId ID de la oferta del Centro de partners. Este valor se establece al crear la oferta en el Centro de partners y no se puede cambiar después de la creación. El valor debe coincidir exactamente con el ID de oferta en Partner Center. Una falta de coincidencia provoca un error de certificación. Consulte Empaquetar una solución SIEM para Microsoft Sentinel para saber cómo se crea el identificador de la oferta.
firstPublishDate Fecha ISO 8601. Establezca una vez y no lo cambie después de la publicación inicial.
lastPublishDate Actualice para que coincida con cada nueva versión.
providers Matriz de nombres de proveedor o proveedor de productos.
categories.domains Una o varias categorías de dominio del catálogo de soluciones.
categories.verticals Sectores verticales opcionales. Omita si no es aplicable.
support.tier "Partner"para ISV, "Microsoft" para Microsoft, "Community" para la comunidad.

ReleaseNotes.md

El ReleaseNotes.md archivo registra el historial de cambios de la solución. Este archivo se valida durante las validaciones de PR. Las entradas ausentes o mal formadas hacen que se rechace la PR.

La tabla debe tener exactamente tres columnas con estos nombres de encabezado exactos (incluidos los marcadores de negrita):

| **Version** | **Date Modified (DD-MM-YYYY)** | **Change History** |
|---|---|---|
| 1.0.1 | 12-06-2026 | Updated analytic rule query to fix false positives. |
| 1.0.0 | 01-06-2026 | Initial solution release. |

Reglas de validación

  • Formato de versión: X.Y.Z no incluya un v prefijo. Se requieren las tres partes.
  • Las versiones se muestran en orden descendente con la más reciente de la fila en primer lugar
  • Formato de fecha: DD-MM-YYYY con guiones (no YYYY-MM-DD)
  • Los encabezados de columna deben coincidir exactamente, incluidos los **bold** marcadores
  • La celda Historial de cambios no debe estar vacía
  • Agregue una nueva fila para cada salto de versión, incluidas las correcciones de errores tipográficos.

La versión de ReleaseNotes.md debe coincidir con la versión de SolutionMetadata.json, Data/Solution_*.jsony el nombre de archivo ZIP del paquete.

Coloque el logotipo en Logos/<YourProductName>.svg en la raíz del repositorio. Inclúyala en Data/Solution_<YourSolutionName>.json mediante una etiqueta HTML <img> que apunte a la URL sin procesar de GitHub:

"Logo": "<img src=\"https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Logos/YourProductName.svg\" width=\"75px\" height=\"75px\">"

El archivo SVG debe cumplir los siguientes requisitos:

Check Requisito
Formato de archivo Solo extensión .svg. No se permiten PNG, JPEG u otros formatos.
Tamaño de archivo ≤ 5 KB
atributo style= No está permitido. Elimine todos los atributos style="..." en línea de los elementos.
atributo cls= No permitida
xmlns:xlink espacio de nombres No está permitido. Eliminar del elemento raíz <svg>.
atributo data-name No está permitido. Illustrator agrega estos atributos como nombres de capa. Deben quitarse.
xlink:href No está permitido. Use rutas SVG insertadas en lugar de referencias de imagen incrustadas.
Etiqueta de <title> No está permitido. Quite todos los <title>...</title> elementos.
PNG incrustado No está permitido. Se rechaza cualquier elemento <image> que haga referencia a archivos .png
Valores de elemento id Si hay algún id="..." atributo presente, cada valor debe ser un UUID válido (por ejemplo, id="a1b2c3d4-e5f6-4789-abcd-0123456789ab"). Los identificadores legibles por humanos, como id="Layer_1", fallan. Todos los identificadores deben ser únicos dentro del archivo.

Caution

Los archivos SVG exportados directamente desde Adobe Illustrator, Figma o Inkscape sin limpiar casi siempre fallan la validación. Entre los artefactos de exportación comunes que se deben quitar se incluyen los siguientes:

  • style="stroke: none; fill: rgb(0,0,0); ..." en cada elemento: sustituir por los atributos directos fill y stroke, o eliminarlos si son los predeterminados
  • data-name="Layer 1": atributo de nombre de capa de Illustrator; eliminarlo de cada elemento <g>
  • xmlns:xlink="http://www.w3.org/1999/xlink": En el elemento raíz <svg>; eliminar el atributo completo
  • <title>Layer 1</title>: Dentro de la primera <g>; elimine la etiqueta
  • IDs no GUID como id="Layer_1" o id="cls-1": Reemplazar por un UUID o eliminar el id atributo por completo si no está referenciado

Un logotipo limpio solo usa atributos fill y stroke directamente en elementos de trazado, sin atributos id salvo cuando hagan referencia a un elemento <defs>. Para un ejemplo válido mínimo, véase Logos/XBOW.svg.

Creación de un conector de datos

Si va a crear un conector mediante el flujo de trabajo del agente de IA, consulte Creación de conectores personalizados mediante el agente de IA en Microsoft Sentinel en lugar de seguir los pasos siguientes.

Elección del tipo de conector

Microsoft Sentinel admite varios tipos de conector, muchos de los cuales usan Codeless Connector Framework (CCF). Elija la que mejor se adapte a su origen de datos y la experiencia de cliente deseada.

Tipo de conector Más adecuado para Instrucciones
Sondeo CCF API REST a las que llama el conector según una programación. SaaS totalmente, sin agente ni máquina virtual necesaria. Incluye supervisión de estado integrada y compatibilidad completa con Microsoft. Creación de un conector sin código para Microsoft Sentinel
Inserción de CCF Fuentes de datos que envían registros a un punto de conexión de Microsoft Sentinel. Conectores de inserción CCF de Microsoft Sentinel (versión preliminar)
blob de CCF Orígenes de datos que escriben registros en Azure Blob Storage o Azure Data Lake Storage. Configuración del conector de Azure Storage
CCF GCP Fuentes de datos que escriben registros en Google Cloud Storage. Referencia del conector de datos de GCP
CEF Dispositivos implementados localmente que emiten registros en formato Common Event Format. Los datos llegan a la conocida tabla CommonSecurityLog. Conexión de registros con formato CEF
Syslog Dispositivos locales que solo pueden emitir Syslog sin procesar. Menos preferido; las consultas requieren análisis de KQL. Recopilación de orígenes de datos de syslog
Azure Functions(heredado) las API REST cuando CCF no es viable debido a limitaciones técnicas. Use solo como último recurso. Póngase en contacto con azuresentinelpartner@microsoft.com antes de construir para confirmar si cumple los requisitos. plantilla de conector de Azure Functions
Compilación de la definición del conector

Los pasos de compilación detallados son específicos de cada tipo de conector. Los pasos de compilación detallados son específicos de cada tipo de conector. Siga las instrucciones del tipo elegido de la tabla de tipos de conector. .

Use las siguientes soluciones en el repositorio de Azure-Sentinel como referencias para cada tipo de conector.

Tipo de conector Ejemplo de referencia
Sondeo CCF Conector de sondeo CCF de SentinelOne
Empuje CCF Conector de inserción CCF de Jamf Protect
Blob de CCF Conector de blobs de Cloudflare CCF
CCF GCP Conector de registros de auditoría de Google Cloud Platform
CEF/Syslog Conectores CEF y Syslog de Cisco ISE

Cuando el JSON del conector esté completo, colóquelo en la subcarpeta Data Connectors/ de la carpeta de la solución y asígnele el nombre ProviderNameApplianceName.json (sin espacios).

Pruebe el conector

Importante

Antes de compilar libros, reglas analíticas y otro contenido, compruebe que el conector envía datos a la tabla esperada y que las consultas devuelven resultados. Es más fácil detectar problemas de esquema y flujo de datos en esta fase que después de crear contenido dependiente sobre ellos. Consulte la sección Probar el paquete para obtener información sobre cómo empaquetar e implementar el conector en un área de trabajo de desarrollo.

Compilación del contenido

Además del conector de datos, enriquezca la solución con contenido SIEM que ayude a los clientes a obtener valor inmediato de los datos. El contenido de SIEM adicional incluye:

  • Libros de trabajo
  • Reglas analíticas
  • Consultas de búsqueda
  • Playbooks
  • Analizadores

Este contenido es opcional, pero se recomienda. Para conocer los requisitos mínimos y la puntuación de calidad, consulte Microsoft Sentinel directrices de calidad de la solución.

Crear libros de trabajo

Los libros de trabajo son paneles y visualizaciones que ayudan a los clientes a comprender sus datos. Para crear un libro, consulte Crear libros para Microsoft Sentinel.

Consulte los siguientes ejemplos de referencia en el repositorio de Azure-Sentinel para obtener orientación sobre el diseño y la disposición del libro:

Creación de reglas analíticas

Las reglas analíticas son plantillas que detectan amenazas en los datos. Cada regla es un archivo YAML. Para crear una regla analítica, consulte Creación de reglas analíticas para Microsoft Sentinel.

Consulte los ejemplos de referencia siguientes en el repositorio de Azure-Sentinel para obtener instrucciones sobre el diseño y el diseño de reglas analíticas:

Creación de consultas de búsqueda

Las consultas de búsqueda son plantillas que ayudan a los clientes a buscar amenazas de forma proactiva en sus datos. Aparecen en el panel Búsqueda para que los analistas los ejecuten manualmente. Comparten la misma estructura YAML que las reglas analíticas, pero no están automatizadas; Los campos de ejecución programada no se aplican y causan un fallo de revisión si se incluyen. Para crear una consulta de búsqueda, consulte Creación de consultas de búsqueda para Microsoft Sentinel.

Consulte los siguientes ejemplos de referencia en el repositorio de Azure-Sentinel para obtener orientación sobre el diseño y la estructura de las consultas de búsqueda proactiva:

Crear guías de estrategias

Los libros de estrategias son flujos de trabajo automatizados de respuesta que ayudan a los clientes a responder a amenazas que afectan a sus datos. Cada playbook es un flujo de trabajo de Azure Logic Apps que se exporta como una plantilla de ARM. Los dos archivos necesarios son azuredeploy.json y readme.md, colocados en Solutions/<YourSolutionName>/Playbooks/<PlaybookName>/. Para crear un cuaderno de estrategias, consulte Creación de cuadernos de estrategias para Microsoft Sentinel.

Consulte los siguientes ejemplos de referencia en el repositorio de Azure-Sentinel como guía sobre el diseño y la disposición del playbook:

Creación de analizadores

Un analizador es una función de Kusto guardada en su área de trabajo de Log Analytics que actúa sobre los datos de registro sin procesar y los normaliza en campos limpios y consultables. En lugar de escribir lógica de extracción de campos en cada consulta, los clientes llaman al alias del analizador una vez y obtienen resultados estructurados. Los analizadores se definen como archivos YAML e implementan automáticamente cuando un cliente instala la solución. Para crear un analizador, consulte Creación de analizadores para Microsoft Sentinel.

Consulte los siguientes ejemplos de referencia en el repositorio de Azure-Sentinel como guía sobre el diseño y la estructura del analizador:

Prueba tu paquete

Las pruebas siguen el paquete → implementar → habilitar → ciclo de validación . El ciclo es el mismo independientemente de la cantidad de contenido que haya creado. La herramienta de empaquetado V3 convierte los archivos de solución en una plantilla de ARM implementable (mainTemplate.json). Implemente la plantilla en un área de trabajo de desarrollo de Microsoft Sentinel, habilite cada tipo de contenido y confirme que funciona antes de enviar una solicitud de incorporación de cambios.

Repita este ciclo a medida que compila. No es necesario finalizar todos los tipos de contenido antes de empezar a probar. Empaquete e implemente a medida que complete cada tipo de contenido, compruebe que funciona y agregue más contenido y vuelva a empaquetar.

Si la solución incluye un conector de datos, pruebe primero el conector antes de compilar contenido dependiente, como reglas de análisis y libros. Todo el contenido de SIEM depende de los datos que fluyen a las tablas correctas con el esquema correcto. Si el conector no funciona o el esquema no coincide con lo que esperan las reglas, deberá volver a trabajar el contenido dependiente. Asegúrese de que los datos fluyen primero para ahorrar tiempo.

Note

Solo conectores de sondeo de CCF: Antes del empaquetado, puede validar la configuración de sondeo del conector sin implementarla en un área de trabajo activa. En la extensión Microsoft Sentinel para Visual Studio Code, haga clic con el botón derecho en el archivo de definición del conector y seleccione Probar conector. Consulte Paso 4: Validación de la configuración del conector para obtener más información.

Empaquetar la solución

Después de desarrollar y probar los componentes de la solución de Microsoft Sentinel, el empaquetado es el siguiente paso crítico en el ciclo de vida de la solución. La herramienta de empaquetado consolida todo el contenido de la solución —conectores de datos, analizadores, libros de trabajo, reglas analíticas, consultas de búsqueda proactiva, conectores personalizados de Azure Logic Apps y flujos de trabajo— en un formato estandarizado para su implementación. Para obtener más información, consulte Empaquetar una solución SIEM para Microsoft Sentinel.

Ir al mercado

Al seleccionar Publicar, la solución pasa por una comprobación de certificación final antes de estar disponible públicamente. Después de la certificación, la solución aparece en el centro de contenido Microsoft Sentinel y se muestra en el área de trabajo de Sentinel de cada inquilino del cliente en el centro de contenido. También se puede descubrir en Azure Marketplace. La solución ahora está disponible para todos los clientes Microsoft Sentinel. Para más información, consulte Publicar soluciones SIEM para Microsoft Sentinel.

A partir de este momento, cualquier actualización de la solución, como cambios en el contenido, correcciones de errores y actualizaciones de versión, requiere una nueva PR de GitHub, una nueva versión del paquete y un nuevo envío a Partner Center con el ZIP actualizado. Para realizar el seguimiento del estado posterior a la publicación y los problemas de soporte técnico, consulte Seguimiento de la solución después de publicarla en el Centro de partners.