Personalización de implementaciones de repositorios

Hay dos formas principales de personalizar el despliegue del contenido de su repositorio en las áreas de trabajo de Microsoft Sentinel. Cada método usa diferentes archivos y sintaxis, por lo que considere estos ejemplos para empezar. Antes de comenzar, asegúrese de que se cumplen los requisitos previos de implementación y conexión del repositorio necesarios.

Método de personalización Opciones de implementación cubiertas
Flujo de trabajo de GitHub
Pipeline de DevOps
Personalice el activador de implementación de su conexión
Personalización de la ruta de implementación
Habilitación de implementaciones inteligentes
Archivos de configuración Controlar el orden priorizado de las implementaciones de contenido
Elija excluir archivos de contenido específicos de las implementaciones.
Escalado de implementaciones en diferentes áreas de trabajo mediante la asignación de archivos de parámetros a archivos de contenido específicos

Requisitos previos

Para personalizar una implementación de repositorio, necesita una conexión de repositorio existente. Para crear uno, consulte Implementación de contenido personalizado desde el repositorio. Después de crear la conexión, asegúrese de cumplir estos requisitos:

  • Acceso del colaborador al repositorio de GitHub o al acceso del administrador de proyectos al repositorio de DevOps de Azure
  • Acciones habilitadas para GitHub y canalizaciones habilitadas para Azure DevOps
  • Asegúrese de que los archivos de contenido personalizados que desea implementar en las áreas de trabajo están en un formato compatible. Para ver los formatos admitidos, consulte Planear el contenido del repositorio.

Para obtener más información sobre los tipos de contenido que se pueden implementar, vea Planear el contenido del repositorio.

Personalización del flujo de trabajo o la canalización

El flujo de trabajo predeterminado solo implementa el contenido modificado desde la última implementación, en función de las confirmaciones en el repositorio. Personaliza el flujo de trabajo o la canalización para configurar diferentes desencadenantes de despliegue, o para desplegar contenido exclusivamente desde una carpeta raíz específica.

Seleccione una de las pestañas siguientes en función del tipo de conexión:

Para personalizar tu flujo de trabajo de despliegue en GitHub:

  1. En GitHub, vaya al repositorio y busque el flujo de trabajo en el directorio .github/workflows .

    El archivo de flujo de trabajo es el archivo YML que empieza por sentinel-deploy-xxxxx.yml. Abra ese archivo y el nombre del flujo de trabajo se muestra en la primera línea y tiene la siguiente convención de nomenclatura predeterminada: Deploy Content to <workspace-name> [<deployment-id>].

    Por ejemplo: name: Deploy Content to repositories-demo [xxxxx-dk5d-3s94-4829-9xvnc7391v83a]

  2. Seleccione el botón de lápiz situado en la parte superior derecha de la página para abrir el archivo para su edición y, a continuación, modifique la implementación de la siguiente manera:

    • Para modificar el disparador de despliegue, actualiza la on sección del código que describe el evento que desencadena la ejecución del flujo de trabajo.

      De forma predeterminada, esta configuración se establece en on: push, lo que significa que el flujo de trabajo se desencadena en cualquier inserción en la rama conectada, incluidas las modificaciones en el contenido existente y las adiciones de contenido nuevo en el repositorio. Por ejemplo:

      on:
          push:
              branches: [ main ]
              paths:
              - `**`
              - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow
              - `.github/workflows/sentinel-deploy-<deployment-id>.yml`
      

      Cambie esta configuración, por ejemplo, para programar que el flujo de trabajo se ejecute periódicamente o para combinar eventos de flujo de trabajo diferentes.

      Para más información, consulta Configurar eventos de flujo de trabajo en la documentación de GitHub.

    • Para desactivar los despliegues inteligentes:

      El comportamiento de despliegue inteligente se configura por separado del disparador del flujo de trabajo en la on sección. Vaya a la jobs sección del flujo de trabajo. Cambie el smartDeployment valor predeterminado de true a false. Una vez confirmado este cambio, se desactiva la funcionalidad de implementación inteligente y todas las implementaciones futuras de esta conexión vuelven a implementar todos los archivos de contenido pertinentes del repositorio en las áreas de trabajo conectadas.

    • Para modificar la ruta de despliegue:

      En la configuración predeterminada que se muestra de la sección on, los caracteres comodín (**) de la primera línea de la sección paths indican que toda la rama forma parte de la ruta de los desencadenadores de implementación.

      Esta configuración predeterminada significa que se activa un flujo de trabajo de despliegue cada vez que ese contenido se envía a cualquier parte de la rama conectada.

      En la jobs sección, la configuración predeterminada incluye directory: '${{ github.workspace }}'. La directory configuración indica que toda la rama de GitHub está en la ruta para el despliegue de contenido, sin filtrar ninguna ruta de carpeta.

      Para implementar contenido solo desde una ruta de carpeta específica, agréguelo tanto a la configuración paths como a la directory. Por ejemplo, para implementar contenido solo desde una carpeta raíz denominada SentinelContent, actualice el código de la siguiente manera:

      paths:
      - `SentinelContent/**`
      - `!.github/workflows/**` # this filter prevents other workflow changes from triggering this workflow
      - `.github/workflows/sentinel-deploy-<deployment-id>.yml`
      
      ...
          directory: '${{ github.workspace }}/SentinelContent'
      

