Compartir a través de


Personalización de implementaciones de repositorios (versión preliminar pública)

Hay dos formas principales de personalizar la implementación del contenido de repositorios en áreas de trabajo de Microsoft Sentinel. En cada método se usan archivos y sintaxis diferentes, por lo que debe tener en cuenta estos ejemplos al empezar.

Método de personalización Opciones de implementación tratadas
Flujo de trabajo de GitHub
Canalización de DevOps
Personalización del desencadenador de implementación de la conexión
Personalización de la ruta de acceso de implementación
Habilitación de implementaciones inteligentes
Archivos de configuración Control del orden con prioridades de las implementaciones de contenido
Elegir 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

Importante

La característica Repositorios de Microsoft Sentinel se encuentra actualmente en VERSIÓN PRELIMINAR. Consulte los Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer más términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

Requisitos previos

Para personalizar una implementación de repositorios, debe existir una conexión de repositorio. Para obtener más información sobre cómo crear la conexión, consulte Implementación de contenido personalizado desde el repositorio. Una vez realizada la conexión, se aplican los siguientes requisitos previos:

  • Acceso de colaborador al repositorio de GitHub o acceso de administrador de proyectos al repositorio de Azure DevOps
  • Acciones habilitadas para GitHub y la oferta Pipelines habilitada para Azure DevOps.
  • Asegúrese de que los archivos de contenido personalizados que desea implementar en las áreas de trabajo tengan un formato compatible. Para conocer los formatos admitidos, consulte Planeamiento del contenido del repositorio.

Para obtener más información sobre los tipos de contenido que se pueden implementar, consulte Validación del contenido.

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. Personalice para configurar distintos desencadenadores de implementación o para implementar contenido exclusivamente desde una carpeta raíz específica.

Seleccione una de las pestañas siguientes según su tipo de conexión:

Para personalizar el flujo de trabajo de implementación de GitHub:

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

    El archivo del flujo de trabajo es el archivo YML que empieza por sentinel-deploy-xxxxx.yml. Abra ese archivo; 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, después, modifique la implementación de la siguiente manera:

    • Para modificar el desencadenador de implementación, actualice la sección on del código, la cual describe el evento que desencadena la ejecución del flujo de trabajo.

      De forma predeterminada, esta configuración está establecida en on: push, lo que significa que el flujo de trabajo se desencadena con cualquier inserción en la rama conectada, incluidas las modificaciones en el contenido existente y las adiciones de contenido nuevo al 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 flujos de trabajo diferentes.

      Para obtener más información, vea la documentación de GitHub sobre cómo configurar eventos de flujo de trabajo.

    • Para deshabilitar las implementaciones inteligentes: el comportamiento de las implementaciones inteligentes es independiente del desencadenador de implementación descrito. Desplácese hasta la sección jobs del flujo de trabajo. Cambie el valor predeterminado de smartDeployment de true a false. Una vez confirmado este cambio, la funcionalidad de implementación inteligente está desactivada y todas las implementaciones futuras para 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 acceso de la implementación:

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

      Esta configuración predeterminada significa que un flujo de trabajo de implementación se desencadena cada vez que se inserta contenido en cualquier parte de la rama.

      Más adelante en el archivo, la sección jobs incluye la siguiente configuración predeterminada: directory: '${{ github.workspace }}'. Esta línea indica que toda la rama de GitHub está en la ruta de acceso de la implementación de contenido, y no se está filtrando ninguna ruta de acceso de carpeta.

      Para implementar contenido únicamente desde una ruta de acceso de carpeta específica, agréguela a la configuración de paths y de directory. Por ejemplo, para implementar contenido únicamente 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 obtener más información, consulte la documentación de GitHub sobre Acciones de GitHub y sobre la edición de flujos de trabajo 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 los parámetros como valores insertados en los archivos de contenido, considere 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 asociados de contenido de Microsoft Sentinel 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 archivos 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 en el que se muestra la prioridad de las asignaciones de archivos de parámetros

  1. ¿Hay una asignación en el archivo sentinel-deployment.config?
    Para obtener más información, consulte Personalización de la configuración de conexión.

  2. ¿Hay un archivo de parámetros asignado al área de trabajo? Sí, los archivos de contenido se encuentran en el mismo directorio con un archivo de parámetros asignado al área de trabajo que coincide 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

Evite conflictos con varias implementaciones de área de trabajo asignando los archivos de parámetros mediante el archivo de configuración o especificando el identificador del área de trabajo en el nombre de archivo.

Importante

Una vez que se determina una coincidencia de archivo de parámetros en función de la precedencia de asignación, la canalización omite las asignaciones restantes.

La modificación del archivo de parámetros asignado enumerado en el archivo 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 haya una asignación de parámetros de precedencia más alta. No se implementarán otros archivos de contenido siempre que la característica de implementaciones inteligentes siga 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 los archivos de contenido pertinentes, además de priorizar y excluir contenido específico en las implementaciones.

  1. Cree el archivo sentinel-deployment.config en la raíz del repositorio. Agregar, eliminar o modificar este archivo de configuración desencadena una implementación completa de todo el contenido del repositorio según la configuración actualizada.

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

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

Este es un ejemplo de todo el contenido de un archivo sentinel-deployment.config válido. Este ejemplo también se puede encontrar 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. Use la barra diagonal "/".

  • Para priorizar los archivos de contenido:

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

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

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

  • Para asignar parámetros:

    El script de implementación acepta tres métodos de parámetros de asignación como se describe en Escalar las implementaciones con archivos de parámetros. La asignación de parámetros mediante el archivo sentinel-deployment.config tiene la precedencia más alta y garantiza que un archivo de parámetros determinado se asigne a sus archivos de contenido asociados. Modifique la sección "parameterfilemappings": con el identificador del área de trabajo de la conexión de destino y los nombres de ruta de acceso completos de los archivos .json individuales.

Hay disponible un repositorio de ejemplo que muestra el archivo de configuración de implementación y los tres métodos de asignación de parámetros. Para obtener más información, consulte el ejemplo de repositorios de CI/CD de Microsoft Sentinel.