Recopilar registros de Salesforce

Disponible en:

En este documento se explica cómo ingerir registros de Salesforce en Google Security Operations mediante dos métodos: Amazon AppFlow con Amazon S3 o API de terceros. El analizador gestiona los registros en los formatos LEEF, CSV y JSON. Extrae campos, realiza un procesamiento específico del formato (gestiona pares de clave-valor LEEF, columnas CSV y estructuras JSON), los asigna al UDM y enriquece los datos con metadatos y campos derivados. El analizador también gestiona varios tipos de eventos de Salesforce, aplica una lógica específica para los inicios y cierres de sesión, así como para otras acciones, categoriza los eventos y define los tipos de eventos de UDM adecuados.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Acceso con privilegios a Salesforce (administrador del sistema o equivalente)

Opción 1: Método de API de terceros

  • Una licencia de Monitorización de eventos de Shield de Salesforce o el complemento Monitorización de eventos
  • Posibilidad de generar y gestionar certificados X.509 y pares de claves RSA

Opción 2: Amazon AppFlow con el método S3

  • Acceso privilegiado a AWS
  • Tu organización usa la edición Enterprise, Unlimited o Performance de Salesforce

Nota importante sobre las licencias: Sin la monitorización de eventos de Salesforce Shield, el acceso a la API EventLogFile se limita a solo 7 tipos de eventos básicos (inicio de sesión, cierre de sesión, uso total de la API, registro de infracciones de CORS, infracción de CSP, redirecciones de nombres de host y excepción inesperada de Apex) con una retención de 1 día. La mayoría de las organizaciones que no tienen Shield deberían usar el método de Amazon AppFlow (opción 2).

Opción 1: Configurar la integración directa de la API de Salesforce mediante una API de terceros (OAuth JWT Bearer)

Este método establece una conexión directa a la API de Google SecOps a Salesforce mediante el flujo de token de portador JWT de OAuth 2.0 para la autenticación de servidor a servidor.

Requisitos previos para este método:

  • Una licencia de Monitorización de eventos de Shield de Salesforce o el complemento Monitorización de eventos (necesario para acceder a EventLogFile de forma completa)
  • Acceso de administrador del sistema en Salesforce
  • Posibilidad de generar y gestionar certificados X.509 y pares de claves RSA

Generar un par de claves RSA y un certificado X.509

Necesitas una clave privada RSA y el certificado X.509 correspondiente para la autenticación de portador JWT.

  1. Genera una clave privada RSA:

    openssl genrsa -out salesforce_jwt_private.key 2048
    
  2. Genera una solicitud de firma de certificado (CSR):

    openssl req -new -key salesforce_jwt_private.key -out salesforce_jwt.csr
    
  3. Genera un certificado autofirmado (válido durante 1 año):

    openssl x509 -req -days 365 -in salesforce_jwt.csr -signkey salesforce_jwt_private.key -out salesforce_jwt.crt
    
  4. Guarda la clave privada de forma segura. Lo necesitará para configurar el feed de Google SecOps.

Crear una aplicación conectada de Salesforce con el flujo de token de portador JWT

  1. Inicia sesión en Salesforce como administrador del sistema.
  2. Ve a Configuración > Aplicaciones > Gestor de aplicaciones.
  3. Haga clic en Nueva aplicación conectada.
  4. Proporcione los siguientes detalles de configuración:
    • Nombre de la aplicación conectada: introduce un nombre (por ejemplo, Google Security Operations Integration).
    • Nombre de la API: se rellena automáticamente en función del nombre de la aplicación conectada.
    • Correo de contacto: introduce tu dirección de correo.
  5. En la sección API (Enable OAuth Settings) (API [Habilitar ajustes de OAuth]):
    • Selecciona Habilitar ajustes de OAuth.
    • URL de retrollamada: introduce https://login.salesforce.com/services/oauth2/callback (no se usa en el flujo de JWT, pero es obligatorio).
    • Selecciona Usar firmas digitales.
    • Haz clic en Elegir archivo y sube el certificado X.509 (salesforce_jwt.crt) que has generado antes.
    • Permisos de OAuth seleccionados: añade los siguientes permisos:
      • Acceder a tus datos y gestionarlos (API)
      • Realizar solicitudes en tu nombre en cualquier momento (refresh_token, offline_access)
    • Requerir extensión de clave de prueba para el intercambio de código (PKCE) para los flujos de autorización admitidos: desmarca esta opción.
  6. Haz clic en Guardar.
  7. Haz clic en Continuar en el mensaje de advertencia.
  8. En la página de detalles de la aplicación conectada, anota la clave de consumidor. Se usará como emisor de reclamaciones JWT en Google SecOps.
  9. Haz clic en Gestionar > Editar políticas.
  10. En la sección Políticas de OAuth:
    • Usuarios permitidos: selecciona Los usuarios aprobados por el administrador están autorizados previamente.
    • Relajación de IP: selecciona Relajar restricciones de IP.
  11. Haz clic en Guardar.

