Cierra alertas de forma masiva con la API

Compatible con:

En este documento, se describe cómo cerrar de forma programática una gran cantidad de alertas con la API de REST de Google Security Operations. Google recomienda usar este método en situaciones en las que cerrar las alertas en la plataforma llevaría demasiado tiempo.

Requisitos previos

Antes de comenzar, asegúrate de tener lo siguiente:

  • Entorno de Python: Necesitarás tener instalado Python para ejecutar las secuencias de comandos de muestra.
  • Muestras de la API: Acceso al repositorio de GitHub de api-samples-python
  • Credenciales: Un archivo de credenciales válido (por ejemplo, .chronicle_credentials.json).
  • jq: Es un procesador JSON de línea de comandos que se usa para analizar el resultado de la API.

Cómo buscar detecciones

Primero, debes identificar las alertas (detecciones de alertas) que deseas cerrar. Usas la secuencia de comandos list_detections.py para encontrar detecciones asociadas con un ID de regla específico.

  1. Ubica el ID de la regla y los detalles del proyecto.
  2. Ejecuta la secuencia de comandos para generar las detecciones en un archivo JSON. El nombre del archivo JSON puede ser detections.json o temp.json.

Comando:

python -m detect.v1alpha.list_detections \
  --project_id=$PROJECT_ID \
  --project_instance=$PROJECT_INSTANCE \
  --credentials_file=$CREDENTIALS_FILE \
  --rule_id=$RULE_ID \
  > ip_in_abuseipdb_out.json

Cómo extraer IDs de detección

La secuencia de comandos de actualización masiva requiere un archivo de texto sin formato que contenga un ID de detección por línea. En el paso anterior, se creó un archivo JSON que ahora debes convertir en un archivo de texto.

  1. Usa jq para extraer los IDs de detección (que comienzan con de_) del array JSON.
  2. Guarda el resultado en un archivo de texto.

Comando:

cat ip_in_abuseipdb_out.json | jq -r '.detections[].id' \
  > ip_in_abuseipdb_out.txt

Esto crea un archivo con los IDs, por ejemplo, de_ad9d2771-a567....

Configurar comentarios (acción "close")

Cuando cierras una alerta, el estado de "comentarios" se establece en CLOSED.

  • Comportamiento predeterminado: La secuencia de comandos bulk_update_alerts.py usa una carga útil de comentarios predeterminada codificada de forma rígida:
    • Estado: CLOSED
    • Motivo: REASON_MAINTENANCE
    • Comentario: automated cleanup.
  • Personalización: Si necesitas cambiar el veredicto (por ejemplo, a FALSE_POSITIVE) o el comentario, puedes hacer lo siguiente:
    • Edita directamente el diccionario DEFAULT_FEEDBACK en el archivo de Python.
    • Pasa parámetros de la CLI (p.ej., --verdict="FALSE_POSITIVE") para anular valores específicos.

Ejecutar cierre masivo

Ejecuta la secuencia de comandos de actualización masiva con el archivo de texto que creaste antes (consulta Cómo extraer IDs de detección). Esta secuencia de comandos llama al método UpdateAlert para cada ID de tu lista.

Comando:

python -m detect.v1alpha.bulk_update_alerts \
  --project_id=$PROJECT_ID \
  --project_instance=$PROJECT_INSTANCE \
  --credentials_file=$CREDENTIALS_FILE \
  --alert_ids_file="$(pwd)/ip_in_abuseipdb_out.txt"

Verifica el cierre (opcional)

Para verificar que las alertas se cerraron correctamente, puedes consultar los detalles de una sola alerta con el módulo get_alert.py.

Comando:

python -m detect.v1alpha.get_alert \
  --project_id=$PROJECT_ID \
  --project_instance=$PROJECT_INSTANCE \
  --credentials_file=$CREDENTIALS_FILE \
  --alert_id=$ALERT_ID

Resultado esperado: El resultado JSON contiene un objeto feedbackSummary que muestra "status": "CLOSED" y el comentario que especificaste (por ejemplo, "Limpieza automatizada").

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