GitSync

Compatible con:

GitSync es una integración sólida creada por el equipo de Servicios Profesionales de SOAR de Google Security Operations y diseñada para sincronizar los componentes de SOAR de Google Security Operations con un repositorio de Git. Utiliza las operaciones internas de Git para escribir directamente en el repositorio, lo que lo convierte en un servicio de almacenamiento de archivos. Proporciona métodos para realizar las siguientes acciones:

  • Migra activos entre instancias de Google Security Operations SOAR

  • Crea copias de seguridad de los recursos de Google Security Operations SOAR

  • Documentación automática

  • Crea una "tienda" para compartir recursos o conocimientos

  • Control de versiones

La integración consta de varios trabajos de SOAR de Google Security Operations: trabajos de envío y extracción para cada activo compatible, y trabajos de envío y extracción para toda la instancia de SOAR de Google Security Operations. Estos trabajos no necesitan ejecutarse de forma periódica, ya que se crearon para ejecutarse manualmente desde el IDE, pero se pueden usar como trabajos regulares (por ejemplo, subir una confirmación diaria). 

GitSync usará la API de SOAR de Operaciones de seguridad de Google para recuperar el activo pertinente, como una integración o una familia visual, y analizar toda la información disponible de ese activo (esta información se renderizará más adelante en un archivo README.md que suele mostrarse cuando se explora el repositorio). Luego, escribe la definición JSON del recurso y el README renderizado en el repositorio local, y lo envía al repositorio remoto.

Otro uso de GitSync es el intercambio de conocimientos. Con esta integración, un repositorio de Git puede actuar como un "almacén" de recursos, como guías o parámetros de configuración de la ontología, que se diseñaron previamente y aprovechan las prácticas recomendadas de SOAR de Google Security Operations para llevar la plataforma a su mejor nivel.

Requisitos previos

Envía o extrae un repositorio existente:

  • Método de autenticación en Git. Se admite una combinación de nombre de usuario y contraseña (no se recomienda), un token de acceso (se recomienda) y una clave privada SSH codificada en Base64 (se recomienda). Cuando se usan los dos últimos, no se requiere el parámetro username.

  • Es un usuario local de Google Security Operations SOAR. Se usa para importar recursos. Este usuario debe tener permiso para escribir en el módulo de destino (por ejemplo, un usuario sin acceso al IDE no podría extraer integraciones).

Crea un repositorio nuevo

  • Todos los puntos mencionados anteriormente en Cómo enviar o extraer un repositorio existente.

  • Es un repositorio remoto. Se recomienda tener al menos 1 archivo en el repositorio. La mayoría de los servicios de Git ofrecen la opción de crear un archivo README cuando se crea el repositorio.

Configura la integración

Debes configurar la integración como una instancia compartida. No se puede conectar a un entorno existente en Google SecOps SOAR.

Propiedades de integración

Nombre del parámetro

Descripción

URL del repositorio

Es la URL del repositorio. Cuando se usa la autenticación con usuario y contraseña, este valor debe comenzar con https://. Si usas la autenticación SSH, este valor debe comenzar con git@ o ssh://. (Consulta Configuración de la URL y la rama del repositorio a continuación).

Rama

Rama del repositorio con la que se realizará la sincronización.

Contraseña, token o clave SSH de Git

Es el método de autenticación en Git. Este valor puede ser la contraseña, el token o la clave privada de SSH de Git. Las claves privadas deben codificarse en base64. Se admiten RSA y Ed25519.

Nombre de usuario de Git

Nombre de usuario de Git. Este valor no es obligatorio cuando se usa la autenticación SSH.

Autor de la confirmación

No es obligatorio. Permite especificar el autor de la confirmación. Este valor debe tener el siguiente formato: Nombre de usuario

Google Security Operations SOAR Verify SSL

Verifica la SSL en la API de Google Security Operations SOAR

Verificación de SSL de Git

Verifica la SSL con el servicio de Git de destino

Configura la URL y la rama del repositorio

En esta guía, demostraremos cómo obtener los valores correctos en Bitbucket (ten en cuenta que el proceso es el mismo en GitHub).


  1. Busca el repositorio en Bitbucket.

    gitsync1

  2. Haz clic en el botón Clonar en la esquina superior derecha (Código en GitHub).

    • Autenticación SSH: La URL del repositorio es git@bitbucket.org:siemplifyproserv/connectors.git

      gitsync2

  3. Autenticación con usuario y contraseña o con token: La URL del repositorio es https://bitbucket.org/siemplifyproserv/connectors.git . (Se puede ignorar el nombre de usuario)

    gitsync3

  4. Verifica la rama actual (principal en la siguiente imagen).

    gitsync4

Ejemplo de uso