Crear y configurar un usuario de integración en Salesforce

  1. Ve a Configuración > Usuarios > Usuarios.
  2. Haz clic en New User (Usuario nuevo).
  3. Proporcione los siguientes detalles de configuración:
    • Nombre: introduce Google.
    • Apellidos: introduce Google SecOps Integration.
    • Correo electrónico: introduce una dirección de correo.
    • Nombre de usuario: introduce un nombre de usuario único.
    • Licencia de usuario: selecciona Salesforce.
    • Perfil: selecciona Administrador del sistema o crea un perfil personalizado con acceso a la API.
  4. Haz clic en Guardar.
  5. Anota el nombre de usuario tal como lo has introducido. Se usará como asunto de las reclamaciones de JWT en Google SecOps.

Asignar el usuario de integración a la aplicación conectada

  1. Ve a Configuración > Aplicaciones > Aplicaciones conectadas > Gestionar aplicaciones conectadas.
  2. Haz clic en la aplicación conectada Integración de Google Security Operations que has creado.
  3. Haz clic en Gestionar > Gestionar perfiles o Gestionar conjuntos de permisos.
  4. Selecciona el perfil o el conjunto de permisos asignado a tu usuario de integración (por ejemplo, Administrador del sistema).
  5. Haz clic en Guardar.

Conceder permisos de API y de monitorización de eventos al usuario de integración

  1. Ve a Configuración > Usuarios > Conjuntos de permisos.
  2. Haz clic en New (Nuevo).
  3. Proporcione los siguientes detalles de configuración:
    • Etiqueta: escribe Event Monitoring API Access.
    • Nombre de la API: se rellena automáticamente.
  4. Haz clic en Guardar.
  5. En la página de detalles del conjunto de permisos:
    • Haz clic en Permisos del sistema.
    • Haz clic en Editar.
    • Comprueba los siguientes permisos:
      • API habilitada
      • Ver archivos de registro de eventos
      • Ver todos los datos (opcional, pero recomendado para tener un acceso completo)
    • Haz clic en Guardar.
  6. Haz clic en Gestionar asignaciones > Añadir asignaciones.
  7. Selecciona el usuario de integración que has creado antes.
  8. Haz clic en Asignar > Hecho.

Configurar un feed en Google SecOps para ingerir registros de Salesforce a través de una API

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en + Añadir nuevo feed.
  3. En la página siguiente, haga clic en Configurar un solo feed.
  4. En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, Salesforce logs).
  5. Seleccione API de terceros como Tipo de fuente.
  6. Seleccione Salesforce como Tipo de registro.
  7. Haz clic en Siguiente.
  8. Seleccione Concesión de JWT de OAuth en el menú desplegable.
  9. Especifique valores para los siguientes parámetros de entrada:
    • Endpoint JWT de OAuth: introduce el endpoint del token de OAuth de Salesforce:
      • Producción: https://login.salesforce.com/services/oauth2/token
      • Entorno aislado: https://test.salesforce.com/services/oauth2/token
      • Dominio personalizado: https://yourdomain.my.salesforce.com/services/oauth2/token
    • Emisor de reclamaciones de JWT: introduce la clave de consumidor de la aplicación conectada.
    • Asunto de las reclamaciones de JWT: introduce el Nombre de usuario del usuario de integración.
    • Audiencia de las reclamaciones de JWT: introduce la URL base de inicio de sesión de Salesforce:
      • Producción: https://login.salesforce.com
      • Entorno aislado: https://test.salesforce.com
    • Clave privada RSA: pega todo el contenido de tu clave privada RSA (salesforce_jwt_private.key), incluidas las líneas -----BEGIN PRIVATE KEY----- y -----END PRIVATE KEY-----.
  10. Especifique parámetros adicionales:
  11. Haz clic en Siguiente.
  12. Revise la nueva configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.

Opción 2: Configurar la exportación de registros de Salesforce mediante Amazon AppFlow y S3

Este método usa Amazon AppFlow para extraer datos de Salesforce y almacenarlos en Amazon S3, que Google SecOps ingiere.

