Recopila registros de Aqua Security
Descripción general
Este analizador extrae campos de los registros de Aqua Security y los transforma en el modelo de datos unificado (UDM). Analiza el campo message
como JSON, extrae el usuario, la IP de origen y otros campos relevantes, los asigna a campos de la AUA y clasifica los eventos según el campo action
, lo que enriquece los datos con contexto de seguridad, como nombres de reglas, descripciones y detalles de CVE.
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de tener acceso con privilegios a la consola de administración de Aqua Security.
Configura un feed en Google SecOps para transferir los registros de Aqua Security
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de Aqua Security).
- Selecciona Webhook como el Tipo de origen.
- Selecciona Aqua Security como el Tipo de registro.
- Haz clic en Siguiente.
- 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.
- Delimitador de división: Es el delimitador que se usa para separar las líneas de registro, como
- Haz clic en Siguiente.
- Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
- Haz clic en Generate Secret Key para generar una clave secreta que autentique este feed.
- 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.
- 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.
- Haz clic en Listo.
Crea una clave de API para el feed de webhook
Ve a consola de Google Cloud > Credenciales.
Haz clic en Crear credenciales y selecciona Clave de API.
Restringe el acceso de la clave de API a la API de Chronicle.
Especifica la URL del extremo
- En tu aplicación cliente, especifica la URL del extremo HTTPS que se proporciona en el feed de webhook.
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 autenticar en Google SecOps.SECRET
: Es la clave secreta que generaste para autenticar el feed.
Cómo crear un webhook en Aqua Security para Google SecOps
- Accede a la consola de Aqua Security.
- Ve a Configuración > Webhook de resultados de análisis de imágenes.
- Marca la casilla de verificación Habilitar el envío de resultados del análisis de imágenes.
- Ingresa
<ENDPOINT_URL>
, seguido de<API_KEY>
y<SECRET>
. - Haz clic en Guardar.
Tabla de asignación de UDM
Campo de registro (en orden ascendente) | Asignación de UDM | Lógica |
---|---|---|
jsonPayload.action | metadata.event_type | Se asigna según el valor de "jsonPayload.action". Consulta el código del analizador para ver las asignaciones específicas. |
jsonPayload.action | security_result.summary | Se asignan directamente. |
jsonPayload.adjective | target.file.full_path | Se asigna directamente si "jsonPayload.container" está vacío. |
jsonPayload.category | target.asset.category | Se asignan directamente. |
jsonPayload.cfappname | target.application | Se asignan directamente. |
jsonPayload.cfspace | principal.user.userid | Se asigna directamente si "jsonPayload.user" está vacío. |
jsonPayload.command | principal.ip | Se extrae con el patrón grok "user %{GREEDYDATA:user_id} \(%{IP:src_ip}\)". |
jsonPayload.command | principal.user.userid | Se extrae con el patrón grok "user %{GREEDYDATA:user_id} \(%{IP:src_ip}\)". |
jsonPayload.container | target.asset.product_object_id | Se asignan directamente. |
jsonPayload.data | security_result.detection_fields | Se analizan como pares clave-valor y se asignan a campos individuales dentro de "security_result.detection_fields". |
jsonPayload.description | security_result.description | Se asigna directamente si "jsonPayload.reason" está vacío. |
jsonPayload.host | principal.hostname | Se asignan directamente. |
jsonPayload.hostgroup | target.group.group_display_name | Se asignan directamente. |
jsonPayload.hostid | target.asset_id | Se asigna como "host id: %{jsonPayload.hostid}". |
jsonPayload.hostip | target.ip | Se asignan directamente. |
jsonPayload.image | target.file.full_path | Se asignan directamente. |
jsonPayload.level | security_result.action | Establece el valor en "ALLOW" si "jsonPayload.level" es "success". |
jsonPayload.reason | security_result.description | Se asignan directamente. |
jsonPayload.rule | security_result.rule_name | Se asignan directamente. |
jsonPayload.user | principal.user.userid | Se asignan directamente. |
jsonPayload.vm_location | target.asset.location.name | Se asignan directamente. |
jsonPayload.vm_name | target.resource.name | Se asignan directamente. |
resource.labels.instance_id | target.resource.id | Se asignan directamente. |
resource.labels.project_id | target.asset.attribute.cloud.project.id | Se asignan directamente. |
resource.labels.zone | target.asset.attribute.cloud.availability_zone | Se asignan directamente. |
timestamp | metadata.event_timestamp | Se asignan directamente después de la conversión al formato ISO8601. |
extensions.auth.type | Se establece en "SSO" si "jsonPayload.description" contiene "SAML". De lo contrario, se establece en "AUTHTYPE_UNSPECIFIED" si "jsonPayload.action" es "login" o "Login". | |
metadata.log_type | Establece el valor en "AQUA_SECURITY". | |
metadata.product_name | Establece el valor en "AQUA_SECURITY". | |
metadata.vendor_name | Establece el valor en "AQUA_SECURITY". | |
target.asset.attribute.cloud.environment | Establece el valor en "GOOGLE_CLOUD_PLATFORM". | |
target.resource.type | Establece el valor en "VIRTUAL_MACHINE". |
Cambios
2024-10-10
- Mejora:
- Se agregó compatibilidad con los nuevos registros.