GitSync

Disponible en:

GitSync es una integración robusta creada por el equipo de Servicios Profesionales de SecOps de Google y diseñada para sincronizar los componentes de SecOps de Google con un repositorio de Git. Usa las operaciones internas de Git para escribir directamente en el repositorio, lo que hace que actúe como un servicio de almacenamiento de archivos. Proporciona métodos para hacer lo siguiente:

  • Migrar recursos entre instancias de Google SecOps

  • Crear copias de seguridad de los recursos de Google SecOps

  • Documentación automática

  • Crea una "tienda" para compartir recursos o conocimientos

  • Control de versiones

Casos prácticos

La integración consta de varias tareas de Google SecOps: tareas de inserción y extracción para cada recurso compatible, y tareas de inserción y extracción para toda la instancia de Google SecOps. No es necesario que estos trabajos se ejecuten periódicamente, ya que se han creado para que se ejecuten manualmente desde el IDE, pero se pueden usar como trabajos normales (por ejemplo, para subir una confirmación diaria). 

GitSync usa la API de Chronicle para obtener el recurso pertinente, como una integración o una familia visual, y analizar toda la información disponible de ese recurso. Esta información se renderizará más adelante en un archivo README.md que suele mostrarse al examinar el repositorio. A continuación, escribe la definición JSON del recurso y el archivo README renderizado en el repositorio local y lo inserta en el repositorio remoto.

Otro uso de GitSync es compartir conocimientos. Con esta integración, un repositorio de Git puede actuar como "almacén" de recursos, como guías o ajustes de ontología, que se hayan diseñado anteriormente y que aprovechen las prácticas recomendadas de Google SecOps para optimizar la plataforma.

Actualización de seguridad: fijación de huellas digitales de host (GitSync V42.0)

Se ha lanzado una mejora de seguridad en GitSync V42.0 para protegerse contra ataques de intermediario (PITM) añadiendo compatibilidad con la fijación de huellas digitales de host. Esta función asegura que la integración de GitSync solo se conecte a tu servidor Git verificado.

Información importante y acciones necesarias

El campo Host Fingerprint es opcional y las tareas que tengas seguirán ejecutándose sin interrupciones. Sin embargo, le recomendamos encarecidamente que configure esta función inmediatamente para mejorar la seguridad de su integración.

La huella digital del host es un ID único de tu servidor Git. La nueva función verifica esta huella digital única al conectarse, lo que impide que los atacantes suplanten la identidad de tu servidor e intercepten datos.

Habilitar la fijación de huella digital del host

Para habilitar la fijación de huellas digitales de host, debes obtener la huella digital de tu servidor Git y añadirla a la configuración de la integración.

  1. Busca la huella digital del host: puedes obtener la huella digital de la clave pública de tu servidor Git en su documentación o mediante un método de confianza. Para obtener la huella digital con el comando ssh-keyscan, ejecuta el siguiente comando en el terminal:

    ssh-keyscan -t rsa <hostname>
    

    Por ejemplo, en GitHub, ejecuta ssh-keyscan -t rsa github.com. El resultado contiene la huella digital del host, que es similar a esta: github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC...

  2. Añadir la huella digital a la integración: añade la huella digital copiada al campo Host Fingerprint de los ajustes de configuración de tu integración GitSync.

Requisitos previos

Enviar o extraer datos de un repositorio:

  • Método de autenticación en Git. Se admiten combinaciones de nombre de usuario y contraseña (no recomendado), tokens de acceso (recomendado) y claves privadas SSH codificadas en base64 (recomendado). Si usas los dos últimos, no es necesario el parámetro de nombre de usuario.

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

Crear un repositorio

  • Todos los puntos mencionados en la sección sobre cómo enviar o extraer datos de un repositorio anterior.

  • Un repositorio remoto. Se recomienda que haya al menos un archivo en el repositorio. La mayoría de los servicios de Git ofrecen la opción de crear un archivo README al crear el repositorio.

Configurar la integración

Debe configurar la integración como instancia compartida. No se puede conectar a un entorno de Google SecOps SOAR.

Propiedades de integración

Nombre del parámetro

