Recopila registros de Jamf Security Cloud
En este documento, se explica cómo transferir registros de Jamf Security Cloud a Google Security Operations con Google Cloud Storage o Amazon S3. Jamf Security Cloud es una plataforma de seguridad de extremos y defensa contra amenazas móviles para dispositivos Apple. Genera registros de eventos de detección de amenazas, cumplimiento y seguridad del dispositivo que abarcan la protección a nivel de DNS, la prevención de phishing, el filtrado de contenido y la evaluación de riesgos del dispositivo. Jamf Security Cloud exporta registros con Data Streams. Cada configuración del flujo de datos envía exactamente un tipo de datos a un destino.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Acceso con privilegios al portal de Jamf Security Cloud
- Para el método 1: Acceso privilegiado a Google Cloud (Google Cloud Storage, Cloud Run)
- Para el método 2: acceso con privilegios a AWS (S3, IAM)
Selecciona los tipos de flujos de datos que deseas exportar
El analizador de Jamf Security Cloud admite los seis tipos de transmisiones de datos. Crea una configuración de flujo de datos independiente para cada tipo de datos que desees transferir:
- Eventos de amenazas: Eventos de amenazas detectados, incluidas comunicaciones de red maliciosas, software malicioso y apps riesgosas
- Tráfico de red: Registros de tráfico de red procesados por la infraestructura de red de Jamf
- Eventos de acceso: Solicitudes permitidas y rechazadas de las políticas de acceso a la red de confianza cero (ZTNA) de Jamf Connect
- Datos del dispositivo: Información sobre los dispositivos
- Estadísticas de las apps: Información sobre las aplicaciones instaladas en los dispositivos
- Datos de vulnerabilidades: Detalles sobre cada vulnerabilidad detectada y el dispositivo en el que se encontró
Método 1: Google Cloud Almacenamiento
Jamf Security Cloud no tiene un Google Cloud destino de almacenamiento integrado, y Jamf señala que no se admite el envío de datos directamente a Google SecOps a través de la integración de HTTP. Este método usa el destino de flujo de datos HTTP genérico para enviar eventos a una función de Cloud Run que te pertenece y que los escribe en un bucket de Google Cloud Storage. Luego, Google SecOps ingiere el bucket con un feed de Google Cloud Storage V2.
Crea un Google Cloud bucket de Storage
- Ve a la consola deGoogle Cloud .
- Selecciona tu proyecto o crea uno nuevo.
- En el menú de navegación, ve a Cloud Storage > Buckets.
- Haz clic en Crear bucket.
Proporciona los siguientes detalles de configuración:
Parámetro de configuración Valor Asigna un nombre a tu bucket Ingresa un nombre global único (por ejemplo, jamf-security-cloud-logs).Tipo de ubicación Elige según tus necesidades (regional, birregional o multirregional) Ubicación Selecciona la ubicación (por ejemplo, us-central1).Clase de almacenamiento Estándar (recomendado para los registros a los que se accede con frecuencia) Control de acceso Uniforme (recomendado) Herramientas de protección Opcional: Habilita el control de versiones de objetos o la política de retención Haz clic en Crear.
Crea una cuenta de servicio para la función de Cloud Run
- En Google Cloud Console, ve a IAM y administración > Cuentas de servicio.
- Haz clic en Crear cuenta de servicio.
- Proporciona los siguientes detalles de configuración:
- Nombre de la cuenta de servicio: Ingresa
jamf-sc-receiver-sa. - Descripción de la cuenta de servicio: Ingresa
Service account for the Cloud Run function that receives Jamf Security Cloud events.
- Nombre de la cuenta de servicio: Ingresa
- Haz clic en Crear y continuar.
- Haz clic en Listo.
Otorga a la cuenta de servicio acceso al bucket
- Ve a Cloud Storage > Buckets.
- Haz clic en el nombre de tu bucket.
- Ve a la pestaña Permisos.
- Haz clic en Otorgar acceso.
- Proporciona los siguientes detalles de configuración:
- Agregar entidades: Ingresa el correo electrónico de la cuenta de servicio (por ejemplo,
jamf-sc-receiver-sa@PROJECT_ID.iam.gserviceaccount.com). - Asignar roles: Selecciona Administrador de objetos de Storage.
- Agregar entidades: Ingresa el correo electrónico de la cuenta de servicio (por ejemplo,
- Haz clic en Guardar.
Crea la función de Cloud Run para recibir eventos
- Genera un token de autenticación seguro y guárdalo para futuras referencias (por ejemplo, ejecuta
openssl rand -hex 32). Jamf Security Cloud envía este token en un encabezado de solicitud, y la función rechaza las solicitudes sin él. - En Google Cloud Console, ve a Cloud Run.
- Haz clic en Crear servicio.
- Selecciona Función (usa un editor intercalado para crear una función).
En la sección Configurar, proporciona los siguientes detalles de configuración:
Parámetro de configuración Valor Nombre del servicio jamf-sc-receiverRegión Selecciona la región que coincida con tu bucket de Cloud Storage (por ejemplo, us-central1).Tiempo de ejecución Selecciona Python 3.12 o una versión posterior. En la sección Autenticación, selecciona Permitir invocaciones no autenticadas.
Expande Contenedores, redes y seguridad.
Ve a la pestaña Seguridad:
- Cuenta de servicio: Selecciona
jamf-sc-receiver-sa
- Cuenta de servicio: Selecciona
Ve a la pestaña Contenedores:
- Haz clic en Variables y secretos.
- Haz clic en + Agregar variable para cada variable de entorno:
Nombre de la variable Valor de ejemplo Descripción GCS_BUCKETjamf-security-cloud-logsNombre del bucket de Cloud Storage GCS_PREFIXjamf-security-cloud/Prefijo para los archivos de registro AUTH_TOKEN<your-generated-token>Es el token que Jamf Security Cloud envía en el encabezado X-Auth-Token.Haz clic en Crear.
Espera a que se cree el servicio. Después de crear el servicio, se abrirá automáticamente el editor de código intercalado.
Ingresa main en el campo Punto de entrada.
En el editor de código intercalado, crea dos archivos:
Primer archivo: main.py
import hashlib import os from datetime import datetime, timezone import functions_framework from google.cloud import storage BUCKET = os.environ["GCS_BUCKET"] PREFIX = os.environ.get("GCS_PREFIX", "jamf-security-cloud/") AUTH_TOKEN = os.environ["AUTH_TOKEN"] storage_client = storage.Client() @functions_framework.http def main(request): if request.headers.get("X-Auth-Token") != AUTH_TOKEN: return ("Unauthorized", 401) body = request.get_data() if not body: return ("OK", 200) now = datetime.now(timezone.utc) digest = hashlib.sha256(body).hexdigest()[:12] object_name = f"{PREFIX}{now:%Y/%m/%d}/{now:%Y%m%dT%H%M%S%f}_{digest}.json" storage_client.bucket(BUCKET).blob(object_name).upload_from_string( body, content_type="application/json" ) return ("OK", 200)Segundo archivo: requirements.txt
functions-framework==3.* google-cloud-storage==2.*
Haz clic en Guardar y volver a implementar.
Copia y guarda la URL del servicio (por ejemplo,
https://jamf-sc-receiver-abc123-uc.a.run.app). Usarás el nombre de host en la siguiente sección.
Configura un flujo de datos HTTP genérico en Jamf Security Cloud
- Accede al portal de Jamf Security Cloud.
- Ve a Integraciones > Flujos de datos.
- Haz clic en Configuración nueva.
- Selecciona el tipo de flujo de datos (por ejemplo, Eventos de amenazas).
- Selecciona HTTP genérico como el tipo de destino del flujo de datos.
- Haz clic en Continuar.
- Proporciona los siguientes detalles de configuración:
- Protocolo: Selecciona https.
- Nombre de host o IP del servidor: Ingresa el nombre de host del servicio de Cloud Run (por ejemplo,
jamf-sc-receiver-abc123-uc.a.run.app). - Puerto: Ingresa
443 - Endpoint: Ingresa
/. - Encabezados adicionales: Haz clic en Agregar encabezado y, luego, ingresa el nombre
X-Auth-Tokencon el token generado como valor.
- Haz clic en Probar configuración y verifica que la prueba se realice correctamente.
- Haz clic en el botón de activación Habilitar configuración para activar el flujo de datos.
- Haz clic en Guardar.
- Repite estos pasos para cada tipo de flujo de datos adicional que desees exportar.
Recupera la cuenta de servicio de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Add New Feed.
- Haz clic en Configura un feed único.
- Selecciona Google Cloud Storage V2 como el Tipo de fuente.
- Selecciona JAMF Security Cloud como el Tipo de registro.
Haz clic en Obtener cuenta de servicio. Se mostrará un correo electrónico único de la cuenta de servicio, por ejemplo:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopia esta dirección de correo electrónico. La necesitarás en el próximo paso.
Otorga acceso a la cuenta de servicio de Google SecOps al bucket
- Ve a Cloud Storage > Buckets.
- Haz clic en el nombre de tu bucket.
- Ve a la pestaña Permisos.
- Haz clic en Otorgar acceso.
- Proporciona los siguientes detalles de configuración:
- Agregar entidades: Pega el correo electrónico de la cuenta de servicio de Google SecOps.
- Asignar roles: Selecciona Visualizador de objetos de Storage.
Haz clic en Guardar.
Configura un feed en Google SecOps para transferir datos desde Google Cloud Storage
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Add New Feed.
- Haz clic en Configura un feed único.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
Jamf Security Cloud logs). - Selecciona Google Cloud Storage V2 como el Tipo de fuente.
- Selecciona JAMF Security Cloud como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
Campo Valor URI del bucket de almacenamiento gs://jamf-security-cloud-logs/jamf-security-cloud/Opción de eliminación de la fuente Selecciona la opción de eliminación según tu preferencia. Antigüedad máxima del archivo (días) El valor predeterminado es de 180 días. Espacio de nombres del recurso El espacio de nombres del recurso Etiquetas de transferencia Es la etiqueta que se aplicará a los eventos de este feed. - Reemplaza
jamf-security-cloud-logspor el nombre real de tu bucket. - Siempre incluye la barra diagonal final (
/) al final del URI.
- Reemplaza
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Método 2: Amazon S3
AWS S3 propiedad del cliente es el único destino de almacenamiento en la nube que admite de forma nativa Jamf Security Cloud Data Streams. Jamf Security Cloud escribe eventos directamente en tu bucket de S3, y Google SecOps los ingiere con un feed de Amazon S3 V2.
Configura el bucket de AWS S3 y el rol de IAM para Jamf Security Cloud
- Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket
- Guarda el Nombre y la Región del bucket para consultarlos en el futuro (por ejemplo,
jamf-security-cloud-logs). Crea un rol de IAM que Jamf Security Cloud asume para subir datos al bucket. El rol requiere el permiso
s3:PutObjecten el bucket y la cuenta de AWS de Jamf que aparece como una entidad de confianza.Guarda el rol de IAM
ARNpara consultarlo en el futuro.
Configura un flujo de datos de AWS S3 propiedad del cliente en Jamf Security Cloud
- Accede al portal de Jamf Security Cloud.
- Ve a Integraciones > Flujos de datos.
- Haz clic en Configuración nueva.
- Selecciona el tipo de flujo de datos (por ejemplo, Eventos de amenazas).
- Selecciona AWS S3 propiedad del cliente como el tipo de destino del flujo de datos.
- Haz clic en Continuar.
- Proporciona los siguientes detalles de configuración:
- Nombre del bucket de Amazon S3: Ingresa el nombre del bucket (por ejemplo,
jamf-security-cloud-logs). - Rol de IAM asumido por Jamf: Ingresa el ARN del rol de IAM que creaste para Jamf Security Cloud.
- Región: Selecciona la región de tu bucket de S3.
- Nombre del bucket de Amazon S3: Ingresa el nombre del bucket (por ejemplo,
- Haz clic en Crear configuración.
Opcional: En Configuración avanzada, selecciona JSON como formato de mensaje.
Haz clic en el botón de activación Habilitar configuración para activar el flujo de datos.
Haz clic en Guardar.
Repite estos pasos para cada tipo de flujo de datos adicional que desees exportar.
Crea un usuario y una clave de acceso de IAM para Google SecOps
- 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 el 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 para guardar la clave de acceso y la clave de acceso secreta para consultarlas en el futuro.
- Haz clic en Listo.
- Selecciona la pestaña Permisos.
- Haz clic en Agregar permisos en la sección Políticas de permisos.
- Selecciona 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.
Configura un feed en Google SecOps para transferir datos desde Amazon S3
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Add New Feed.
- Haz clic en Configura un feed único.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
Jamf Security Cloud logs). - Selecciona Amazon S3 V2 como el Tipo de fuente.
- Selecciona JAMF Security Cloud como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
Campo Valor URI de S3 s3://jamf-security-cloud-logs/Opción de eliminación del código fuente Selecciona la opción de eliminación según tu preferencia. Antigüedad máxima del archivo (días) El valor predeterminado es de 180 días. ID de clave de acceso Clave de acceso del usuario con acceso al bucket de S3 Clave de acceso secreta Clave secreta del usuario con acceso al bucket de S3 Espacio de nombres del recurso El espacio de nombres del recurso Etiquetas de transferencia Es la etiqueta que se aplicará a los eventos de este feed. - Reemplaza
jamf-security-cloud-logspor el nombre real de tu bucket de S3.
- Reemplaza
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
accessPoint_label |
additional.fields |
Combinado |
action_label |
additional.fields |
Combinado |
activated_label |
additional.fields |
Combinado |
alertId_label |
additional.fields |
Combinado |
appName_label |
additional.fields |
Combinado |
appRiskIndexThreshold_label |
additional.fields |
Combinado |
appVersion_label |
additional.fields |
Combinado |
app_id_label |
additional.fields |
Combinado |
carrierName_label |
additional.fields |
Combinado |
category_label |
additional.fields |
Combinado |
deploymentState_label |
additional.fields |
Combinado |
developer_label |
additional.fields |
Combinado |
deviceId_label |
additional.fields |
Combinado |
deviceModel_label |
additional.fields |
Combinado |
deviceName_label |
additional.fields |
Combinado |
deviceRiskIndex_label |
additional.fields |
Combinado |
device_os_label |
additional.fields |
Combinado |
device_user_name_label |
additional.fields |
Combinado |
eventTimeUtcMs_label |
additional.fields |
Combinado |
eventType_label |
additional.fields |
Combinado |
hwPlatform_label |
additional.fields |
Combinado |
imei_label |
additional.fields |
Combinado |
installationTimeUtcMs_label |
additional.fields |
Combinado |
installedBy_label |
additional.fields |
Combinado |
isoCountryCode_label |
additional.fields |
Combinado |
lastMdmCheckInUtcMs_label |
additional.fields |
Combinado |
lastNetworkTrafficUtcMs_label |
additional.fields |
Combinado |
lastUpdatedUtcMs_label |
additional.fields |
Combinado |
loc_isoCountryCode_label |
additional.fields |
Combinado |
mcc_label |
additional.fields |
Combinado |
mdmId_label |
additional.fields |
Combinado |
mnc_label |
additional.fields |
Combinado |
osVersion_label |
additional.fields |
Combinado |
packageName_label |
additional.fields |
Combinado |
parentId_label |
additional.fields |
Combinado |
parentId_label_1 |
additional.fields |
Combinado |
platform_label |
additional.fields |
Combinado |
profileId_label |
additional.fields |
Combinado |
profileName_label |
additional.fields |
Combinado |
profileStatus_label |
additional.fields |
Combinado |
recordType_label |
additional.fields |
Combinado |
resellerId_label |
additional.fields |
Combinado |
routeName_label |
additional.fields |
Combinado |
signatureId_id_label |
additional.fields |
Combinado |
signatureId_name_label |
additional.fields |
Combinado |
softwareId_label |
additional.fields |
Combinado |
softwareName_label |
additional.fields |
Combinado |
softwareVersion_label |
additional.fields |
Combinado |
ssid_label |
additional.fields |
Combinado |
system_label |
additional.fields |
Combinado |
threat_result_label |
additional.fields |
Combinado |
triggerTimeUtcMs_label |
additional.fields |
Combinado |
triggerType_label |
additional.fields |
Combinado |
types_list |
additional.fields |
Combinado |
userId_label |
additional.fields |
Combinado |
user_tld_label |
additional.fields |
Combinado |
vpnActive_label |
additional.fields |
Combinado |
wanderaAppVersion_label |
additional.fields |
Combinado |
wifiActive_label |
additional.fields |
Combinado |
event_data.receiptTime |
metadata.collected_timestamp |
Asignada directamente |
event_data.cve.description |
metadata.description |
Asignada directamente |
event_data_event_dataType_description |
metadata.description |
Asignada directamente |
event_data.timestamp |
metadata.event_timestamp |
Se analizó como yyyy-MM-ddTHH:mm:ss.SSSZ |
has_principal |
metadata.event_type |
Asignado: true → STATUS_UPDATE |
has_user |
metadata.event_type |
Asignado: true → USER_UNCATEGORIZED |
event_data.md1.product |
metadata.product_event_type |
Asignada directamente |
md1.product |
metadata.product_event_type |
Asignada directamente |
event_data.device.externalId |
metadata.product_log_id |
Asignada directamente |
event_data.externalId |
metadata.product_log_id |
Asignada directamente |
md1.product |
metadata.product_name |
Asignada directamente |
event_data.md1.schemaVersion |
metadata.product_version |
Asignada directamente |
schemaVersion |
metadata.product_version |
Asignada directamente |
dns_answers |
network.dns.answers |
Combinado |
dns_questions |
network.dns.questions |
Combinado |
event_data.domain |
principal.administrative_domain |
Asignada directamente |
event_data.application |
principal.application |
Asignada directamente |
event_data.hostName |
principal.asset.hostname |
Asignada directamente |
event_data.source.ip |
principal.asset.ip |
Combinado |
event_data.device.userDeviceName |
principal.hostname |
Asignada directamente |
event_data.hostName |
principal.hostname |
Asignada directamente |
event_data.source.ip |
principal.ip |
Combinado |
event_data.source.port |
principal.port |
Se cambió el nombre o se asignó |
event_data_event_dataType_id |
principal.process.pid |
Asignada directamente |
event_data.cve.consoleUrl |
principal.url |
Asignada directamente |
event_data.event_dataUrl |
principal.url |
Asignada directamente |
device.user.email |
principal.user.email_addresses |
Combinado |
event_data.user.userEmail |
principal.user.email_addresses |
Combinado |
event_data.account.name |
principal.user.user_display_name |
Asignada directamente |
event_data.user.userName |
principal.user.user_display_name |
Asignada directamente |
customer.customerId |
principal.user.userid |
Asignada directamente |
customerId |
principal.user.userid |
Asignada directamente |
device.user.email |
principal.user.userid |
Asignada directamente |
event_data.account.customerId |
principal.user.userid |
Asignada directamente |
event_data.customerId |
principal.user.userid |
Asignada directamente |
actionforBlocked |
security_result.action |
Combinado |
event_data_event_dataType_name |
security_result.description |
Asignada directamente |
attribution_label |
security_result.detection_fields |
Combinado |
baseScore_label |
security_result.detection_fields |
Combinado |
cve_id_label |
security_result.detection_fields |
Combinado |
exploitAvailable_label |
security_result.detection_fields |
Combinado |
permission_label |
security_result.detection_fields |
Combinado |
threats_label |
security_result.detection_fields |
Combinado |
event_data.cve.severity |
security_result.severity |
Asignada directamente |
event_data.blockReason |
security_result.summary |
Asignada directamente |
event_data.cve.cveDetailUrl |
security_result.url_back_to_product |
Asignada directamente |
event_data.device.deviceId |
target.asset.asset_id |
Asignada directamente |
event_data.destination.name |
target.asset.hostname |
Asignada directamente |
device.carrier.ipAddress |
target.asset.ip |
Combinado |
device.network.assignedIp |
target.asset.ip |
Combinado |
device.network.publicIp |
target.asset.ip |
Combinado |
event_data.destination.ip |
target.asset.ip |
Combinado |
event_data.destinationIp |
target.asset.ip |
Combinado |
ip |
target.asset.ip |
Combinado |
app_id_md5 |
target.file.md5 |
Asignada directamente |
app_id_sha1 |
target.file.sha1 |
Asignada directamente |
app_id_sha256 |
target.file.sha256 |
Asignada directamente |
event_data.destination.name |
target.hostname |
Asignada directamente |
device.carrier.ipAddress |
target.ip |
Combinado |
device.network.assignedIp |
target.ip |
Combinado |
device.network.publicIp |
target.ip |
Combinado |
event_data.destination.ip |
target.ip |
Combinado |
event_data.destinationIp |
target.ip |
Combinado |
ip |
target.ip |
Combinado |
device.location.countryName |
target.location.country_or_region |
Asignada directamente |
event_data.location |
target.location.name |
Asignada directamente |
device.hw.wifiMacAddress |
target.mac |
Combinado |
device.network.bssid |
target.mac |
Combinado |
event_data.accessPointBssid |
target.mac |
Combinado |
event_data_device_os_osVersion |
target.platform_version |
Asignada directamente |
event_data.destination.port |
target.port |
Se cambió el nombre o se asignó |
event_data.device.deviceName |
target.resource.name |
Asignada directamente |
event_data.user.email |
target.user.email_addresses |
Combinado |
event_data.user.email |
target.user.userid |
Asignada directamente |
event_data.user.name |
target.user.userid |
Asignada directamente |
| N/A | metadata.event_type |
Constante: STATUS_UPDATE |
| N/A | metadata.product_name |
Constante: JAMF_SECURITY_CLOUD |
| N/A | metadata.vendor_name |
Constante: JAMF_SECURITY_CLOUD |
| N/A | security_result.severity |
Constante: INFORMATIONAL |
| N/A | target.platform |
Constante: WINDOWS |
Registro de cambios
Consulta el registro de cambios de este analizador
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.