Cada trabajo en GitSync contiene los siguientes parámetros:


Nombre

Descripción

Específicos del trabajo: Nombre del conector, identificador de integración, lista de entidades permitidas del manual, etcétera

Estos parámetros se usan para especificar qué se envía o extrae del repositorio. En GitSync, los activos se identifican por sus identificadores. Estos valores distinguen entre mayúsculas y minúsculas.

URL y rama del repositorio

Se agregó compatibilidad para varios repositorios con las mismas credenciales. Una vez que se establezcan estos parámetros, se ignorará el repositorio configurado en la instancia de integración. 

Mensaje de confirmación

Cuando se envían recursos al repositorio, se requiere un mensaje para la confirmación. Aquí puedes especificar el motivo de la confirmación, indicando qué se corrigió, cambió o agregó al activo.

Complemento de Readme

Se agregó la capacidad de extender la documentación de los recursos cuando se envían. En este valor, puedes usar lo siguiente:

  • Sintaxis de Markdown: Se admite en los archivos README de proveedores de Git como GitHub y Bitbucket

  • Jinja: Para mostrar información sobre el activo. Consulta ejemplos en las constantes del administrador de integración

La plantilla se agrega al final de la documentación y se guarda en el archivo de metadatos GitSync.json en la raíz del repositorio.


Cómo extraer recursos

En este ejemplo, extraeremos un conector con las asignaciones y las familias visuales correctas.

  1. Primero, asegúrate de que el recurso se encuentre en el repositorio configurado. Simplemente explora los directorios del repositorio y copia el identificador del recurso (por lo general, es el nombre del directorio o el título del archivo README).
    gitsync5

    Ejemplo de un repositorio en Bitbucket, en el directorio Connectors. Ten en cuenta que los directorios son los nombres de integración y, dentro de ellos, se encuentran los identificadores reales de los conectores.
  2. Busca el trabajo adecuado en el IDE de SOAR de Google Security Operations. En este ejemplo, usaremos el conector de extracción de trabajos.

    • Nota: Cuando tires de un conector, verifica que la integración del conector también esté instalada.

  3. Haz clic en la pestaña de prueba y configura los parámetros. Como usamos un repositorio y ya está configurado en la instancia de integración, dejaremos vacíos los parámetros URL del repositorio y Rama, y estableceremos los demás parámetros en los valores que necesitamos.

  4. Ejecute el trabajo.

  5. Consulta el resultado de la depuración para ver el registro de la operación. Si todo sale bien, el registro lo indicará.

  6. Ve a Google Security Operations SOAR -> Connectors y configura el conector.


Envío de recursos

En este ejemplo, enviaremos un playbook y un bloque al repositorio.

  1. Identifica las guías que deseas enviar. Aquí, enviaremos un nuevo bloque llamado Failed Login y un manual actualizado llamado Malicious Activity.

    gitsync7

  2. Busca el trabajo adecuado en el IDE de SOAR de Google Security Operations. En este ejemplo, usaremos el trabajo Push Playbook.

  3. Haz clic en la pestaña de prueba y configura los parámetros.

  4. Como ambos están en la misma carpeta (predeterminada), también puedes usar la lista de carpetas permitidas.
  5. Ejecute el trabajo.

  6. Consulta el resultado de la depuración para ver el registro de la operación. Si todo sale bien, el registro lo indicará.

  7. Valida que el repositorio contenga las versiones más recientes de los playbooks.


Crea un repositorio nuevo

Para crear un repositorio nuevo, solo es importante incluir un archivo en el repositorio antes de configurarlo con GitSync. Puedes hacerlo rápidamente si incluyes un archivo README en la raíz del repositorio cuando lo crees.
Bitbucket

gitsync8

GitHub

gitsync9

