ANSIBLE_AWX
En este documento, se explica cómo transferir registros de Ansible AWX a Google Security Operations con Bindplane. El analizador extrae campos de los registros de Ansible AWX con formato JSON. Utiliza el análisis de JSON para extraer los campos de registro y, luego, asigna estos valores al Modelo de datos unificado (UDM). También establece valores de metadatos predeterminados para la fuente y el tipo de evento.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Es una instancia de Google SecOps.
- Un host de Windows 2016 o posterior, o un host de Linux con
systemd
. - Si se ejecuta detrás de un proxy, asegúrate de que los puertos de firewall estén abiertos según los requisitos del agente de Bindplane.
- Acceso con privilegios a la consola de administración o al dispositivo de Ansible AWX con permisos de administrador
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración del SIEM > Agentes de recopilación.
- Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará BindPlane.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Profile.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.
Instalación 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 en Linux
- Abre una terminal con privilegios de raíz 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 obtener más opciones de instalación, consulta la guía de instalación.
Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps
- Accede al archivo de configuración:
- Ubica el archivo
config.yaml
. Por lo general, se encuentra en el directorio/opt/observiq-otel-collector/
en Linux o en el directorioC:Program FilesobservIQ OpenTelemetry Collector
en Windows. - Abre el archivo con un editor de texto (por ejemplo,
nano
,vi
o Bloc de notas).
- Ubica el archivo
Edita el archivo
config.yaml
de la siguiente manera:receivers: udplog: # Using high port to avoid requiring root privileges listen_address: "0.0.0.0:514" exporters: chronicle/awx: endpoint: malachiteingestion-pa.googleapis.com creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: YOUR_CUSTOMER_ID log_type: 'ANSIBLE_AWX' raw_log_field: body service: pipelines: logs/awx: receivers: - udplog exporters: - chronicle/awx
- Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
- Reemplaza
YOUR_CUSTOMER_ID
por el ID de cliente real. - Actualiza
/path/to/ingestion-authentication-file.json
a la ruta de acceso en la que se guardó el archivo de autenticación en el paso 1.
Reinicia el agente de Bindplane para aplicar los cambios
Para reiniciar el agente de BindPlane en Linux, ejecuta el siguiente comando:
sudo systemctl restart observiq-otel-collector
Para reiniciar el agente de Bindplane en Windows, puedes usar la consola de Servicios o ingresar el siguiente comando:
sc stop observiq-otel-collector && sc start observiq-otel-collector
Configura el registro externo en Ansible AWX
- Accede a la consola de administración de Ansible AWX.
- Ve a Configuración en la barra de navegación.
- Selecciona Configuración de registro en las opciones de Sistema.
- Proporciona los siguientes detalles de configuración:
- Logging Aggregator: Ingresa la dirección IP del agente de BindPlane.
- Puerto del agregador de registros: Ingresa el número de puerto del agente de BindPlane (por ejemplo,
514
). - Tipo de agregador de registros: Selecciona Otro en la lista.
- Nombre de usuario del agregador de registros: Déjalo en blanco (no es necesario para syslog).
- Contraseña o token del agregador de registros: Déjalo en blanco (no es necesario para syslog).
- Protocolo del agregador de registros: Selecciona UDP (recomendado para syslog).
- Logging Aggregator Level Threshold: Selecciona Info o tu nivel de registro preferido.
- Habilita el registro externo: Haz clic en el botón de activación para ACTIVAR.
- Registradores para enviar datos al agregador de registros: Selecciona los tipos de registros pertinentes:
awx
: Registros genéricos del servidoractivity_stream
: Registro de cambios en objetos de AWXjob_events
: Datos del módulo de devolución de llamada de Ansiblesystem_tracking
: Datos de configuración y hechos del sistema
- Log System Tracking Facts Individually: Desactiva la opción OFF (predeterminada).
- Haz clic en Guardar para aplicar la configuración.
- Opcional: Haz clic en Probar para verificar la conexión con el agente de BindPlane.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
agent.ephemeral_id |
observer.labels.value |
Es el valor de agent.ephemeral_id del registro sin procesar. |
agent.hostname |
observer.hostname |
Es el valor de agent.hostname del registro sin procesar. |
agent.id |
observer.asset_id |
Es la concatenación de "filebeat:" y el valor de agent.id del registro sin procesar. |
agent.name |
observer.user.userid |
Es el valor de agent.name del registro sin procesar. |
agent.type |
observer.application |
Es el valor de agent.type del registro sin procesar. |
agent.version |
observer.platform_version |
Es el valor de agent.version del registro sin procesar. |
cloud.availability_zone |
principal.resource.attribute.labels.value |
Es el valor de cloud.availability_zone del registro sin procesar. |
cloud.instance.id |
principal.resource.product_object_id |
Es el valor de cloud.instance.id del registro sin procesar. |
cloud.instance.name |
principal.resource.name |
Es el valor de cloud.instance.name del registro sin procesar. |
cloud.machine.type |
principal.resource.attribute.labels.value |
Es el valor de cloud.machine.type del registro sin procesar. |
cloud.provider |
principal.resource.attribute.labels.value |
Es el valor de cloud.provider del registro sin procesar. |
event1 |
metadata.description |
Es el valor de event1 del registro sin procesar. Si event1 no está presente, se usa el valor de message . |
event1_data.host |
principal.hostname |
Es el valor de event1_data.host del registro sin procesar. |
event1_data.remote_addr |
principal.ip |
Es la dirección IP que se extrajo de event1_data.remote_addr con un patrón de Grok. |
event1_data.task |
security_result.detection_fields.value |
Es el valor de event1_data.task del registro sin procesar. |
event1_data.task_path |
principal.process.file.full_path |
Es el valor de event1_data.task_path del registro sin procesar. |
event1_data.task_uuid |
security_result.detection_fields.value |
Es el valor de event1_data.task_uuid del registro sin procesar. |
event1_data.uuid |
metadata.product_log_id |
Es el valor de event1_data.uuid del registro sin procesar. |
event1_display |
security_result.description |
Es el valor de event1_display del registro sin procesar. |
host |
principal.hostname |
Es el valor de host del registro sin procesar, que se usa si no están presentes event1_data.host y host_name . |
host.architecture |
target.asset.hardware.cpu_platform |
Es el valor de host.architecture del registro sin procesar. |
host.fqdn |
target.administrative_domain |
Es el valor de host.fqdn del registro sin procesar. |
host.hostname |
target.hostname |
Es el valor de host.hostname del registro sin procesar. |
host.id |
target.asset.asset_id |
Es la concatenación de "Host Id: " y el valor de host.id del registro sin procesar. |
host.ip |
target.asset.ip |
Son los valores de host.ip del registro sin procesar. |
host.mac |
target.mac |
Son los valores de host.mac del registro sin procesar. |
host.os.codename |
target.asset.attribute.labels.value |
Es el valor de host.os.codename del registro sin procesar. |
host.os.kernel |
target.platform_patch_level |
Es el valor de host.os.kernel del registro sin procesar. |
host.os.name |
target.asset.attribute.labels.value |
Es el valor de host.os.name del registro sin procesar. |
host.os.platform |
target.platform |
Se establece en "LINUX" si host.os.platform es "debian". |
host.os.version |
target.platform_version |
Es el valor de host.os.version del registro sin procesar. |
host_name |
principal.hostname |
Es el valor de host_name del registro sin procesar, que se usa si no está presente event1_data.host . |
input.type |
network.ip_protocol |
Se establece en "TCP" si input.type es "tcp". |
level |
security_result.severity |
Se asigna según el valor de level : "DEBUG", "INFO" y "AUDIT" se asignan a "INFORMATIONAL"; "ERROR" se asigna a "ERROR"; "WARNING" se asigna a "MEDIUM". |
level |
security_result.severity_details |
Es el valor de level del registro sin procesar. |
log.source.address |
principal.ip |
Es la dirección IP que se extrajo de log.source.address con un patrón de Grok. |
log.source.address |
principal.port |
Es el puerto que se extrae de log.source.address con un patrón de Grok. |
logger_name |
intermediary.application |
Es el valor de logger_name del registro sin procesar. |
message |
metadata.description |
Es el valor de message del registro sin procesar, que se usa como resguardo si no está presente event1 . |
parent_uuid |
security_result.detection_fields.value |
Es el valor de parent_uuid del registro sin procesar. |
timestamp |
metadata.event_timestamp |
Es el valor de timestamp del registro sin procesar, analizado con el filtro de fecha. Se determina según la lógica: "NETWORK_CONNECTION" si existen log.source.address y host.ip en el JSON; "STATUS_UPDATE" si existen principal_hostname o event1_data.remote_addr ; "GENERIC_EVENT" en cualquier otro caso. Está codificado como "ANSIBLE_AWX". Está codificado como "ANSIBLE_AWX". Está codificado como "ANSIBLE_AWX". Se codificó de forma rígida como "ephemeral_id". Se codifica de forma rígida como "machine_type", "provider" o "availability_zone" según el campo que se asigne. Está codificado como "VIRTUAL_MACHINE". Se codifica de forma rígida como "parent_uuid", "task" o "task_uuid", según el campo que se esté asignando. Se codifica de forma rígida como "codename" o "os_name" según el campo que se asigne. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.