Recoger registros de JFrog Artifactory

Disponible en:

En este documento se explica cómo ingerir registros de JFrog Artifactory en Google Security Operations mediante Bindplane. El analizador gestiona dos formatos de registro de JFrog Artifactory diferentes. Usa patrones grok para identificar y extraer campos de cada formato. Después, asigna esos campos al UDM, gestiona las cargas útiles de JSON en uno de los formatos y descarta los registros que no coinciden con ninguno de los dos formatos.

Antes de empezar

  • Asegúrate de que tienes una instancia de Google SecOps.
  • Asegúrate de usar Windows 2016 o una versión posterior, o un host Linux con systemd.
  • Si se ejecuta a través de un proxy, asegúrate de que los puertos del cortafuegos estén abiertos.
  • Asegúrate de que tienes acceso privilegiado a la instancia de Jfrog Artifactory.

Obtener el archivo de autenticación de ingestión de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recogida.
  3. Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.

Obtener el ID de cliente de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instalar el agente de Bindplane

Instalación de ventanas

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el siguiente comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación de Linux

  1. Abre un terminal con privilegios de superusuario o sudo.
  2. Ejecuta el siguiente comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalación adicionales

Configurar el agente de BindPlane para ingerir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:

    1. Busca el archivo config.yaml. Normalmente, se encuentra en el directorio /etc/bindplane-agent/ en Linux o en el directorio de instalación en Windows.
    2. Abre el archivo con un editor de texto (por ejemplo, nano, vi o Bloc de notas).
  2. Edita el archivo config.yaml de la siguiente manera:

    ```yaml
    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: 'JFROG_ARTIFACTORY'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    ```
    
  3. Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.

  4. Sustituye <customer_id> por el ID de cliente real.

  5. Actualiza /path/to/ingestion-authentication-file.json a la ruta en la que se guardó el archivo de autenticación en la sección Obtener el archivo de autenticación de ingestión de Google SecOps.

Reinicia el agente de Bindplane para aplicar los cambios

  • Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Servicios o introducir el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar Syslog de JFrog Artifactory

  1. Conéctate a la instancia de Jfrog Artifactory.
  2. Edita el archivo $JFROG_HOME/artifactory/var/etc/artifactory/logback.xml con vi:

    vi $JFROG_HOME/artifactory/var/etc/artifactory/logback.xml
    
  3. Añade el siguiente appender syslog al archivo:

    <appender name="SYSLOG" class= "ch.qos.logback.classic.net.SyslogAppender">
        <syslogHost>Bindplane-Agent-IP</syslogHost>
        <facility>SYSLOG</facility>
        <suffixPattern>[%thread] %logger %msg</suffixPattern>
    </appender>
    
    • Sustituye Bindplane-Agent-IP en syslogHost por la dirección IP real configurada para el agente de BindPlane.
  4. Añade datos de configuración adicionales al archivo:

    <root>
    < level value="debug"/>
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
    <appender-ref ref="SYSLOG"/>
    </root>
    
  5. Para guardar el archivo, haz clic en el botón ESC (Escape) de tu teclado y escribe :wq.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
acción read_only_udm.metadata.product_event_type El valor de action del registro sin procesar se convierte a minúsculas y se asigna.
datetime read_only_udm.metadata.event_timestamp El campo datetime del registro sin procesar se analiza y se convierte en una marca de tiempo.
nombre de host read_only_udm.principal.hostname Se asigna directamente desde el campo hostname del registro sin procesar.
id read_only_udm.metadata.product_log_id Se asigna directamente desde el campo id del registro sin procesar (de la carga útil de JSON).
ip read_only_udm.principal.ip Se asigna directamente desde el campo ip del registro sin procesar. Codificado como "USER_RESOURCE_ACCESS". Codificado como "JFROG_ARTIFACTORY". Codificado como "Artifactory". Codificado como "JFROG".
propietario read_only_udm.principal.user.userid Se asigna si username no está presente en el registro sin procesar (de la carga útil de JSON).
repo_name read_only_udm.target.resource.name Se asigna directamente desde el campo repo_name del registro sin procesar.
repo_type read_only_udm.target.resource.resource_subtype Se asigna directamente desde el campo repo_type del registro sin procesar.
scope read_only_udm.target.resource.name Se asigna directamente desde el campo scope del registro sin procesar (de la carga útil de JSON).
scope read_only_udm.target.resource.resource_subtype Se codifica como "scope" si scope está presente en el registro sin procesar.
sequenceId read_only_udm.metadata.product_log_id Se quitan las comillas del campo sequenceId y, a continuación, se asigna.
subject read_only_udm.about.labels.key Se codifica como "subject" si subject está presente en el registro sin procesar.
subject read_only_udm.about.labels.value Se asigna directamente desde el campo subject del registro sin procesar (de la carga útil de JSON).
type read_only_udm.metadata.product_event_type Se asigna directamente desde el campo type del registro sin procesar (de la carga útil de JSON).
usuario read_only_udm.principal.user.userid Se asigna directamente desde el campo user del registro sin procesar.
nombre de usuario read_only_udm.principal.user.userid Se asigna directamente desde el campo username del registro sin procesar (de la carga útil de JSON).

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