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

Hay dos formas principales de personalizar la implementación del contenido del repositorio para Microsoft Sentinel áreas de trabajo. Cada método usa diferentes archivos y sintaxis, por lo que considere estos ejemplos para empezar.

Método de personalización Opciones de implementación cubiertas
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 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

Importante

La característica repositorios de Microsoft Sentinel está actualmente en versión preliminar. Consulte los Términos de uso complementarios para las versiones preliminares de Microsoft Azure para obtener más términos legales que se aplican a Azure características que están en versión beta, versión preliminar o que aún no se han publicado en disponibilidad 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 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. Personalice para configurar diferentes desencadenadores de implementación o para implementar 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 el flujo de trabajo de implementación de 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 a partir de 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 desencadenador de implementación, actualice 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 obtener más información, consulte la documentación de GitHub sobre la configuración de eventos de flujo de trabajo.

    • Para deshabilitar implementaciones inteligentes: el comportamiento de las implementaciones inteligentes es independiente del desencadenador de implementación descrito. 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 implementación:

      En la configuración predeterminada que se muestra para la on sección, los caracteres comodín (**) de la primera línea de la paths sección 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 jobs sección 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 para la implementación de contenido, sin filtrar por las rutas de acceso de carpeta.

      Para implementar contenido solo desde una ruta de acceso de carpeta específica, agréguelo a la paths configuración y 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 obtener más información, consulte la documentación de GitHub sobre Acciones de GitHub y edición de flujos de trabajo de GitHub.

Importante

Tanto en GitHub como en Azure DevOps, asegúrese de mantener coherentes la ruta de acceso del desencadenador y los directorios de ruta de acceso de implementación.

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 una asignación en el 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 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 varias implementaciones de áreas de trabajo, asigne los archivos de parámetros a través del archivo de configuración o especifique 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 prioridad de asignación, la canalización omite las asignaciones restantes.

La modificación del archivo de parámetros asignado que aparece en el 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.

  1. Cree el archivosentinel-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 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 de todo el contenido de un archivo desentinel-deployment.config válido. Este ejemplo también se puede encontrar en el Microsoft Sentinel ejemplo de repositorios CICD.

{
  "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 de acceso completos a la "prioritizedcontentfiles": sección. No se admite la coincidencia de caracteres comodín en este momento.

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

  • Para asignar parámetros:

    El script de implementación acepta tres métodos de asignación de parámetros como se describe en Escalado de 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 con el "parameterfilemappings": identificador de á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 Microsoft Sentinel ejemplo de repositorios CICD.