Configurar un segmento de AWS S3 y IAM para Google SecOps

  1. Crea un segmento de Amazon S3 siguiendo esta guía de usuario: Crear un segmento.
  2. Guarda el nombre y la región del segmento para consultarlos más adelante (por ejemplo, salesforce-secops-logs).
  3. Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
  4. Selecciona el usuario creado.
  5. Selecciona la pestaña Credenciales de seguridad.
  6. En la sección Claves de acceso, haz clic en Crear clave de acceso.
  7. Selecciona Servicio de terceros como Caso práctico.
  8. Haz clic en Siguiente.
  9. Opcional: añade una etiqueta de descripción.
  10. Haz clic en Crear clave de acceso.
  11. Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para futuras consultas.
  12. Haz clic en Listo.
  13. Selecciona la pestaña Permisos.
  14. En la sección Políticas de permisos, haz clic en Añadir permisos.
  15. Selecciona Añadir permisos.
  16. Seleccione Adjuntar políticas directamente.
  17. Busca la política AmazonS3FullAccess.
  18. Selecciona la política.
  19. Haz clic en Siguiente.
  20. Haz clic en Añadir permisos.

Configurar Amazon AppFlow

  1. Abre la consola de Amazon AppFlow.
  2. Haz clic en Crear flujo.
  3. Proporcione los siguientes detalles de configuración:
    • Nombre del flujo: introduce un nombre (por ejemplo, Salesforce-to-S3-SecOps).
    • Descripción del flujo: descripción opcional.
  4. Haz clic en Siguiente.
  5. Para ver los detalles de la fuente, haz lo siguiente:
    • Nombre de la fuente: selecciona Salesforce.
    • Elige la conexión de Salesforce: haz clic en Crear conexión.
    • Aparecerá una ventana de inicio de sesión de Salesforce. Inicia sesión con tus credenciales de Salesforce.
    • Concede acceso cuando se te solicite.
    • Objeto de Salesforce: seleccione el objeto que quiera transferir (por ejemplo, EventLogFile si tiene Monitorización de eventos u otros objetos de auditoría).
  6. Haz clic en Siguiente.
  7. Para ver los detalles del destino, haga lo siguiente:
    • Nombre de destino: selecciona Amazon S3.
    • Detalles del segmento: selecciona el segmento de S3 que has creado antes.
    • Prefijo del segmento de S3: prefijo opcional (por ejemplo, salesforce-logs/).
  8. Haz clic en Siguiente.
  9. En Activador de flujo:
    • Selecciona Ejecutar según programación.
    • A partir de: define la hora de inicio que prefieras.
    • Se repite: selecciona Cada hora o Diariamente según tus necesidades.
  10. Haz clic en Siguiente.
  11. Para Asignar campos de datos, sigue estos pasos:
    • Selecciona Asignar todos los campos directamente o especifica los campos que quieras asignar.
    • Si asigna los campos manualmente, seleccione los que quiera transferir.
  12. Haz clic en Siguiente.
  13. Para Añadir filtros (opcional):
    • Añade los filtros que quieras para limitar los datos transferidos.
  14. Haz clic en Siguiente.
  15. Revisa la configuración y haz clic en Crear flujo.
  16. Haz clic en Activar flujo para iniciar las transferencias programadas.

Configurar un feed en Google SecOps para ingerir registros de Salesforce

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Añadir feed.
  3. En la página siguiente, haga clic en Configurar un solo feed.
  4. En el campo Nombre del feed, escriba un nombre para el feed (por ejemplo, Registros de Salesforce).
  5. Selecciona Amazon S3 V2 como Tipo de fuente.
  6. Seleccione Salesforce como Tipo de registro.
  7. Haz clic en Siguiente.
  8. Especifique los valores de los siguientes parámetros de entrada:

    • URI de S3: el URI del segmento. s3://BUCKET_NAME Sustituye lo siguiente:
      • BUCKET_NAME: el nombre del segmento.
    • Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.

    • Antigüedad máxima del archivo: incluye los archivos modificados en los últimos días. El valor predeterminado es de 180 días.

    • ID de clave de acceso: la clave de acceso del usuario con acceso al segmento de S3.

    • Clave de acceso secreta: clave secreta del usuario con acceso al segmento de S3.

  9. Haz clic en Siguiente.

  10. Revise la nueva configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.

Formatos de registro de Salesforce admitidos

El analizador de Salesforce admite registros en formatos KV (LEEF) y CSV.

