Recopilar registros de Akeyless Vault

Disponible en:

En este documento se explica cómo ingerir registros de Akeyless Vault en Google Security Operations mediante la ingestión directa o Bindplane. El analizador primero normaliza los mensajes de registro, que pueden estar en formato de pares clave-valor o JSON, en una estructura coherente. A continuación, extrae los campos pertinentes y los asigna al esquema del modelo de datos unificado (UDM), categorizando el tipo de evento en función de la presencia de direcciones IP y las acciones realizadas.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Acceso privilegiado a Akeyless Vault

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.

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.

Configurar el reenvío de registros para la ingestión directa en Google SecOps en Akeyless Vault

  1. Inicia sesión en la interfaz web de Akeyless Gateway.
  2. Ve a Reenvío de registros.
  3. Selecciona Habilitar.
  4. Proporcione los siguientes detalles de configuración:
    • Formato de registro: selecciona JSON.
    • Servidor de registro de auditoría: introduce https://audit.akeyless.io/.
    • Servicio: selecciona Google Chronicle.
    • Clave de cuenta de servicio: proporciona el archivo JSON que contiene las credenciales de la cuenta de servicio.
    • ID de cliente: introduce tu identificador único de Google SecOps.
    • Región: introduce la región en la que se aprovisiona Google SecOps.
    • Log Type (Tipo de registro): introduce AKEYLESS_VAULT.
  5. Haz clic en Guardar cambios.

Opcional: Ingerir Syslog a través de Bindplane

Instalación de Bindplane en Windows

  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 Bindplane en 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

Para ver más opciones de instalación, consulta la guía de instalación.

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

  1. Accede al archivo de configuración:
    • 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.
    • 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:

    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: 'AKEYLESS_VAULT'
                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 Bindlane 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 el reenvío de Syslog a Bindplane en Akeyless Vault

  1. Inicia sesión en la interfaz web de Akeyless Gateway.
  2. Ve a Reenvío de registros.
  3. Selecciona Habilitar.
  4. Proporcione los siguientes detalles de configuración:
    • Formato de registro: selecciona JSON.
    • Servidor de registro de auditoría: introduce https://audit.akeyless.io/.
    • Servicio: selecciona Syslog.
    • Red Syslog: selecciona UDP. Puedes seleccionar otra opción en función de la configuración de tu agente Bindplane.
    • Host de Syslog: introduce la dirección IP del agente de BindPlane.
    • Formato Syslog: selecciona Texto.
    • Opcional: TLS. Marca la casilla TLS y sube el certificado TLS.
  5. Haz clic en Guardar cambios.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
