Recopila registros de Ansible AWX

Compatible con:

Descripción general

Este analizador extrae datos de registro con formato JSON de Ansible AWX y los convierte en el modelo de datos unificado (UDM). Controla varios formatos de registro, extrae campos relevantes, como marcas de tiempo, direcciones IP, información del host y detalles del evento, y los asigna a los campos de la AUA correspondientes. También controla casos extremos específicos y enriquece los datos con etiquetas y metadatos.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Asegúrate de tener acceso con privilegios a Ansible AWX.

Configura un feed en Google SecOps para transferir registros de Ansible AWX

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de Ansible AWX).
  4. Selecciona Webhook como el Tipo de origen.
  5. Selecciona Ansible AWX como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. Opcional: Especifica valores para los siguientes parámetros de entrada:
    • Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como \n.
    • Espacio de nombres de recursos: Es el espacio de nombres de recursos.
    • Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
  8. Haz clic en Siguiente.
  9. Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
  10. Haz clic en Generate Secret Key para generar una clave secreta que autentique este feed.
  11. Copia y almacena la clave secreta. No podrás volver a ver esta clave secreta. Si es necesario, puedes volver a generar una clave secreta nueva, pero esta acción hace que la clave secreta anterior quede obsoleta.
  12. En la pestaña Detalles, copia la URL del extremo del feed del campo Información del extremo. Debes especificar esta URL de extremo en tu aplicación cliente.
  13. Haz clic en Listo.

Crea una clave de API para el feed de webhook

  1. Ve a consola de Google Cloud > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales y selecciona Clave de API.

  3. Restringe el acceso de la clave de API a la API de Google Security Operations.

Especifica la URL del extremo

  1. En tu aplicación cliente, especifica la URL del extremo HTTPS que se proporciona en el feed de webhook.
  2. Habilita la autenticación especificando la clave de API y la clave secreta como parte del encabezado personalizado en el siguiente formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendación: Especifica la clave de API como un encabezado en lugar de hacerlo en la URL. Si tu cliente de webhook no admite encabezados personalizados, puedes especificar la clave de API y la clave secreta con parámetros de consulta en el siguiente formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Reemplaza lo siguiente:

  • ENDPOINT_URL: Es la URL del extremo del feed.
  • API_KEY: Es la clave de API para autenticarse en Google Security Operations.
  • SECRET: Es la clave secreta que generaste para autenticar el feed.

Configura el webhook en Ansible AWX

  1. Accede a tu instancia de AWX.
  2. Ve a la sección Notificaciones, ubicada en Administración.
  3. Haz clic en Agregar.
  4. Configura la configuración del webhook:

    • Nombre: Proporciona un nombre descriptivo para el webhook (por ejemplo, Webhook de SecOps de Google).
    • Tipo: Selecciona Webhook en la lista.
    • URL de destino: Ingresa la URL del extremo de la API de Google SecOps.
    • Método HTTP: Selecciona POST.

    Opcional: Encabezados HTTP: Agrega los encabezados necesarios para la autenticación o el tipo de contenido. Por ejemplo, es posible que debas incluir un encabezado Authorization con un token del portador. Consulta la documentación de SecOps de Google para conocer los requisitos específicos de los encabezados.

  5. Haz clic en Guardar para crear el webhook.

  6. Ve a Proyectos, que se encuentra en Recursos.

  7. Selecciona los proyectos con los que deseas asociar el webhook.

  8. En el proyecto seleccionado, ve a la pestaña Notificaciones.

  9. Selecciona los activadores que deseas ACTIVAR para la notificación de webhook que creaste antes Iniciar | Éxito | Falla.