Descripción

URL del repositorio

URL del repositorio. Si se usa la autenticación con nombre de usuario y contraseña, este valor debe empezar por https://. Si usas la autenticación SSH, este valor debe empezar por git@ o ssh://. Consulta la sección Configurar la URL del repositorio y la rama más abajo.

Rama

Rama del repositorio con la que se va a sincronizar.

Contraseña, token o clave SSH de Git

Método de autenticación en Git. Este valor puede ser una contraseña, un token o una clave privada SSH de Git. Las claves privadas deben estar codificadas 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 formato siguiente: nombre de usuario

Verificar SSL de Google SecOps

Verificar SSL en la API de Google SecOps

Verificar SSL de Git

Verificar SSL con el servicio git de destino

Configurar la URL del repositorio y la rama

En esta guía, mostraremos 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 de clonación, situado 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 . (El nombre de usuario se puede ignorar)

    gitsync3

  4. Comprueba la rama actual (master en la imagen de abajo)

    gitsync4

Ejemplo de uso

Todos los trabajos de GitSync contienen los siguientes parámetros:


Nombre

Descripción

Específicos de la tarea: nombre del conector, identificador de integración, lista de permitidos de runbook, etc.

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

URL del repositorio y rama

Añade compatibilidad con varios repositorios con las mismas credenciales. Una vez que se hayan definido estos parámetros, se ignorará el repositorio configurado en la instancia de integración. 

Mensaje de confirmación

Al enviar recursos al repositorio, es necesario incluir un mensaje en la confirmación. Aquí puedes especificar el motivo de la publicación, indicando qué se ha corregido, cambiado o añadido al recurso.

Complemento Readme

Añade la posibilidad de ampliar la documentación de los recursos cuando se insertan. En este valor, puede usar lo siguiente:

  • Sintaxis de Markdown: compatible con archivos README de proveedores de Git como GitHub y Bitbucket

  • Jinja: para mostrar información sobre el recurso. Consulta ejemplos en las constantes del gestor de integraciones

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


Obtener recursos

En este ejemplo, vamos a extraer un conector con las asignaciones y las familias visuales correctas.

  1. Primero, asegúrate de que el recurso se encuentre en el repositorio configurado. Solo tienes que buscar en los directorios del repositorio y copiar el identificador del recurso (normalmente es el nombre del directorio o el título del archivo README).
    gitsync5

    Ejemplo de un repositorio de Bitbucket, en el directorio Connectors. Ten en cuenta que los directorios son los nombres de las integraciones y que, dentro de ellos, se encuentran los identificadores reales de los conectores.
  2. Busca el trabajo adecuado en el IDE de Google SecOps. En este ejemplo, usaremos el trabajo Pull Connector.

    • Nota: Cuando extraigas un conector, comprueba que la integración del conector también esté instalada.

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

  4. Ejecuta la tarea.

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

  6. Ve a Google SecOps -> Connectors y configura el conector.


Enviar recursos

En este ejemplo, vamos a enviar un playbook y un bloque al repositorio.

  1. Identifica los cuadernos de estrategias que quieras enviar. Aquí vamos a publicar un nuevo bloque llamado "Failed Login" (Inicio de sesión fallido) y un manual actualizado llamado "Malicious Activity" (Actividad maliciosa).

    gitsync7

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

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

  4. Como ambos están en la misma carpeta (Default), también puedes usar la lista de permitidos de carpetas.
  5. Ejecuta la tarea.

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

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


Crear un repositorio

Para crear un repositorio, solo es importante incluir un archivo en el repositorio antes de configurarlo con GitSync. Puedes hacerlo rápidamente incluyendo un archivo README en la raíz del repositorio al crearlo.
Bitbucket

gitsync8

GitHub

gitsync9

