Recopila registros de Jamf Security Cloud

Se admite en los siguientes sistemas operativos:

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

  1. Ve a la consola deGoogle Cloud .
  2. Selecciona tu proyecto o crea uno nuevo.
  3. En el menú de navegación, ve a Cloud Storage > Buckets.
  4. Haz clic en Crear bucket.
  5. 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
  6. Haz clic en Crear.

Crea una cuenta de servicio para la función de Cloud Run

  1. En Google Cloud Console, ve a IAM y administración > Cuentas de servicio.
  2. Haz clic en Crear cuenta de servicio.
  3. 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.
  4. Haz clic en Crear y continuar.
  5. Haz clic en Listo.

Otorga a la cuenta de servicio acceso al bucket

  1. Ve a Cloud Storage > Buckets.
  2. Haz clic en el nombre de tu bucket.
  3. Ve a la pestaña Permisos.
  4. Haz clic en Otorgar acceso.
  5. 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.
  6. Haz clic en Guardar.

Crea la función de Cloud Run para recibir eventos

  1. 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.
  2. En Google Cloud Console, ve a Cloud Run.
  3. Haz clic en Crear servicio.
  4. Selecciona Función (usa un editor intercalado para crear una función).
  5. En la sección Configurar, proporciona los siguientes detalles de configuración:

    Parámetro de configuración Valor
    Nombre del servicio jamf-sc-receiver
    Regió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.
  6. En la sección Autenticación, selecciona Permitir invocaciones no autenticadas.

  7. Expande Contenedores, redes y seguridad.

  8. Ve a la pestaña Seguridad:

    • Cuenta de servicio: Selecciona jamf-sc-receiver-sa
  9. Ve a la pestaña Contenedores:

    1. Haz clic en Variables y secretos.
    2. Haz clic en + Agregar variable para cada variable de entorno:
    Nombre de la variable Valor de ejemplo Descripción
    GCS_BUCKET jamf-security-cloud-logs Nombre del bucket de Cloud Storage
    GCS_PREFIX jamf-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.
  10. Haz clic en Crear.

  11. Espera a que se cree el servicio. Después de crear el servicio, se abrirá automáticamente el editor de código intercalado.

  12. Ingresa main en el campo Punto de entrada.

  13. 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.*
      
  14. Haz clic en Guardar y volver a implementar.

  15. 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

  1. Accede al portal de Jamf Security Cloud.
  2. Ve a Integraciones > Flujos de datos.
  3. Haz clic en Configuración nueva.
  4. Selecciona el tipo de flujo de datos (por ejemplo, Eventos de amenazas).
  5. Selecciona HTTP genérico como el tipo de destino del flujo de datos.
  6. Haz clic en Continuar.
  7. 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-Token con el token generado como valor.
  8. Haz clic en Probar configuración y verifica que la prueba se realice correctamente.
  9. Haz clic en el botón de activación Habilitar configuración para activar el flujo de datos.
  10. Haz clic en Guardar.
  11. Repite estos pasos para cada tipo de flujo de datos adicional que desees exportar.

Recupera la cuenta de servicio de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Feeds.
  3. Haz clic en Add New Feed.
  4. Haz clic en Configura un feed único.
  5. Selecciona Google Cloud Storage V2 como el Tipo de fuente.
  6. Selecciona JAMF Security Cloud como el Tipo de registro.
  7. 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.com
    
  8. Copia 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

  1. Ve a Cloud Storage > Buckets.
  2. Haz clic en el nombre de tu bucket.
  3. Ve a la pestaña Permisos.
  4. Haz clic en Otorgar acceso.
  5. 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.
  6. Haz clic en Guardar.

Configura un feed en Google SecOps para transferir datos desde Google Cloud Storage

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Add New Feed.
  3. Haz clic en Configura un feed único.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Jamf Security Cloud logs).
  5. Selecciona Google Cloud Storage V2 como el Tipo de fuente.
  6. Selecciona JAMF Security Cloud como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. 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-logs por el nombre real de tu bucket.
    • Siempre incluye la barra diagonal final (/) al final del URI.
  9. Haz clic en Siguiente.

  10. 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

  1. Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket
  2. Guarda el Nombre y la Región del bucket para consultarlos en el futuro (por ejemplo, jamf-security-cloud-logs).
  3. Crea un rol de IAM que Jamf Security Cloud asume para subir datos al bucket. El rol requiere el permiso s3:PutObject en el bucket y la cuenta de AWS de Jamf que aparece como una entidad de confianza.

  4. Guarda el rol de IAM ARN para consultarlo en el futuro.

Configura un flujo de datos de AWS S3 propiedad del cliente en Jamf Security Cloud

  1. Accede al portal de Jamf Security Cloud.
  2. Ve a Integraciones > Flujos de datos.
  3. Haz clic en Configuración nueva.
  4. Selecciona el tipo de flujo de datos (por ejemplo, Eventos de amenazas).
  5. Selecciona AWS S3 propiedad del cliente como el tipo de destino del flujo de datos.
  6. Haz clic en Continuar.
  7. 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.
  8. Haz clic en Crear configuración.
  9. Opcional: En Configuración avanzada, selecciona JSON como formato de mensaje.

  10. Haz clic en el botón de activación Habilitar configuración para activar el flujo de datos.

  11. Haz clic en Guardar.

  12. 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

  1. Crea un usuario siguiendo esta guía del usuario: Cómo crear un usuario de IAM.
  2. Selecciona el usuario creado.
  3. Selecciona la pestaña Credenciales de seguridad.
  4. Haz clic en Crear clave de acceso en la sección Claves de acceso.
  5. Selecciona Servicio de terceros como el Caso de uso.
  6. Haz clic en Siguiente.
  7. Opcional: Agrega una etiqueta de descripción.
  8. Haz clic en Crear clave de acceso.
  9. Haz clic en Descargar archivo .csv para guardar la clave de acceso y la clave de acceso secreta para consultarlas en el futuro.
  10. Haz clic en Listo.
  11. Selecciona la pestaña Permisos.
  12. Haz clic en Agregar permisos en la sección Políticas de permisos.
  13. Selecciona Agregar permisos.
  14. Selecciona Adjuntar políticas directamente.
  15. Busca la política AmazonS3FullAccess.
  16. Selecciona la política.
  17. Haz clic en Siguiente.
  18. Haz clic en Agregar permisos.

Configura un feed en Google SecOps para transferir datos desde Amazon S3

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Add New Feed.
  3. Haz clic en Configura un feed único.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Jamf Security Cloud logs).
  5. Selecciona Amazon S3 V2 como el Tipo de fuente.
  6. Selecciona JAMF Security Cloud como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. 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-logs por el nombre real de tu bucket de S3.
  9. Haz clic en Siguiente.

  10. 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.