Las notificaciones ahora se aplicarán a todas las plantillas asociadas con el proyecto. Para inhabilitarlas de forma manual, navega al campo Notificaciones en cada plantilla.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
agent.ephemeral_id observer.labels.value El valor de agent.ephemeral_id del registro sin procesar.
agent.hostname observer.hostname El valor de agent.hostname del registro sin procesar.
agent.id observer.asset_id Concatenación de "filebeat:" y el valor de agent.id del registro sin procesar.
agent.name observer.user.userid El valor de agent.name del registro sin procesar.
agent.type observer.application El valor de agent.type del registro sin procesar.
agent.version observer.platform_version El valor de agent.version del registro sin procesar.
cloud.availability_zone principal.resource.attribute.labels.value El valor de cloud.availability_zone del registro sin procesar.
cloud.instance.id principal.resource.product_object_id El valor de cloud.instance.id del registro sin procesar.
cloud.instance.name principal.resource.name El valor de cloud.instance.name del registro sin procesar.
cloud.machine.type principal.resource.attribute.labels.value El valor de cloud.machine.type del registro sin procesar.
cloud.provider principal.resource.attribute.labels.value El valor de cloud.provider del registro sin procesar.
event1 metadata.description El valor de event1 del registro sin procesar. Si event1 no está presente, se usa el valor de message.
event1_data.host principal.hostname El valor de event1_data.host del registro sin procesar. Se usa como resguardo si host_name y host no están presentes.
event1_data.remote_addr principal.ip La dirección IP extraída de event1_data.remote_addr con un patrón grok
event1_data.task security_result.detection_fields.value El valor de event1_data.task del registro sin procesar.
event1_data.task_path principal.process.file.full_path El valor de event1_data.task_path del registro sin procesar.
event1_data.task_uuid security_result.detection_fields.value El valor de event1_data.task_uuid del registro sin procesar.
event1_data.uuid metadata.product_log_id El valor de event1_data.uuid del registro sin procesar.
event1_display security_result.description El valor de event1_display del registro sin procesar.
host principal.hostname El valor de host del registro sin procesar. Se usa como resguardo si host_name no está presente. Si es un número, se convierte en una cadena.
host.architecture target.asset.hardware.cpu_platform El valor de host.architecture del registro sin procesar.
host.fqdn target.administrative_domain El valor de host.fqdn del registro sin procesar.
host.hostname target.hostname El valor de host.hostname del registro sin procesar.
host.id target.asset.asset_id "Host Id: " concatenado con el valor de host.id del registro sin procesar
host.ip target.asset.ip Los valores del array host.ip del registro sin procesar
host.mac target.mac Los valores del array host.mac del registro sin procesar
host.os.codename target.asset.attribute.labels.value El valor de host.os.codename del registro sin procesar.
host.os.kernel target.platform_patch_level El valor de host.os.kernel del registro sin procesar.
host.os.name target.asset.attribute.labels.value El valor de host.os.name del registro sin procesar.
host.os.platform target.platform Si el valor de host.os.platform es "debian", el campo UDM se establece en "LINUX".
host.os.version target.platform_version El valor de host.os.version del registro sin procesar.
host_name principal.hostname El valor de host_name del registro sin procesar.
input.type network.ip_protocol Si el valor de input.type es "tcp", el campo UDM se establece en "TCP".
level security_result.severity Según el valor de level: "DEBUG", "INFO", "AUDIT" se asignan a "INFORMATIONAL"; "ERROR" se asigna a "ERROR"; "WARNING" se asigna a "MEDIUM".
level security_result.severity_details El valor de level del registro sin procesar.
log.source.address principal.ip La dirección IP extraída de log.source.address con un patrón grok
log.source.address principal.port El puerto extraído de log.source.address con un patrón grok
logger_name intermediary.application El valor de logger_name del registro sin procesar.
message metadata.description El valor de message del registro sin procesar. Se usa como resguardo si event1 no está presente.
metadata.event_type metadata.event_type Se determina según la lógica del analizador en función de la presencia de ciertos campos. "NETWORK_CONNECTION" si log.source.address y host.ip están presentes. "STATUS_UPDATE" si principal_hostname o event1_data.remote_addr están presentes. "GENERIC_EVENT" de lo contrario.
metadata.log_type metadata.log_type Está codificado en "ANSIBLE_AWX".
metadata.product_name metadata.product_name Está codificado en "ANSIBLE_AWX".
metadata.vendor_name metadata.vendor_name Está codificado en "ANSIBLE_AWX".
parent_uuid security_result.detection_fields.value El valor de parent_uuid del registro sin procesar.
principal.resource.resource_type principal.resource.resource_type Se codifica en "VIRTUAL_MACHINE" si cloud.instance.name está presente.
observer.labels.key observer.labels.key Se codifica de forma fija en "ephemeral_id".
principal.resource.attribute.labels.key principal.resource.attribute.labels.key Se codifica de forma fija en "machine_type", "provider" o "availability_zone", según el campo que se asigne.
security_result.detection_fields.key security_result.detection_fields.key Se codifica de forma fija en "parent_uuid", "task" o "task_uuid", según el campo que se asigne.
target.asset.attribute.labels.key target.asset.attribute.labels.key Está codificado en "nombre_código" o "nombre_SO", según el campo que se asigne.
timestamp metadata.event_timestamp El valor de timestamp del registro sin procesar, analizado y convertido en una marca de tiempo.
timestamp timestamp El valor de timestamp del registro sin procesar, analizado y convertido en una marca de tiempo.

Cambios

2022-11-09

  • Sin embargo, el analizador se creó recientemente.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.