Para más información, consulta la sintaxis del flujo de trabajo de Acciones de GitHub para filtros de ruta en la documentación de GitHub.

Importante

Tanto en GitHub como en Azure DevOps, asegúrese de que los directorios de las rutas de acceso del desencadenador y de implementación sean coherentes.

Escalado de las implementaciones con archivos de parámetros

En lugar de pasar parámetros como valores insertados en los archivos de contenido, considere la posibilidad de usar un archivo de parámetros de Bicep o un archivo JSON que contenga los valores de parámetro. A continuación, asigne esos archivos de parámetros a sus archivos de contenido Microsoft Sentinel asociados para escalar mejor las implementaciones en diferentes áreas de trabajo.

Hay varias maneras de asignar archivos de parámetros a los archivos de contenido. Tenga en cuenta que los archivos de parámetros de Bicep solo admiten plantillas de archivo de Bicep, pero los archivos de parámetros JSON admiten ambos. La canalización de implementación de repositorios tiene en cuenta los archivos de parámetros en el orden siguiente:

Diagrama que muestra la prioridad de las asignaciones de archivos de parámetros.

  1. ¿Hay un mapeo en sentinel-deployment.config?
    Para obtener más información, consulte Personalice la configuración de la conexión.

  2. ¿Hay un archivo de parámetros asignado al área de trabajo? Sí, los archivos de contenido están en el mismo directorio, con un archivo de parámetros asignado al área de trabajo que coincida con uno de estos patrones:
    .<WorkspaceID>.bicepparam
    .parameters-<WorkspaceID>.json

  3. ¿Hay un archivo de parámetros predeterminado? Sí, los archivos de contenido están en el mismo directorio con un archivo de parámetros que coincide con uno de estos patrones:
    .bicepparam
    .parameters.json

Para evitar conflictos con despliegues de varios espacios de trabajo, asocie los archivos de parámetros mediante el archivo de configuración o especifique el identificador del espacio de trabajo en el nombre del archivo.

Importante

Una vez que se determina qué archivo de parámetros coincide en función del orden de prioridad de las asignaciones, la canalización ignora las asignaciones restantes.

La modificación del archivo de parámetros asignado que se muestra en sentinel-deployment.config desencadena la implementación de su archivo de contenido emparejado. Agregar o modificar un archivo de parámetros asignado al área de trabajo o un archivo de parámetros predeterminado también desencadena una implementación de los archivos de contenido emparejados junto con los parámetros recién modificados, a menos que se haya implementado una asignación de parámetros de prioridad superior. Otros archivos de contenido no se implementan siempre que la característica de implementaciones inteligentes siga estando habilitada en el archivo de definición de flujo de trabajo o canalización.