access_id read_only_udm.metadata.product_log_id Se asigna directamente desde el campo access_id. Si no está presente, se extrae del campo message mediante la expresión regular access_id:\s+(?<accessid>[\w-]+).
account_id read_only_udm.target.user.userid Se asigna directamente desde el campo account_id.
acción read_only_udm.security_result.action_details Se asigna directamente desde el campo action.
componente read_only_udm.target.resource.name Se asigna directamente desde el campo component.
duración read_only_udm.network.session_duration.seconds Se ha asignado directamente desde el campo duration y se ha convertido en un número entero.
remote_addr read_only_udm.principal.ip Se extrae del campo remote_addr, se divide por comas y se añade a la matriz principal.ip.
request_parameters.access_type read_only_udm.target.resource.attribute.labels.value (donde key es 'access_type') Se asigna directamente desde el campo request_parameters.access_type. Si no está presente, se extrae del campo message mediante la expresión regular access_type:\s+(?<accesstype>[\S]+).
request_parameters.comment read_only_udm.target.resource.attribute.labels.value (donde la clave es "comment") Se asigna directamente desde el campo request_parameters.comment.
request_parameters.operation read_only_udm.target.resource.attribute.labels.value (donde la clave es "operation") Se asigna directamente desde el campo request_parameters.operation.
request_parameters.product read_only_udm.target.resource.attribute.labels.value (donde la clave es "product") Se asigna directamente desde el campo request_parameters.product. Si no está presente, se extrae del campo message mediante la expresión regular product:\s+(?<product>[\w\s]+).
request_parameters.token_id read_only_udm.target.resource.attribute.labels.value (donde key es 'token_id') Se asigna directamente desde el campo request_parameters.token_id.
request_parameters.transaction_type read_only_udm.target.resource.attribute.labels.value (donde key es 'transaction_type') Se asigna directamente desde el campo request_parameters.transaction_type y se convierte en una cadena. Si no está presente, se extrae del campo message mediante la expresión regular transaction_type:\s+(?<transactiontype>[\S]+).
request_parameters.unique_id read_only_udm.target.resource.attribute.labels.value (donde la clave es 'unique_id') Se asigna directamente desde el campo request_parameters.unique_id. Si no está presente, se extrae del campo message mediante la expresión regular unique_id:\s+(?<uniqueid>[\w-]+).
request_parameters.universal_identity_rotate_type read_only_udm.target.resource.attribute.labels.value (donde key es 'universal_identity_rotate_type') Se asigna directamente desde el campo request_parameters.universal_identity_rotate_type.
request_parameters.user_agent read_only_udm.target.resource.attribute.labels.value (donde la clave es 'user_agent') Se asigna directamente desde el campo request_parameters.user_agent.
gravedad Se asigna directamente desde el campo severity.
status read_only_udm.network.http.response_code Se ha asignado directamente desde el campo status y se ha convertido en un número entero.
timestamp read_only_udm.metadata.event_timestamp Se asigna directamente desde el campo timestamp de la entrada de registro.
read_only_udm.metadata.log_type Valor fijo establecido en el código fuente AKEYLESS_VAULT.
read_only_udm.metadata.event_type Se asigna el valor STATUS_UPDATE si ip_present es true. De lo contrario, se asigna el valor predeterminado GENERIC_EVENT.
read_only_udm.metadata.vendor_name Se extrae del campo message mediante la expresión regular CEF:0|%{DATA:device_vendor}|%{DATA:device_product}|%{DATA:device_version}|%{DATA:device_event_class_id}\s+%{WORD}\[%{INT}\]:\s+%{GREEDYDATA:kv_data}.
read_only_udm.metadata.product_name Se extrae del campo message mediante la expresión regular CEF:0|%{DATA:device_vendor}|%{DATA:device_product}|%{DATA:device_version}|%{DATA:device_event_class_id}\s+%{WORD}\[%{INT}\]:\s+%{GREEDYDATA:kv_data}.
read_only_udm.metadata.product_version Se extrae del campo message mediante la expresión regular CEF:0|%{DATA:device_vendor}|%{DATA:device_product}|%{DATA:device_version}|%{DATA:device_event_class_id}\s+%{WORD}\[%{INT}\]:\s+%{GREEDYDATA:kv_data}.
read_only_udm.metadata.product_event_type Se extrae del campo message mediante la expresión regular <%{INT}>%{TIMESTAMP_ISO8601:time}\s+%{DATA}\s+(?P<product_event_type>[\w-]+)\[%{INT}\]:\s+(?P<time2>\d{1,2}-%{MONTH}-\d{1,4}\s+\d{1,2}:\d{1,2}:\d{1,2}.\d+)\s+%{WORD}\s+%{WORD:severity}\s+CEF:0|%{DATA:device_vendor}|%{DATA:device_product}|%{DATA:device_version}|%{DATA:device_event_class_id}\s+%{WORD}\[%{INT}\]:\s+%{GREEDYDATA:kv_data}.
read_only_udm.target.namespace Se extrae del campo message mediante la expresión regular namespace:\s+(?<namespace>[\S]+).
read_only_udm.security_result.severity Asignado del campo severity: Info a INFORMATIONAL, Error a ERROR, Warning a MEDIUM; de lo contrario, UNKNOWN_SEVERITY.
read_only_udm.network.http.method Asignado desde el campo action: get a GET, put y Authentication a PUT, post a POST y delete a DELETE.

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