Limitaciones y problemas conocidos

  • Una vez que se ha configurado el repositorio por primera vez, utiliza una estructura de directorios predefinida para saber dónde se encuentra cada recurso. Si no se sigue la estructura de directorios con una confirmación personalizada o se hacen cambios en el repositorio, la integración no funcionará correctamente. Puedes consultar el esquema de la estructura del directorio del repositorio al final de este documento.

  • Ten cuidado al usar esta integración con repositorios públicos. Los recursos de SecOps de Google usan parámetros que contienen IDs de aplicación, IDs de cliente, 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, al enviar una instancia de Google SecOps (trabajo de entorno de envío), hay una opción para confirmar contraseñas. Esta opción indica a GitSync que intente exportar todos los parámetros de contraseña de la configuración de la integración. No asignes el valor true a esta opción si el repositorio es público, ya que se filtrarán todas las credenciales online.

  • Al extraer una instancia de Google SecOps (tarea de extracción de entorno), la instalación de todas las integraciones puede tardar más de 5 minutos y la tarea fallará por tiempo de espera agotado. Te recomendamos que instales manualmente todas las integraciones comerciales de Google Security Operations Marketplace de antemano para evitar problemas. Sin embargo, también puedes volver a ejecutar el trabajo si falla por un tiempo de espera agotado.

  • Las integraciones comerciales y las personalizadas se gestionan de forma diferente. La integración personalizada se enviará como la exportación completa en formato ZIP 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 extraída, 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 aparecen en la tabla Configuración -> Ontología -> Estado de la ontología hasta que los eventos se han insertado en Google SecOps, ya que aún no se han indexado.

  • El repositorio local se guarda en /opt/siemplify/siemplify_server/GitSyncFiles/{RepoName}. Como la integración escribe objetos de Git y no archivos, esta carpeta no representa el repositorio y se sobrescribe con los cambios que se hagan cada vez que se ejecute un trabajo. Te recomendamos que uses otro clon del repositorio y no el que ha creado GitSync.

  • Los cuadernos de estrategias con permisos restringidos (por ejemplo, los permisos predeterminados definidos como Puede ver) requieren una configuración de permisos específica en el sistema de origen para que la sincronización a través de GitSync se realice correctamente. Para obtener más información, consulta Trabajar con permisos de cuadernos de estrategias.

  • 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* recursos de SOAR entre sistemas. Esto puede dar lugar a resultados inesperados porque los objetos de la base de datos podrían no ser únicos.


Trabajar con permisos de guías

Cuando se usa GitSync para sincronizar guías con permisos restringidos (por ejemplo, permisos predeterminados definidos como Puede ver u otros ajustes no predeterminados), es posible que se produzca un error en el sistema de destino si no tiene autorización para modificar la guía. Esto ocurre porque GitSync usa una clave de API del sistema interna con el rol Administrator SOC para realizar acciones. Para que las guías con permisos restringidos se sincronicen correctamente, otorga el rol de Administrator SOC Puede editar en el sistema de origen de esas guías.

Habilitar GitSync para extraer playbooks con permisos restringidos

  1. En el sistema de origen:
    1. Ve al manual que quieras sincronizar con GitSync.
    2. Abre la configuración de permisos del libro de jugadas.
    3. Asegúrate de que el rol de Administrator SOC se haya añadido a la lista de entidades con el permiso Puede editar.
  2. Después de ajustar los permisos en el sistema de origen, ejecuta la acción Insertar Playbook en GitSync para actualizar el repositorio de Git con el playbook y sus permisos.
  3. En el sistema de destino, ejecuta la acción Pull Playbook (Extraer guía) en GitSync.

Crear claves SSH para usar con GitSync

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

    Se crearán dos archivos: id_rsa (clave privada) e id_rsa.pub (clave pública). Guarda la clave privada en un lugar seguro.

  2. Define la clave pública en el repositorio. Por ejemplo, en Bitbucket, introduce la configuración del repositorio y haz clic en Claves de acceso. Haz clic en Añadir clave y pega el contenido de id_rsa.pub en el parámetro Key.

  3. Antes de añadir la clave privada a la configuración de la integración, debe codificarse en Base64.

    Usa estos comandos para codificar el archivo:

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

      Abre PowerShell en la ubicación de id_rsa y pega lo siguiente (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

Esta es la estructura de directorios esperada en el repositorio remoto.

* Este es el resultado del comando tree de un repositorio de ejemplo. Los comentarios están en rojo.


gitsync10

gitsync11

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.