Personalización de la configuración de conexión

El script de implementación para repositorios admite el uso de un archivo de configuración de implementación para cada rama de repositorio a partir de julio de 2022. El archivo JSON de configuración le ayuda a asignar archivos de parámetros a archivos de contenido pertinentes, priorizar contenido específico en implementaciones y excluir contenido específico de las implementaciones.

Importante

La creación, eliminación o modificación del archivo sentinel-deployment.config desencadena una implementación completa de todo el contenido del repositorio según la configuración actualizada.

  1. Cree el archivo sentinel-deployment.config en la raíz de su repositorio.

    Captura de pantalla de un directorio raíz del repositorio. RepositoriesSampleContent se muestra con la ubicación del archivo sentinel-deployment.config.

  2. Incluya el contenido estructurado en tres secciones opcionales, "prioritizedcontentfiles":, "excludecontentfiles":y "parameterfilemappings":. Si no se incluye ninguna sección o se omite el archivo .config, el proceso de implementación sigue ejecutándose. Se omiten las secciones no válidas o no reconocidas.

Este es un ejemplo del contenido completo de un archivo sentinel-deployment.config válido. Este ejemplo también puede encontrarse en el ejemplo de repositorios de CI/CD de Microsoft Sentinel.

{
  "prioritizedcontentfiles": [
    "parsers/Sample/ASimAuthenticationAWSCloudTrail.json",
    "workbooks/sample/TrendMicroDeepSecurityAttackActivity_ARM.json",
    "Playbooks/PaloAlto-PAN-OS/PaloAltoCustomConnector/azuredeploy.bicep"
  ], 
  "excludecontentfiles": [
     "Detections/Sample/PaloAlto-PortScanning.json",
     "parameters"
  ],
  "parameterfilemappings": {
    "879001c8-2181-4374-be7d-72e5dc69bd2b": {
      "Playbooks/PaloAlto-PAN-OS/Playbooks/PaloAlto-PAN-OS-BlockIP/azuredeploy.bicep": "parameters/samples/auzredeploy.bicepparam"
    },
    "9af71571-7181-4cef-992e-ef3f61506b4e": {
      "Playbooks/Enrich-SentinelIncident-GreyNoiseCommunity-IP/azuredeploy.json": "path/to/any-parameter-file.json"
    }
  },
  "DummySection": "This shouldn't impact deployment"
}

Nota:

No use el carácter de barra diagonal inversa "\" en ninguna de las rutas de acceso de contenido. En su lugar, use la barra diagonal "/".

  • Para priorizar los archivos de contenido:

    A medida que aumenta la cantidad de contenido del repositorio, los tiempos de implementación pueden aumentar. Agregue contenido sensible al tiempo a esta sección para priorizar su implementación cuando se produzca un desencadenador.

    Agregue nombres de ruta completos a la sección "prioritizedcontentfiles":. No se admite la coincidencia de caracteres comodín en este momento.

  • Para excluir archivos de contenido, modifica la "excludecontentfiles": sección con los nombres completos de rutas de los archivos de contenido individuales .json.

  • Para mapear los parámetros:

    El script de implementación acepta tres métodos de parámetros de asignación (asignaciones de archivos de configuración, archivos de parámetros asignados al área de trabajo y archivos de parámetros predeterminados), como se describe en Escalado de las implementaciones con archivos de parámetros. La asignación de parámetros a través de la sentinel-deployment.config tiene la prioridad más alta y garantiza que un archivo de parámetros determinado se asigna a sus archivos de contenido asociados. Modifique la sección "parameterfilemappings": con el ID del área de trabajo de la conexión de destino y las rutas de acceso completas de los archivos .json individuales.