Recopilar registros de Salesforce
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.
Genera una clave privada RSA:
openssl genrsa -out salesforce_jwt_private.key 2048Genera una solicitud de firma de certificado (CSR):
openssl req -new -key salesforce_jwt_private.key -out salesforce_jwt.csrGenera 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.crtGuarda 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
- Inicia sesión en Salesforce como administrador del sistema.
- Ve a Configuración > Aplicaciones > Gestor de aplicaciones.
- Haga clic en Nueva aplicación conectada.
- 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.
- Nombre de la aplicación conectada: introduce un nombre (por ejemplo,
- 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.
- Haz clic en Guardar.
- Haz clic en Continuar en el mensaje de advertencia.
- 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.
- Haz clic en Gestionar > Editar políticas.
- 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.
- Haz clic en Guardar.
Crear y configurar un usuario de integración en Salesforce
- Ve a Configuración > Usuarios > Usuarios.
- Haz clic en New User (Usuario nuevo).
- 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.
- Nombre: introduce
- Haz clic en Guardar.
- 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
- Ve a Configuración > Aplicaciones > Aplicaciones conectadas > Gestionar aplicaciones conectadas.
- Haz clic en la aplicación conectada Integración de Google Security Operations que has creado.
- Haz clic en Gestionar > Gestionar perfiles o Gestionar conjuntos de permisos.
- Selecciona el perfil o el conjunto de permisos asignado a tu usuario de integración (por ejemplo, Administrador del sistema).
- Haz clic en Guardar.
Conceder permisos de API y de monitorización de eventos al usuario de integración
- Ve a Configuración > Usuarios > Conjuntos de permisos.
- Haz clic en New (Nuevo).
- Proporcione los siguientes detalles de configuración:
- Etiqueta: escribe
Event Monitoring API Access. - Nombre de la API: se rellena automáticamente.
- Etiqueta: escribe
- Haz clic en Guardar.
- 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.
- Haz clic en Gestionar asignaciones > Añadir asignaciones.
- Selecciona el usuario de integración que has creado antes.
- Haz clic en Asignar > Hecho.
Configurar un feed en Google SecOps para ingerir registros de Salesforce a través de una API
- Ve a Configuración de SIEM > Feeds.
- Haz clic en + Añadir nuevo feed.
- En la página siguiente, haga clic en Configurar un solo feed.
- En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo,
Salesforce logs). - Seleccione API de terceros como Tipo de fuente.
- Seleccione Salesforce como Tipo de registro.
- Haz clic en Siguiente.
- Seleccione Concesión de JWT de OAuth en el menú desplegable.
- 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
- Producción:
- 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
- Producción:
- 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-----.
- Endpoint JWT de OAuth: introduce el endpoint del token de OAuth de Salesforce:
- Especifique parámetros adicionales:
- Espacio de nombres de recursos: el espacio de nombres de recursos.
- Etiquetas de ingestión: etiqueta que se aplicará a los eventos de este feed.
- Haz clic en Siguiente.
- 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
- Crea un segmento de Amazon S3 siguiendo esta guía de usuario: Crear un segmento.
- Guarda el nombre y la región del segmento para consultarlos más adelante (por ejemplo,
salesforce-secops-logs). - Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
- Selecciona el usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- En la sección Claves de acceso, haz clic en Crear clave de acceso.
- Selecciona Servicio de terceros como Caso práctico.
- Haz clic en Siguiente.
- Opcional: añade 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 futuras consultas.
- Haz clic en Listo.
- Selecciona la pestaña Permisos.
- En la sección Políticas de permisos, haz clic en Añadir permisos.
- Selecciona Añadir permisos.
- Seleccione Adjuntar políticas directamente.
- Busca la política AmazonS3FullAccess.
- Selecciona la política.
- Haz clic en Siguiente.
- Haz clic en Añadir permisos.
Configurar Amazon AppFlow
- Abre la consola de Amazon AppFlow.
- Haz clic en Crear flujo.
- 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.
- Nombre del flujo: introduce un nombre (por ejemplo,
- Haz clic en Siguiente.
- 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).
- Haz clic en Siguiente.
- 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/).
- Haz clic en Siguiente.
- 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.
- Haz clic en Siguiente.
- 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.
- Haz clic en Siguiente.
- Para Añadir filtros (opcional):
- Añade los filtros que quieras para limitar los datos transferidos.
- Haz clic en Siguiente.
- Revisa la configuración y haz clic en Crear flujo.
- Haz clic en Activar flujo para iniciar las transferencias programadas.
Configurar un feed en Google SecOps para ingerir registros de Salesforce
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- En la página siguiente, haga clic en Configurar un solo feed.
- En el campo Nombre del feed, escriba un nombre para el feed (por ejemplo, Registros de Salesforce).
- Selecciona Amazon S3 V2 como Tipo de fuente.
- Seleccione Salesforce como Tipo de registro.
- Haz clic en Siguiente.
Especifique los valores de los siguientes parámetros de entrada:
- URI de S3: el URI del segmento.
s3://BUCKET_NAMESustituye 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.
- URI de S3: el URI del segmento.
Haz clic en Siguiente.
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/ACSV
"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.