Recopilar registros de Akeyless Vault
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
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recogida.
- Descarga el archivo de autenticación de ingestión.
Obtener el ID de cliente de Google SecOps
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- 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
- Inicia sesión en la interfaz web de Akeyless Gateway.
- Ve a Reenvío de registros.
- Selecciona Habilitar.
- 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.
- Haz clic en Guardar cambios.
Opcional: Ingerir Syslog a través de Bindplane
Instalación de Bindplane en Windows
- Abre el símbolo del sistema o PowerShell como administrador.
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
- Abre un terminal con privilegios de superusuario o sudo.
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
- 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).
- Busca el archivo
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
Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.
Sustituye
<customer_id>
por el ID de cliente real.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
- Inicia sesión en la interfaz web de Akeyless Gateway.
- Ve a Reenvío de registros.
- Selecciona Habilitar.
- 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.
- 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.