Registros de ejemplo de Salesforce admitidos

  • KV (LEEF)

    LEEF:1.0|Salesforce|SecurityMonitoring|343.0|Login: Success|cat=SalesforceLoginHistory    devTime=2020-04-23T14:40:38.000+0000    devTimeFormat=yyyy-MM-dd'T'HH:mm:ss.SSSZ    ApiVersion=N/A  Platform=Windows 7  LoginUrl=sanitized.salesforce.com   src=192.0.2.1   usrName=user.sanitized@fakecorp.com attributes.url=https://sanitized.salesforce.com/services/data/v38.0/sobjects/LoginHistory/FAKEID12345   Id=FAKEID12345  LoginType=Remote Access 2.0 Application=Salesforce for Outlook  Browser=N/A
    
  • CSV

    "EVENT_TYPE","TIMESTAMP","REQUEST_ID","ORGANIZATION_ID","USER_ID","RUN_TIME","CPU_TIME","URI","SESSION_KEY","LOGIN_KEY","USER_TYPE","REQUEST_STATUS","DB_TOTAL_TIME","METHOD","MEDIA_TYPE","STATUS_CODE","USER_AGENT","ROWS_PROCESSED","NUMBER_FIELDS","DB_BLOCKS","DB_CPU_TIME","REQUEST_SIZE","RESPONSE_SIZE","ENTITY_NAME","EXCEPTION_MESSAGE","TIMESTAMP_DERIVED","USER_ID_DERIVED","CLIENT_IP","URI_ID_DERIVED"
    "RestApi","20240421120015.367","SLB:sanitized_request_id","00D040000004g6r","005Sv000000CxcD",329,69,"/services/data/v58.0/query","TJestP3qzXKiV/Ud","D/M3fSrc6oTXlmLq","Standard","S",37030739,"GET","application/json;charset=UTF-8",200,9999,840,5,19481,47,10,250361,"EventLogFile",NaN,"2024-04-21T12:00:15.366Z","005Sv000000CxcDIAS","192.0.2.3",NaN
    

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
Account.Name target.resource.name El valor de Account.Name del registro sin procesar.
AccountId target.resource.id El valor de AccountId del registro sin procesar.
Action security_result.description El valor de Action del registro sin procesar.
AdditionalInfo - No está asignado al objeto IDM.
ApiType target.application El valor de ApiType del registro sin procesar.
ApiVersion - No está asignado al objeto IDM.
Application principal.application El valor de Application del registro sin procesar, "Browser" en el caso de LoginAsEvent, "Integration JWT Token" en el caso de LoginEvent, "SfdcSiqActivityPlatform" en el caso de LoginHistory con el tipo de objeto LoginHistory, "N/A" en el caso de ApiEvent o "Browser" en el caso de LoginAsEventStream.
attributes.url target.url El valor de attributes.url del registro sin procesar o URLs específicas de varios tipos de eventos del registro sin procesar.
attributes.type metadata.product_event_type El valor de attributes.type del registro sin procesar.
AuthSessionId network.session_id El valor de AuthSessionId del registro sin procesar.
Browser principal.resource.name El valor de Browser del registro sin procesar o "Unknown" si Browser no está disponible en el registro sin procesar y Application es "Insights", o "Java (Salesforce.com)" en LoginHistory con ApiType como "SOAP Partner", o "Unknown" en LoginHistory con Application como "SfdcSiqActivityPlatform", o de data.properties.Browser.str en LoginAsEventStream.
Case.Subject target.resource.name El valor de Case.Subject del registro sin procesar.
CaseId target.resource.id El valor de CaseId del registro sin procesar.
cat metadata.product_event_type El valor de cat del registro sin procesar.
City principal.location.city El valor de City del registro sin procesar o de LoginGeo.City en el caso de LoginHistory.
Client principal.labels El valor de Client del registro sin procesar, con formato de etiqueta.
CLIENT_IP principal.ip, principal.asset.ip El valor de CLIENT_IP del registro sin procesar.
ClientVersion - No está asignado al objeto IDM.
CipherSuite network.tls.cipher El valor de CipherSuite del registro sin procesar.
ColumnHeaders principal.labels El valor de ColumnHeaders del registro sin procesar, con formato de etiqueta.
ConnectedAppId principal.labels El valor de ConnectedAppId del registro sin procesar, con formato de etiqueta.
Contact.Name target.resource.name El valor de Contact.Name del registro sin procesar.
ContactId target.resource.id El valor de ContactId del registro sin procesar.
Country principal.location.country_or_region El valor de Country del registro sin procesar o LoginGeo.Country para LoginHistory.
CreatedByContext principal.user.userid El valor de CreatedByContext del registro sin procesar.
CreatedById principal.resource.attribute.labels El valor de CreatedById del registro sin procesar, con formato de etiqueta.
CreatedDate metadata.collected_timestamp El valor de CreatedDate del registro sin procesar o la marca de tiempo actual si no está disponible.
CPU_TIME target.resource.attribute.labels El valor de CPU_TIME del registro sin procesar, con formato de etiqueta.
data - Contiene varios campos que se extraen y se asignan individualmente.
DATASET_IDS target.resource.name El valor de DATASET_IDS del registro sin procesar.
DelegatedOrganizationId target.administrative_domain El valor de DelegatedOrganizationId del registro sin procesar.
DelegatedUsername observer.user.userid El valor de DelegatedUsername del registro sin procesar.
Description metadata.description El valor de Description del registro sin procesar.
DevicePlatform principal.resource.type El valor de DevicePlatform del registro sin procesar, analizado para extraer el tipo de recurso.
Display metadata.description El valor de Display del registro sin procesar.
DOWNLOAD_FORMAT target.resource.attribute.labels El valor de DOWNLOAD_FORMAT del registro sin procesar, con formato de etiqueta.
Duration target.resource.attribute.labels El valor de Duration del registro sin procesar, con formato de etiqueta.
ENTITY_NAME target.resource.attribute.labels El valor de ENTITY_NAME del registro sin procesar, con formato de etiqueta.
ErrorCode security_result.action El valor de ErrorCode del registro sin procesar, transformado en ALLOW o BLOCK.
EventDate timestamp El valor de EventDate del registro sin procesar, data.properties.TIMESTAMP_DERIVED.str si está disponible, data.properties.TIMESTAMP_DERIVED_FIRST.str si está disponible, @timestamp si está disponible, created_date si está disponible, timestamp si está disponible o LoginTime para LoginHistory.
EventIdentifier metadata.product_log_id El valor de EventIdentifier del registro sin procesar.
EventType metadata.product_event_type El valor de EventType del registro sin procesar.
Id principal.user.userid El valor de Id del registro sin procesar o metadata.product_log_id para SetupAuditTrail y otros eventos.
IdentityUsed principal.user.email_addresses El valor de IdentityUsed del registro sin procesar.
Lead.Name target.resource.name El valor de Lead.Name del registro sin procesar.
LeadId target.resource.id El valor de LeadId del registro sin procesar.
LoginAsCategory - No está asignado al objeto IDM.
LoginGeo.Country principal.location.country_or_region El valor de LoginGeo.Country del registro sin procesar.
LoginHistoryId - No está asignado al objeto IDM.
LoginKey principal.user.userid, network.session_id El valor de LoginKey del registro sin procesar o CreatedByContext para SetupAuditTrail.
LoginTime timestamp El valor de LoginTime del registro sin procesar.
LoginType security_result.description El valor de LoginType del registro sin procesar, "Other Apex API" (Otra API de Apex) en el caso de LoginHistory con ApiType como "SOAP Partner" (Partner de SOAP) o "Remote Access 2.0" (Acceso remoto 2.0) en el caso de LoginHistory con Application como "SfdcSiqActivityPlatform".
LoginUrl target.url, principal.url El valor de LoginUrl del registro sin procesar.
LogFile principal.resource.attribute.labels El valor de LogFile del registro sin procesar, con formato de etiqueta.
LogFileContentType principal.resource.attribute.labels El valor de LogFileContentType del registro sin procesar, con formato de etiqueta.
LogFileLength principal.resource.attribute.labels El valor de LogFileLength del registro sin procesar, con formato de etiqueta.
Message - No está asignado al objeto IDM.
METHOD network.http.method El valor de METHOD del registro sin procesar.
Name target.application El valor de Name del registro sin procesar.
NewValue - Se usa junto con OldValue para generar security_result.summary.
NUMBER_FIELDS target.resource.attribute.labels El valor de NUMBER_FIELDS del registro sin procesar, con formato de etiqueta.
OldValue - Se usa junto con NewValue para generar security_result.summary.
Operation security_result.description, target.resource.attribute.labels El valor de Operation del registro sin procesar o Display para SetupAuditTrail.
OperationStatus security_result.action El valor de OperationStatus del registro sin procesar, transformado en ALLOW o BLOCK.
ORGANIZATION_ID target.administrative_domain El valor de ORGANIZATION_ID del registro sin procesar.
OsName principal.platform El valor de OsName del registro sin procesar.
OsVersion principal.platform_version El valor de OsVersion del registro sin procesar.
Platform principal.platform El valor de Platform del registro sin procesar, de data.properties.OsName.str en el caso de LightningUriEventStream o de data.properties.OsName.str en el caso de LoginEventStream.
QueriedEntities target.resource.name, principal.labels El valor de QueriedEntities del registro sin procesar o component_name para UriEvent y ApiEvent.
Query target.process.command_line, principal.labels El valor de Query del registro sin procesar.
RecordId target.resource.id El valor de RecordId del registro sin procesar.
Records principal.labels El valor de Records del registro sin procesar, con formato de etiqueta.
REQUEST_ID metadata.product_log_id, target.resource.product_object_id El valor de REQUEST_ID del registro sin procesar.
REQUEST_SIZE network.sent_bytes El valor de REQUEST_SIZE del registro sin procesar.
REQUEST_STATUS security_result.summary El valor de REQUEST_STATUS del registro sin procesar.
RESPONSE_SIZE network.received_bytes El valor de RESPONSE_SIZE del registro sin procesar.
RowsProcessed target.resource.attribute.labels El valor de RowsProcessed del registro sin procesar, con formato de etiqueta.
RUN_TIME target.resource.attribute.labels El valor de RUN_TIME del registro sin procesar, con formato de etiqueta.
SamlEntityUrl - No está asignado al objeto IDM.
SdkAppType - No está asignado al objeto IDM.
SdkAppVersion - No está asignado al objeto IDM.
SdkVersion - No está asignado al objeto IDM.
Section security_result.summary El valor de Section del registro sin procesar.
SessionKey network.session_id El valor de SessionKey del registro sin procesar.
SessionLevel target.resource.attribute.labels El valor de SessionLevel del registro sin procesar, con formato de etiqueta.
SourceIp principal.ip, principal.asset.ip El valor de SourceIp del registro sin procesar.
src principal.ip, principal.asset.ip El valor de src del registro sin procesar.
SsoType target.resource.attribute.labels El valor de SsoType del registro sin procesar, con formato de etiqueta.
STATUS_CODE network.http.response_code El valor de STATUS_CODE del registro sin procesar.
Status security_result.action, security_result.action_details El valor de Status del registro sin procesar, transformado en ALLOW o BLOCK, o usado como detalles de la acción de LoginEventStream.
Subject target.resource.name El valor de Subject del registro sin procesar.
TargetUrl - No está asignado al objeto IDM.
TIMESTAMP metadata.collected_timestamp El valor de TIMESTAMP del registro sin procesar.
TIMESTAMP_DERIVED timestamp El valor de TIMESTAMP_DERIVED del registro sin procesar.
TlsProtocol network.tls.version_protocol El valor de TlsProtocol del registro sin procesar.
URI target.url El valor de URI del registro sin procesar.
USER_AGENT network.http.user_agent El valor de USER_AGENT del registro sin procesar.
USER_ID principal.user.userid El valor de USER_ID del registro sin procesar.
USER_ID_DERIVED principal.user.product_object_id, target.resource.attribute.labels El valor de USER_ID_DERIVED del registro sin procesar.
UserId principal.user.userid El valor de UserId del registro sin procesar.
USER_TYPE target.resource.attribute.labels El valor de USER_TYPE del registro sin procesar, con formato de etiqueta.
Username principal.user.userid, principal.user.email_addresses, target.user.email_addresses El valor de Username del registro sin procesar, src_email para varios eventos, IdentityUsed para IdentityProviderEventStore, data.properties.Email.str para Search y SearchAlert, o data.properties.Username.str para LoginAsEventStream y LoginEventStream.
UserType target.resource.attribute.labels El valor de UserType del registro sin procesar, con formato de etiqueta.
usrName principal.user.userid, principal.user.email_addresses, target.user.email_addresses El valor de usrName del registro sin procesar.
VerificationMethod target.resource.attribute.labels El valor de VerificationMethod del registro sin procesar, con formato de etiqueta.
Lógica del analizador metadata.event_type Se deriva de los campos event_id y operation, o se asigna el valor "USER_LOGIN" a LoginEventStream, "USER_LOGOUT" a Logout y LogoutEvent, "USER_RESOURCE_UPDATE_CONTENT" a varios eventos, "USER_RESOURCE_UPDATE_PERMISSIONS" a PlatformEncryption, "RESOURCE_READ" a QueuedExecution, ApexExecution, LightningInteraction, LightningPerformance, LightningPageView, URI, RestApi, API, AuraRequest, ApexCallout, OneCommerceUsage, Sites, MetadataApiOperation, OneCommerceUsage, VisualforceRequest, Dashboard, Search y ListViewEvent, "RESOURCE_CREATION" a UriEvent y TimeBasedWorkflow con Operation como "Create" o "INSERT", "RESOURCE_WRITTEN" a UriEvent y LightningUriEvent con Operation como "Update", "RESOURCE_DELETION" a UriEvent con Operation como "Delete" o "ROLLBACK", "USER_UNCATEGORIZED" a SetupAuditTrail y AuditTrail, "USER_CHANGE_PASSWORD" a SetupAuditTrail con operation como "namedCredentialEncryptedFieldChange", "GENERIC_EVENT" a ApiEventStream y LightningUriEventStream, o en función de la presencia de la red y la entidad de seguridad.
Lógica del analizador metadata.ingestion_labels Etiquetas que indican la fuente del evento, ya sea "Archivo de registro de eventos", "Monitorización de eventos en tiempo real" o "SetupAuditTrail".
Lógica del analizador metadata.log_type Siempre se le asigna el valor "SALESFORCE".
Lógica del analizador metadata.product_name Siempre se le asigna el valor "SALESFORCE".
Lógica del analizador metadata.vendor_name Siempre se le asigna el valor "SALESFORCE".
Lógica del analizador metadata.url_back_to_product Se compone de varios campos, como LoginUrl, attributes.url, data.properties.PageUrl.str y data.properties.LoginUrl.str.
Lógica del analizador network.application_protocol Se define como "HTTPS" si el campo uri empieza por "http".
Lógica del analizador network.http.referral_url Se extrae del campo user_agent si contiene "Referer=".
Lógica del analizador network.http.response_code Derivado de request_status para varios eventos.
Lógica del analizador network.http.user_agent El valor de user_agent del registro sin procesar, de data.properties.UserAgent.str en el caso de ApiEventStream y LoginEventStream, de los eventos Sites o de "User-Agent" de los eventos Sites.
Lógica del analizador network.session_id El valor de session_key o SESSION_KEY del registro sin procesar, o bien se construye a partir de otros campos, como LoginKey o AuthSessionId.
Lógica del analizador network.tls.version El valor de tls_protocol del registro sin procesar o de data.properties.TlsProtocol.str en el caso de LoginEventStream.
Lógica del analizador principal.application El valor de application del registro sin procesar o "Salesforce para Outlook" en el caso de los eventos Login: Success, "Insights" en el caso de los eventos Login: Success sin Application o extraído de device_platform en el caso de los eventos de Lightning.
Lógica del analizador principal.asset.hostname El valor de client_ip si es un nombre de host.
Lógica del analizador principal.asset.ip El valor de client_ip, src_ip, SourceIp o CLIENT_IP si es una dirección IP.
Lógica del analizador principal.hostname El valor de client_ip si es un nombre de host.
Lógica del analizador principal.ip El valor de client_ip, src_ip, SourceIp o CLIENT_IP si es una dirección IP.
Lógica del analizador principal.labels Etiquetas creadas a partir de varios campos, como FederationIdentifier, ApiType, OrgId y channel.
Lógica del analizador principal.location.city El valor de geoip_src.city_name, City o LoginGeo.City del registro sin procesar.
Lógica del analizador principal.location.country_or_region El valor de geoip_src.country_name, Country, LoginGeo.Country o client_geo del registro sin procesar.
Lógica del analizador principal.location.region_latitude El valor de data.properties.LoginLatitude.number del registro sin procesar.
Lógica del analizador principal.location.region_longitude El valor de data.properties.LoginLongitude.number del registro sin procesar.
Lógica del analizador principal.location.state El valor de geoip_src.region_name del registro sin procesar.
Lógica del analizador principal.platform El valor de Platform, OsName o os_name del registro sin procesar, o "WINDOWS" para LoginEventStream con Platform que contenga "Windows".
Lógica del analizador principal.platform_version El valor de OsVersion o os_version del registro sin procesar o extraído de Platform para LoginEventStream con Platform que contenga "Windows".
Lógica del analizador principal.resource.attribute.labels Etiquetas creadas a partir de varios campos, como CreatedById, ApiVersion, LogFile, LogFileContentType y LogFileLength.
Lógica del analizador principal.resource.name El valor de Browser o browser_name del registro sin procesar, o "Java (Salesforce.com)" en LoginHistory con ApiType como "Partner SOAP".
Lógica del analizador principal.resource.type Extraído de device_platform para eventos de Lightning o "Browser" para LoginAsEvent y LoginAsEventStream.
Lógica del analizador principal.url El valor de LoginUrl del registro sin procesar.
Lógica del analizador principal.user.email_addresses El valor de usrName, Username, src_email, IdentityUsed, data.properties.Username.str o data.properties.Email.str del registro sin procesar.
Lógica del analizador principal.user.product_object_id El valor de attrs.USER_ID_DERIVED o data.properties.USER_ID_DERIVED.str del registro sin procesar.
Lógica del analizador principal.user.userid El valor de usrName, Username, user_id, UserId, USER_ID, Id, LoginKey, CreatedByContext, data.properties.Username.str, data.properties.USER_ID.str o data.properties.LoginKey.str del registro sin procesar.
Lógica del analizador security_result.action Derivado de Status, OperationStatus, ErrorCode, action o operation_status del registro sin procesar, transformado en ALLOW o BLOCK.
Lógica del analizador security_result.action_details El valor de Status del registro sin procesar de LoginEventStream.
Lógica del analizador security_result.description El valor de LoginType, logintype, Operation, Action o Display del registro sin procesar.
Lógica del analizador security_result.rule_name El valor de Policy o rule_name del registro sin procesar.
Lógica del analizador security_result.summary Se construye a partir de NewValue y OldValue, REQUEST_STATUS, Section o forecastcategory del registro sin procesar.
Lógica del analizador target.administrative_domain El valor de ORGANIZATION_ID, DelegatedOrganizationId, organization_id o data.properties.OrgName.str del registro sin procesar.
Lógica del analizador target.application El valor de Application, app_name, ApiType, Name o data.properties.Application.str del registro sin procesar.
Lógica del analizador target.asset.hostname El valor de target_hostname extraído del campo uri.
Lógica del analizador target.asset.ip El valor de data.properties.CLIENT_IP.str del registro sin procesar.
Lógica del analizador target.asset_id Se construye a partir de device_id o REQUEST_ID.
Lógica del analizador target.file.mime_type El valor de file_type del registro sin procesar.
Lógica del analizador target.file.size El valor de size_bytes del registro sin procesar.
Lógica del analizador target.hostname El valor de target_hostname extraído del campo uri.
Lógica del analizador target.process.command_line El valor de query_exec, Query o data.properties.Query.str del registro sin procesar.
Lógica del analizador target.process.pid El valor de job_id del registro sin procesar.
Lógica del analizador target.resource.attribute.labels Etiquetas creadas a partir de varios campos, como CPU_TIME, RUN_TIME, USER_TYPE, DB_TOTAL_TIME, MEDIA_TYPE, ROWS_PROCESSED, NUMBER_FIELDS, DB_BLOCKS, DB_CPU_TIME, ENTITY_NAME, EXCEPTION_MESSAGE, USER_ID_DERIVED, DOWNLOAD_FORMAT, USER_TYPE, CPU_TIME, RUN_TIME, WAVE_SESSION_ID, SessionLevel, verification_method, cpu_time, run_time, db_total_time, db_cpu_time, exec_time, callout_time, number_soql_queries, duration, user_type, entry_point, operation, session_level, rows_processed, sso_type, dashboard_type, Operation y SessionLevel.
Lógica del analizador target.resource.id El valor de REQUEST_ID, RecordId, caseid, leadid, contactid, opportunityid o accountid del registro sin procesar.
Lógica del analizador target.resource.name El valor de QueriedEntities, resource_name, component_name, DATASET_IDS, field, StageName o Subject del registro sin procesar.
Lógica del analizador target.resource.product_object_id El valor de REQUEST_ID del registro sin procesar.
Lógica del analizador target.resource.resource_type Se asigna el valor "ACCESS_POLICY" a ApexCallout y PlatformEncryption, "DATABASE" a ApexTrigger, "FILE" a ContentTransfer o "TABLE" a ApiEvent.
Lógica del analizador target.resource.type Asigna el valor "BATCH" a QueuedExecution y ApexExecution, "FILE" a ContentTransfer, "DATABASE_TRIGGER" a ApexTrigger o "Case", "Lead", "Contact", "Opportunity" o "Account" en función de la presencia de los campos de ID correspondientes.
Lógica del analizador target.url El valor de LoginUrl, URI, attributes.url, login_url o uri del registro sin procesar.
Lógica del analizador target.user.email_addresses El valor de Username, attrs.usrName o email_address del registro sin procesar.
Lógica del analizador target.user.user_display_name El valor de target_user_display_name, user_name o username del registro sin procesar.
Lógica del analizador target.user.userid El valor de target_user_name, data.properties.UserId.str o data.properties.CreatedById.str del registro sin procesar.
Lógica del analizador extensions.auth.auth_details Se asigna el valor "ACTIVE" si Status no es "Success". De lo contrario, se asigna el valor "UNKNOWN_AUTHENTICATION_STATUS".
Lógica del analizador extensions.auth.mechanism Se asigna el valor "REMOTE" a los eventos Login: Success y Login con logintype que contengan "Remote", "USERNAME_PASSWORD" a LoginEventStream, "MECHANISM_OTHER" a los eventos con login_url y "AUTHTYPE_UNSPECIFIED" a los eventos Login: Success y Logout.
Lógica del analizador extensions.auth.type Asigna el valor "SSO" a Login, Logout, LogoutEvent, LoginAs, IdentityProviderEventStore, LoginHistory y LoginAsEvent con LoginType como "SAML Sfdc Initiated SSO" o "AUTHTYPE_UNSPECIFIED" a Login: Success, Logout y LoginAsEvent con LoginType como "Application".

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.