Recopila registros del área 1
En este documento, se explica cómo transferir registros de Area 1 Email Security (de Cloudflare) a Google Security Operations con AWS S3. El analizador procesa los registros en formato JSON. Extrae los campos pertinentes de la estructura JSON anidada, los asigna al Modelo de datos unificado (UDM) y enriquece los datos con información geográfica y detalles de seguridad, como los hashes y la disposición de los archivos adjuntos.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- 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, los puertos de firewall están abiertos.
- Acceso privilegiado a Area 1 Email Security (de Cloudflare)
Configura IAM de AWS y el bucket de S3
- Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Crea un bucket
- Accede a la consola de AWS.
- Ve a S3 > Crear bucket.
- Ingresa un nombre para el bucket (por ejemplo,
area1-security-logs
). - Deja los otros valores predeterminados (o configura el encriptado y el control de versiones si es necesario).
- Haz clic en Crear.
- Guarda el Nombre y la Región del bucket para referencia futura.
- Crea un usuario siguiendo esta guía del usuario: Cómo crear un usuario de IAM.
- Selecciona el usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- Haz clic en Crear clave de acceso en la sección Claves de acceso.
- Selecciona Servicio de terceros como Caso de uso.
- Haz clic en Siguiente.
- Opcional: Agrega una etiqueta de descripción.
- Haz clic en Crear clave de acceso.
- Haz clic en Descargar archivo CSV y guarda la clave de acceso y la clave de acceso secreta para consultarlas en el futuro.
- Haz clic en Listo.
- Selecciona la pestaña Permisos.
- En Políticas de permisos, haz clic en Agregar permisos.
- Selecciona Adjuntar políticas directamente.
- Busca la política AmazonS3FullAccess.
- Selecciona la política.
- Haz clic en Siguiente.
- Haz clic en Agregar permisos.
Obtén credenciales de la API de Area 1
- Accede al panel de Area 1 Security (Cloudflare).
- Ve a Configuración > Acceso a la API.
- Genera la clave de API (token).
- Copia y guarda el token en un lugar seguro.
Configura los paquetes de Python necesarios
Accede a tu host de recopilación de registros (por ejemplo, una VM de AWS) y ejecuta el siguiente comando para configurar las credenciales de AWS:
pip install boto3 requests aws configure
Crea la secuencia de comandos de Area 1 Log Puller
Para crear el siguiente archivo, ingresa
sudo vi area1_to_s3.py
y, luego, copia el siguiente código:- Ajusta lo siguiente:
#!/usr/bin/env python3 import os import requests import boto3 import datetime import json # Configuration AREA1_API_TOKEN = os.environ.get("AREA1_API_TOKEN") # Load securely from env AWS_PROFILE = os.environ.get("AWS_PROFILE", None) # Optional, for named profiles S3_BUCKET_NAME = "area1-security-logs" LOG_TYPE = "events" # Time range end_time = datetime.datetime.utcnow() start_time = end_time - datetime.timedelta(days=1) def fetch_area1_logs(): url = f"https://api.area1security.com/v1/{LOG_TYPE}" headers = { "Authorization": f"Bearer {AREA1_API_TOKEN}", "Accept": "application/json" } params = { "startDate": start_time.strftime("%Y-%m-%dT%H:%M:%SZ"), "endDate": end_time.strftime("%Y-%m-%dT%H:%M:%SZ") } response = requests.get(url, headers=headers, params=params) response.raise_for_status() return response.json() def upload_to_s3(data): filename = f"area1_{LOG_TYPE}_{start_time.strftime('%Y%m%d')}.json" session = boto3.Session(profile_name=AWS_PROFILE) if AWS_PROFILE else boto3.Session() s3 = session.client("s3") s3.put_object( Bucket=S3_BUCKET_NAME, Key=f"logs/{filename}", Body=json.dumps(data).encode("utf-8"), ContentType="application/json" ) print(f"[✓] Uploaded {filename} to s3://{S3_BUCKET_NAME}/logs/") if __name__ == "__main__": logs = fetch_area1_logs() upload_to_s3(logs)
Guardar y salir
vi
: Haz clic enesc
y, luego, escribe:wq
.
Almacena las variables de entorno
Crea un archivo seguro para almacenar variables de entorno en
/etc/area1.env
(o/home/user/.area1.env
)export AREA1_API_TOKEN="your_actual_area1_api_token" export AWS_PROFILE="<your_aws_programmatic_username>"
Asegúrate de que el archivo sea seguro:
chmod 600 /etc/area1.env
Ejecuta y prueba la secuencia de comandos
Ejecuta la siguiente secuencia de comandos:
python3 area1_to_s3.py
Deberías ver lo siguiente:
Uploaded area1_events_20250701.json to s3://area1-security-logs/logs/
Automatiza con Cron
Ejecuta
sudo vi /usr/local/bin/run_area1.sh
y, luego, copia el siguiente código para crear el wrapper de la secuencia de comandos para Cron:#!/usr/bin/env bash set -euo pipefail source /etc/area1.env /usr/bin/python3 /opt/scripts/area1_to_s3.py
Haz que el archivo sea ejecutable:
chmod +x /usr/local/bin/run_area1.sh
Programado para ejecutarse todos los días a las 01:00 UTC:
crontab -e 0 1 * * * /usr/local/bin/run_area1.sh >> /var/log/area1_to_s3.log 2>&1
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds
- Centro de contenido > Paquetes de contenido
Configura feeds desde Configuración del SIEM > Feeds
Para configurar un feed, sigue estos pasos:
- Ve a SIEM Settings > Feeds.
- Haz clic en Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
Area1 Logs
). - Selecciona Amazon S3 como el Tipo de fuente.
- Selecciona Area1 Security como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
- Región: Es la región en la que se encuentra el bucket de Amazon S3.
- URI de S3: Es el URI del bucket (el formato debe ser
s3://<your-log-bucket-name>
). Reemplaza lo siguiente:your-log-bucket-name
: el nombre del bucket.
- El URI es un: Selecciona Directorio que incluye subdirectorios.
- Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
- ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3.
- Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3.
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Configura feeds desde el Centro de contenido
Especifica valores para los siguientes campos:
Región: Es la región en la que se encuentra el bucket de Amazon S3.
- URI de S3: Es el URI del bucket (el formato debe ser
s3://<your-log-bucket-name>
). Reemplaza lo siguiente:your-log-bucket-name
: el nombre del bucket.
- El URI es un: Selecciona Directorio que incluye subdirectorios.
- Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
- ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3.
- Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3.§
- URI de S3: Es el URI del bucket (el formato debe ser
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
- Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
alert_id | security_result.rule_id | El valor se toma del campo alert_id . |
alert_reasons | security_result.description | El valor se toma del campo alert_reasons . |
attachments.att_size | security_result.about.file.size | El valor se toma del campo attachments.att_size y se convierte en un número entero sin signo. |
attachments.disposition | security_result.about.user.attribute.labels.value | El valor se toma del campo attachments.disposition . |
attachments.extension | security_result.about.file.mime_type | El valor se toma del campo attachments.extension . |
attachments.md5 | security_result.about.file.md5 | El valor se toma del campo attachments.md5 . |
attachments.name | security_result.about.file.full_path | El valor se toma del campo attachments.name . |
attachments.sha1 | security_result.about.file.sha1 | El valor se toma del campo attachments.sha1 . |
attachments.sha256 | security_result.about.file.sha256 | El valor se toma del campo attachments.sha256 . |
attachments.ssdeep | security_result.about.file.ssdeep | El valor se toma del campo attachments.ssdeep . |
delivery_mode | security_result.detection_fields.value | El valor se toma del campo delivery_mode . |
envelope_from | principal.user.email_addresses, network.email.from | El valor se toma del campo envelope_from . |
envelope_to | network.email.to, target.user.email_addresses | El valor se toma del campo envelope_to . |
final_disposition | security_result.category_details | El valor se toma del campo final_disposition . |
message_id | metadata.product_log_id | El valor se toma del campo message_id después de quitar los caracteres "<" y ">". |
replyto | network.email.bounce_address | El valor se toma del campo replyto . |
smtp_helo_server_ip | principal.ip | El valor se toma del campo smtp_helo_server_ip . |
smtp_helo_server_ip_as_name | principal.location.name | El valor se toma del campo smtp_helo_server_ip_as_name . |
smtp_helo_server_ip_as_number | principal.asset_id | El valor se toma del campo smtp_helo_server_ip_as_number y se antepone con asset_id: . |
smtp_helo_server_ip_geo | principal.location.country_or_region, principal.location.state, principal.location.city | El valor se extrae del campo smtp_helo_server_ip_geo con un patrón de Grok. |
smtp_helo_server_name | principal.administrative_domain | El valor se toma del campo smtp_helo_server_name . |
source | metadata.vendor_name | El valor se toma del campo source . Si el campo está vacío, el valor se establece en area1security . |
asunto | network.email.subject | El valor se toma del campo subject . |
hora | metadata.event_timestamp | El valor se toma del campo time y se convierte en una marca de tiempo. |
metadata.event_type | El valor se establece en EMAIL_TRANSACTION . |
|
metadata.product_name | El valor se establece en AREA1 . |
|
metadata.log_type | El valor se establece en AREA1 . |
|
security_result.about.user.attribute.labels.key | El valor se establece en disposition . |
|
security_result.category | El valor se establece en SOFTWARE_MALICIOUS . |
|
security_result.detection_fields.key | El valor se establece en delivery_mode . |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.