Problemas conocidos y limitaciones

  • Después de configurar el repositorio por primera vez, se usa una estructura de directorios predefinida para garantizar que se sepa dónde se encuentra cada recurso. Si no se sigue la estructura de directorios con una confirmación personalizada o cambios en el repositorio, la integración no funcionará correctamente. Puedes encontrar el esquema de la estructura de directorios del repositorio al final de este documento.

  • Ten cuidado cuando uses esta integración con repositorios públicos. Los activos de SOAR de Google Security Operations usan parámetros que contienen IDs de aplicaciones, IDs de clientes, nombres de usuario y otra información sensible. GitSync no puede determinar si el parámetro es sensible o no, por lo que todos los parámetros que no sean de tipo "Password" se subirán al repositorio. Además, cuando se envía una instancia de SOAR de Google Security Operations (trabajo de Push Environment), hay una opción para confirmar contraseñas. Esta opción le indica a GitSync que intente exportar todos los parámetros de contraseña de la configuración de integración. No establezcas este valor como verdadero si el repositorio es público, ya que se filtrarán todas las credenciales en línea.

  • Cuando se extrae una instancia de SOAR de Google Security Operations (trabajo Pull Environment), la instalación de todas las integraciones puede tardar más de 5 minutos, y el trabajo fallará con un tiempo de espera agotado. Se recomienda instalar manualmente todas las integraciones comerciales de Google Security Operations Marketplace de antemano para evitar problemas, pero también es posible volver a ejecutar el trabajo si falla con un tiempo de espera.

  • Las integraciones comerciales y las personalizadas se manejan de manera diferente. La integración personalizada se enviará como la exportación zip completa de la integración para una operación de importación o exportación. Las integraciones comerciales se enviarán solo con el código personalizado. Una vez que se extraiga, GitSync instalará la versión más reciente de la integración desde Google SecOps Marketplace y guardará el código personalizado en la integración oficial.

  • Cuando se extraen las asignaciones, no aparecerán en la tabla Configuración -> Ontología -> Estado de la ontología hasta que los eventos se hayan transferido realmente a Google Security Operations SOAR, ya que aún no se indexaron.

  • El repositorio local se guarda en /opt/siemplify/siemplify_server/GitSyncFiles/{RepoName}. Dado que la integración escribe objetos Git y no archivos, esta carpeta no representa el repositorio y se reemplaza con cualquier cambio que se realice cada vez que se ejecuta un trabajo. Se recomienda usar otro clon del repositorio, no el que creó GitSync.

  • Los instructivos con permisos restringidos (por ejemplo, permisos predeterminados establecidos en Puede ver) requieren una configuración de permisos específica en el sistema fuente para que la sincronización a través de GitSync se realice correctamente. Para obtener más información, consulta Cómo trabajar con permisos de la guía.

  • Google SecOps admite el uso de GitSync para crear copias de seguridad de los recursos de SOAR. Sin embargo,Google SecOps no admite el uso de GitSync para *distribuir* activos de SOAR entre sistemas. Esto puede generar resultados inesperados porque los objetos de la base de datos podrían no ser únicos.


Trabaja con permisos de guías

Cuando usas GitSync para sincronizar guías con permisos restringidos (por ejemplo, permisos predeterminados establecidos en Can View o cualquier otro parámetro de configuración no predeterminado), es posible que encuentres un error en el sistema de destino si no tiene autorización para modificar la guía. Esto sucede porque GitSync usa una clave de API interna del sistema con el rol de Administrator SOC para realizar acciones. Para garantizar la sincronización correcta de las guías con permisos restringidos, otorga al rol de SOC Administrator los permisos de Can Edit en el sistema fuente para esas guías.

Habilita GitSync para extraer guías con permisos restringidos

  1. En el sistema de origen, haz lo siguiente:
    1. Ve al playbook que deseas sincronizar con GitSync.
    2. Abre la configuración de permisos del manual.
    3. Asegúrate de que el rol de SOC de Administrator se agregue a la lista de entidades con permisos de Can Edit.
  2. Después de ajustar los permisos en el sistema fuente, ejecuta la acción Push Playbook en GitSync para actualizar el repositorio de Git con la guía y sus permisos.
  3. En el sistema de destino, ejecuta la acción Pull Playbook en GitSync.

Crea claves SSH para usar con GitSync

  1. Primero, genera un par de claves. Cuando se te solicite una frase de contraseña, presiona Intro: ssh-keygen -b 2048 -t rsa -f ./id_rsa

    Se crearán dos archivos: id_rsa (clave privada) y id_rsa.pub (clave pública). Guarda la clave privada en una ubicación segura.

  2. Establece la clave pública en el repositorio. Por ejemplo, en Bitbucket, ingresa la configuración del repositorio y haz clic en Access Keys. Haz clic en Add Key y pega el contenido de id_rsa.pub en el parámetro Key.

  3. Antes de que se pueda agregar la clave privada a la configuración de la integración, se debe codificar en Base64.

    Usa estos comandos para codificar el archivo:

    • Linux:
      cat id_rsa | base64 -w 0
    • Windows:

      Abre PowerShell donde se encuentra id_rsa y pega (esta es una sola línea):

      Write-Output [System.Text.Encoding]::ASCII.GetString([convert]::ToBase64String(([IO.File]::ReadAllBytes((Join-Path (pwd) 'id_rsa')))))
  4. Copia el valor impreso en la propiedad de integración Contraseña/Token/Clave SSH y prueba la conectividad de la integración.

Estructura de directorios del repositorio de GitSync

A continuación, se muestra la estructura de directorios esperada en el repositorio remoto.

* Este es el resultado del comando tree para un repositorio de ejemplo. Los comentarios aparecen en rojo.


gitsync10

gitsync11

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.