Recopila registros de Salesforce
En este documento, se explica cómo transferir registros de Salesforce a Google Security Operations con dos métodos: la API de terceros o Amazon AppFlow con Amazon S3. El analizador controla los registros en formatos LEEF, CSV y JSON. Extrae campos, realiza el procesamiento específico del formato (controla los pares clave-valor de LEEF, las columnas CSV y las estructuras JSON), los asigna al UDM y enriquece los datos con metadatos y campos derivados. El analizador también controla varios tipos de eventos de Salesforce, aplica lógica específica para los accesos, los cierres de sesión y otras acciones, categoriza eventos y establece tipos de eventos del UDM adecuados.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Acceso con privilegios a Salesforce (administrador del sistema o equivalente)
Para el método de la API de terceros (opción 1):
- Licencia de Supervisión de eventos de Shield de Salesforce o complemento de Supervisión de eventos (obligatorio para el acceso integral a EventLogFile)
- Capacidad de generar y administrar certificados X.509 y pares de clave RSA
Para Amazon AppFlow con el método de S3 (opción 2):
- Acceso privilegiado a AWS
- Tu organización utiliza la edición Enterprise, Unlimited o Performance de Salesforce.
Nota importante sobre la licencia: Sin el Monitoreo de eventos de Salesforce Shield, el acceso a la API de 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 incumplimiento de CORS, Incumplimiento de CSP, Redireccionamientos de nombre de host y Excepción inesperada de Apex) con un período de 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: Configura la integración directa de la API de Salesforce con la API de terceros (portador de JWT de OAuth)
Este método establece una conexión a la API de Google SecOps a Salesforce con el flujo de portador de JWT de OAuth 2.0 para la autenticación de servidor a servidor.
Requisitos previos para este método:
- Licencia de Supervisión de eventos de Shield de Salesforce o complemento de Supervisión de eventos (necesario para el acceso integral a EventLogFile)
- Acceso de administrador del sistema en Salesforce
Capacidad de generar y administrar certificados X.509 y pares de clave RSA
Genera un par de clave RSA y un certificado X.509
Necesitas una clave privada RSA y el certificado X.509 correspondiente para la autenticación del portador de 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 por 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. La necesitarás para configurar el feed de Google SecOps.
Crea una aplicación conectada de Salesforce con el flujo de portador de JWT
- Accede a Salesforce como administrador del sistema.
- Ve a Configuración > Apps > Administrador de apps.
- Haz clic en Nueva app conectada.
- Proporciona los siguientes detalles de configuración:
- Connected App Name: Ingresa un nombre (por ejemplo,
Google SecOps Integration). - API Name: Se completa automáticamente según el nombre de la app conectada.
- Correo electrónico de contacto: Ingresa tu dirección de correo electrónico.
- Connected App Name: Ingresa un nombre (por ejemplo,
- En la sección API (Enable OAuth Settings), haz lo siguiente:
- Selecciona Habilitar configuración de OAuth.
- URL de devolución de llamada: Ingresa
https://login.salesforce.com/services/oauth2/callback(no se usa para 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 generaste antes. - Selected OAuth Scopes: Agrega los siguientes permisos:
- Acceder y administrar datos (API)
- Realizar solicitudes en tu nombre en cualquier momento (refresh_token, offline_access)
- Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows: 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 app conectada, anota la clave de consumidor. Se usará como el emisor de reclamos de JWT en Google SecOps.
- Haz clic en Administrar > Editar políticas.
- En la sección Políticas de OAuth, haz lo siguiente:
- Usuarios permitidos: Selecciona Usuarios aprobados por el administrador con autorización previa.
- Relajación de IP: Selecciona Disminución de las restricciones de IP.
- Haz clic en Guardar.
Crea y configura un usuario de integración en Salesforce
- Ve a Configuración > Usuarios > Usuarios.
- Haz clic en Usuario nuevo.
- Proporciona los siguientes detalles de configuración:
- Nombre: Ingresa
Google. - Apellido: Ingresa
SecOps Integration. - Correo electrónico: Ingresa una dirección de correo electrónico.
- Nombre de usuario: Ingresa un nombre de usuario único (por ejemplo,
secops-integration@yourcompany.com). - Licencia de usuario: Selecciona Salesforce.
- Perfil: Selecciona Administrador del sistema o crea un perfil personalizado con acceso a la API.
- Nombre: Ingresa
- Haz clic en Guardar.
- Anota el nombre de usuario exactamente como lo ingresaste. Se usará como el asunto de las reclamaciones del JWT en Google SecOps.
Asigna el usuario de integración a la app conectada
- Ve a Configuración > Apps > Apps conectadas > Administrar apps conectadas.
- Haz clic en la app conectada Google SecOps Integration que creaste.
- Haz clic en Administrar > Administrar perfiles o Administrar 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.
Otorga permisos de API y de supervisión de eventos al usuario de integración
- Ve a Configuración > Usuarios > Conjuntos de permisos.
- Haz clic en Nuevo.
- Proporciona los siguientes detalles de configuración:
- Etiqueta: Ingresa
Event Monitoring API Access. - Nombre de la API: Se completa automáticamente.
- Etiqueta: Ingresa
- Haz clic en Guardar.
- En la página de detalles del conjunto de permisos, haz lo siguiente:
- Haz clic en Permisos del sistema.
- Haz clic en Editar.
- Verifica los siguientes permisos:
- API habilitada
- Cómo ver los archivos de registro de eventos
- Ver todos los datos (opcional, pero recomendado para un acceso integral)
- Haz clic en Guardar.
- Haz clic en Administrar tareas > Agregar tareas.
- Selecciona el usuario de integración que creaste antes.
- Haz clic en Asignar > Listo.
Configura un feed en Google SecOps para transferir registros de Salesforce a través de la API
- Ve a Configuración de SIEM > Feeds.
- Haz clic en + Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
Salesforce logs). - Selecciona API de terceros como el Tipo de origen.
- Selecciona Salesforce como el Tipo de registro.
- Haz clic en Siguiente.
- Selecciona OAuth JWT grant en el menú desplegable.
- Especifica valores para los siguientes parámetros de entrada:
- Extremo de JWT de OAuth: Ingresa el extremo del token de OAuth de Salesforce con el parámetro grant_type:
- Producción:
https://login.salesforce.com/services/oauth2/token?grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer - Zona de pruebas:
https://test.salesforce.com/services/oauth2/token?grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer - Dominio personalizado:
https://yourdomain.my.salesforce.com/services/oauth2/token?grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
- Producción:
- Emisor de reclamaciones de JWT: Ingresa la clave de consumidor de la aplicación conectada.
- JWT Claims Subject: Ingresa el nombre de usuario del usuario de integración.
- Público de las declaraciones del JWT: Ingresa la URL base de acceso de Salesforce:
- Producción:
https://login.salesforce.com - Zona de pruebas:
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-----.
- Extremo de JWT de OAuth: Ingresa el extremo del token de OAuth de Salesforce con el parámetro grant_type:
- Especifica parámetros adicionales:
- Espacio de nombres del recurso: Es el espacio de nombres del recurso.
- Etiquetas de transmisión: Es la etiqueta que se aplicará a los eventos de este feed.
- Haz clic en Siguiente.
- Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Opción 2: Configura la exportación de registros de Salesforce con Amazon AppFlow y S3
Este método usa Amazon AppFlow para extraer datos de Salesforce y almacenarlos en Amazon S3, que luego Google SecOps transfiere.
Configura el bucket de AWS S3 y el IAM para Google SecOps
- Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Crea un bucket
- Guarda el Nombre y la Región del bucket para futuras referencias (por ejemplo,
salesforce-secops-logs). - Crea un usuario siguiendo esta guía del usuario: Cómo crear un usuario de IAM.
- Selecciona el usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- Haz clic en Crear clave de acceso en la sección Claves de acceso.
- Selecciona Servicio de terceros como el Caso de uso.
- Haz clic en Siguiente.
- Opcional: Agrega una etiqueta de descripción.
- Haz clic en Crear clave de acceso.
- Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para usarlas más adelante.
- Haz clic en Listo.
- Selecciona la pestaña Permisos.
- Haz clic en Agregar permisos en la sección Políticas de permisos.
- Selecciona Agregar permisos.
- Selecciona Adjuntar políticas directamente.
- Busca y selecciona la política AmazonS3FullAccess.
- Haz clic en Siguiente.
- Haz clic en Agregar permisos.
Configura Amazon AppFlow
- Abre la consola de Amazon AppFlow.
- Haz clic en Crear flujo.
- Proporciona los siguientes detalles de configuración:
- Nombre del flujo: Ingresa un nombre (por ejemplo,
Salesforce-to-S3-SecOps). - Descripción del flujo: Descripción opcional.
- Nombre del flujo: Ingresa un nombre (por ejemplo,
- Haz clic en Siguiente.
- En 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 nueva.
- Aparecerá una ventana de acceso de Salesforce. Accede con tus credenciales de Salesforce.
- Otorga acceso cuando se te solicite.
- Objeto de Salesforce: Selecciona el objeto que deseas transferir (por ejemplo, EventLogFile si tienes Supervisión de eventos o cualquier otro objeto de auditoría).
- Haz clic en Siguiente.
- En Detalles del destino, haz lo siguiente:
- Nombre de destino: Selecciona Amazon S3.
- Detalles del bucket: Selecciona el bucket de S3 que creaste antes.
- Prefijo del bucket de S3: Prefijo opcional (por ejemplo,
salesforce-logs/).
- Haz clic en Siguiente.
- Para Activador de flujo:
- Selecciona Ejecutar según la programación.
- A partir de: Establece la hora de inicio que prefieras.
- Repeticiones: Selecciona Por hora o Diariamente según tus requisitos.
- Haz clic en Siguiente.
- En Map data fields, haz lo siguiente:
- Selecciona Asignar todos los campos directamente o especifica qué campos deseas asignar.
- Si realizas la asignación de forma manual, selecciona los campos que deseas transferir.
- Haz clic en Siguiente.
- Para Agregar filtros (opcional):
- Agrega los filtros que desees 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.
Configura un feed en Google SecOps para transferir registros de Salesforce
- Ve a Configuración de SIEM > Feeds.
- Haz clic en + Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
Salesforce Logs). - Selecciona Amazon S3 V2 como el Tipo de fuente.
- Selecciona Salesforce como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
URI de S3: Ingresa el URI del bucket (por ejemplo,
s3://salesforce-secops-logs/).- Reemplaza
salesforce-secops-logspor el nombre real de tu bucket.
- Reemplaza
Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
- Nunca: Nunca borra ningún archivo después de las transferencias.
- On success: Borra todos los archivos y directorios vacíos después de una transferencia exitosa.
- Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días especificada. 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: Es el espacio de nombres del recurso.
- Etiquetas de transmisión: Es la etiqueta que se aplicará a los eventos de este feed.
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
Account.Name |
target.resource.name |
Es el valor de Account.Name del registro sin procesar. |
AccountId |
target.resource.id |
Es el valor de AccountId del registro sin procesar. |
Action |
security_result.description |
Es el valor de Action del registro sin procesar. |
AdditionalInfo |
- | No se asignó al objeto de IDM. |
ApiType |
target.application |
Es el valor de ApiType del registro sin procesar. |
ApiVersion |
- | No se asignó al objeto de IDM. |
Application |
principal.application |
Es el valor de Application del registro sin procesar, "Navegador" para LoginAsEvent, "Token de JWT de integración" para LoginEvent, "SfdcSiqActivityPlatform" para LoginHistory con el tipo de objeto LoginHistory, "N/A" para ApiEvent o "Navegador" para LoginAsEventStream. |
attributes.url |
target.url |
Es el valor de attributes.url del registro sin procesar o las URLs específicas de varios tipos de eventos del registro sin procesar. |
attributes.type |
metadata.product_event_type |
Es el valor de attributes.type del registro sin procesar. |
AuthSessionId |
network.session_id |
Es el valor de AuthSessionId del registro sin procesar. |
Browser |
principal.resource.name |
Es 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)" para LoginHistory con ApiType como "SOAP Partner", o "Unknown" para LoginHistory con Application como "SfdcSiqActivityPlatform", o de data.properties.Browser.str para LoginAsEventStream. |
Case.Subject |
target.resource.name |
Es el valor de Case.Subject del registro sin procesar. |
CaseId |
target.resource.id |
Es el valor de CaseId del registro sin procesar. |
cat |
metadata.product_event_type |
Es el valor de cat del registro sin procesar. |
City |
principal.location.city |
Valor de City del registro sin procesar o de LoginGeo.City para LoginHistory. |
Client |
principal.labels |
El valor de Client del registro sin procesar, con el formato de una etiqueta. |
CLIENT_IP |
principal.ip, principal.asset.ip |
Es el valor de CLIENT_IP del registro sin procesar. |
ClientVersion |
- | No se asignó al objeto IDM. |
CipherSuite |
network.tls.cipher |
Es el valor de CipherSuite del registro sin procesar. |
ColumnHeaders |
principal.labels |
El valor de ColumnHeaders del registro sin procesar, con el formato de una etiqueta. |
ConnectedAppId |
principal.labels |
El valor de ConnectedAppId del registro sin procesar, con formato de etiqueta. |
Contact.Name |
target.resource.name |
Es el valor de Contact.Name del registro sin procesar. |
ContactId |
target.resource.id |
Es el valor de ContactId del registro sin procesar. |
Country |
principal.location.country_or_region |
Es el valor de Country del registro sin procesar o LoginGeo.Country para LoginHistory. |
CreatedByContext |
principal.user.userid |
Es 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 |
Es 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 el formato de una etiqueta. |
data |
- | Contiene varios campos que se extraen y asignan de forma individual. |
DATASET_IDS |
target.resource.name |
Es el valor de DATASET_IDS del registro sin procesar. |
DelegatedOrganizationId |
target.administrative_domain |
Es el valor de DelegatedOrganizationId del registro sin procesar. |
DelegatedUsername |
observer.user.userid |
Es el valor de DelegatedUsername del registro sin procesar. |
Description |
metadata.description |
Es 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 |
Es el valor de Display del registro sin procesar. |
DOWNLOAD_FORMAT |
target.resource.attribute.labels |
El valor de DOWNLOAD_FORMAT del registro sin procesar, con el formato de una 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 |
Es el valor de ErrorCode del registro sin procesar, transformado en ALLOW o BLOCK. |
EventDate |
timestamp |
Es el valor de EventDate del registro sin procesar, o data.properties.TIMESTAMP_DERIVED.str si está disponible, o data.properties.TIMESTAMP_DERIVED_FIRST.str si está disponible, o @timestamp si está disponible, o created_date si está disponible, o timestamp si está disponible, o LoginTime para LoginHistory. |
EventIdentifier |
metadata.product_log_id |
Es el valor de EventIdentifier del registro sin procesar. |
EventType |
metadata.product_event_type |
Es el valor de EventType del registro sin procesar. |
Id |
principal.user.userid |
Es el valor de Id del registro sin procesar o metadata.product_log_id para SetupAuditTrail y otros eventos. |
IdentityUsed |
principal.user.email_addresses |
Es el valor de IdentityUsed del registro sin procesar. |
Lead.Name |
target.resource.name |
Es el valor de Lead.Name del registro sin procesar. |
LeadId |
target.resource.id |
Es el valor de LeadId del registro sin procesar. |
LoginAsCategory |
- | No se asignó al objeto de IDM. |
LoginGeo.Country |
principal.location.country_or_region |
Es el valor de LoginGeo.Country del registro sin procesar. |
LoginHistoryId |
- | No se asignó al objeto de IDM. |
LoginKey |
principal.user.userid, network.session_id |
Es el valor de LoginKey del registro sin procesar o CreatedByContext para SetupAuditTrail. |
LoginTime |
timestamp |
Es el valor de LoginTime del registro sin procesar. |
LoginType |
security_result.description |
Es el valor de LoginType del registro sin procesar, "Other Apex API" para LoginHistory con ApiType como "SOAP Partner" o "Remote Access 2.0" para LoginHistory con Application como "SfdcSiqActivityPlatform". |
LoginUrl |
target.url, principal.url |
Es 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 el formato de una etiqueta. |
LogFileLength |
principal.resource.attribute.labels |
El valor de LogFileLength del registro sin procesar, con el formato de una etiqueta. |
Message |
- | No se asignó al objeto IDM. |
METHOD |
network.http.method |
Es el valor de METHOD del registro sin procesar. |
Name |
target.application |
Es 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 el formato de una etiqueta. |
OldValue |
- | Se usa junto con NewValue para generar security_result.summary. |
Operation |
security_result.description, target.resource.attribute.labels |
Es el valor de Operation del registro sin procesar o Display para SetupAuditTrail. |
OperationStatus |
security_result.action |
Es el valor de OperationStatus del registro sin procesar, transformado en ALLOW o BLOCK. |
ORGANIZATION_ID |
target.administrative_domain |
Es el valor de ORGANIZATION_ID del registro sin procesar. |
OsName |
principal.platform |
Es el valor de OsName del registro sin procesar. |
OsVersion |
principal.platform_version |
Es el valor de OsVersion del registro sin procesar. |
Platform |
principal.platform |
Es el valor de Platform del registro sin procesar, de data.properties.OsName.str para LightningUriEventStream o de data.properties.OsName.str para 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 |
Es el valor de Query del registro sin procesar. |
RecordId |
target.resource.id |
Es el valor de RecordId del registro sin procesar. |
Records |
principal.labels |
El valor de Records del registro sin procesar, con el formato de una etiqueta. |
REQUEST_ID |
metadata.product_log_id, target.resource.product_object_id |
Es el valor de REQUEST_ID del registro sin procesar. |
REQUEST_SIZE |
network.sent_bytes |
Es el valor de REQUEST_SIZE del registro sin procesar. |
REQUEST_STATUS |
security_result.summary |
Es el valor de REQUEST_STATUS del registro sin procesar. |
RESPONSE_SIZE |
network.received_bytes |
Es el valor de RESPONSE_SIZE del registro sin procesar. |
RowsProcessed |
target.resource.attribute.labels |
El valor de RowsProcessed del registro sin procesar, con el formato de una etiqueta. |
RUN_TIME |
target.resource.attribute.labels |
El valor de RUN_TIME del registro sin procesar, con el formato de una etiqueta. |
SamlEntityUrl |
- | No se asignó al objeto IDM. |
SdkAppType |
- | No se asignó al objeto IDM. |
SdkAppVersion |
- | No se asignó al objeto IDM. |
SdkVersion |
- | No se asignó al objeto de IDM. |
Section |
security_result.summary |
Es el valor de Section del registro sin procesar. |
SessionKey |
network.session_id |
Es 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 |
Es el valor de SourceIp del registro sin procesar. |
src |
principal.ip, principal.asset.ip |
Es el valor de src del registro sin procesar. |
SsoType |
target.resource.attribute.labels |
El valor de SsoType del registro sin procesar, con el formato de una etiqueta. |
STATUS_CODE |
network.http.response_code |
Es el valor de STATUS_CODE del registro sin procesar. |
Status |
security_result.action, security_result.action_details |
Es el valor de Status del registro sin procesar, transformado en ALLOW o BLOCK, o bien se usa como detalles de la acción para LoginEventStream. |
Subject |
target.resource.name |
Es el valor de Subject del registro sin procesar. |
TargetUrl |
- | No se asignó al objeto de IDM. |
TIMESTAMP |
metadata.collected_timestamp |
Es el valor de TIMESTAMP del registro sin procesar. |
TIMESTAMP_DERIVED |
timestamp |
Es el valor de TIMESTAMP_DERIVED del registro sin procesar. |
TlsProtocol |
network.tls.version_protocol |
Es el valor de TlsProtocol del registro sin procesar. |
URI |
target.url |
Es el valor de URI del registro sin procesar. |
USER_AGENT |
network.http.user_agent |
Es el valor de USER_AGENT del registro sin procesar. |
USER_ID |
principal.user.userid |
Es el valor de USER_ID del registro sin procesar. |
USER_ID_DERIVED |
principal.user.product_object_id, target.resource.attribute.labels |
Es el valor de USER_ID_DERIVED del registro sin procesar. |
UserId |
principal.user.userid |
Es el valor de UserId del registro sin procesar. |
USER_TYPE |
target.resource.attribute.labels |
El valor de USER_TYPE del registro sin procesar, con el formato de una etiqueta. |
Username |
principal.user.userid, principal.user.email_addresses, target.user.email_addresses |
Es 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 el formato de una etiqueta. |
usrName |
principal.user.userid, principal.user.email_addresses, target.user.email_addresses |
Es 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 en función de los campos event_id y operation, o se establece como "USER_LOGIN" para LoginEventStream, "USER_LOGOUT" para Logout y LogoutEvent, "USER_RESOURCE_UPDATE_CONTENT" para varios eventos, "USER_RESOURCE_UPDATE_PERMISSIONS" para PlatformEncryption, "RESOURCE_READ" para QueuedExecution, ApexExecution, LightningInteraction, LightningPerformance, LightningPageView, URI, RestApi, API, AuraRequest, ApexCallout, OneCommerceUsage, Sites, MetadataApiOperation, OneCommerceUsage, VisualforceRequest, Dashboard, Search, ListViewEvent, "RESOURCE_CREATION" para UriEvent y TimeBasedWorkflow con Operation como "Create" o "INSERT", "RESOURCE_WRITTEN" para UriEvent y LightningUriEvent con Operation como "Update", "RESOURCE_DELETION" para UriEvent con Operation como "Delete" o "ROLLBACK", "USER_UNCATEGORIZED" para SetupAuditTrail y AuditTrail, "USER_CHANGE_PASSWORD" para SetupAuditTrail con operation como "namedCredentialEncryptedFieldChange", "GENERIC_EVENT" para ApiEventStream y LightningUriEventStream, o en función de la presencia de la red y la principal. |
| Lógica del analizador | metadata.ingestion_labels |
Son etiquetas que indican la fuente del evento, ya sea "Archivo de registro de eventos", "Supervisión de eventos en tiempo real" o "SetupAuditTrail". |
| Lógica del analizador | metadata.log_type |
Siempre se establece en "SALESFORCE". |
| Lógica del analizador | metadata.product_name |
Siempre se establece en "SALESFORCE". |
| Lógica del analizador | metadata.vendor_name |
Siempre se establece en "SALESFORCE". |
| Lógica del analizador | metadata.url_back_to_product |
Se construye a partir de varios campos, como LoginUrl, attributes.url, data.properties.PageUrl.str y data.properties.LoginUrl.str. |
| Lógica del analizador | network.application_protocol |
Se establece en "HTTPS" si el campo uri comienza con "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 |
Se deriva de request_status para varios eventos. |
| Lógica del analizador | network.http.user_agent |
Es el valor de user_agent del registro sin procesar, de data.properties.UserAgent.str para ApiEventStream y LoginEventStream, de los eventos Sites o "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 construido a partir de otros campos, como LoginKey o AuthSessionId. |
| Lógica del analizador | network.tls.version |
Es el valor de tls_protocol del registro sin procesar o de data.properties.TlsProtocol.str para LoginEventStream. |
| Lógica del analizador | principal.application |
Es el valor de application del registro sin procesar, "Salesforce for Outlook" para los eventos de acceso correcto, "Insights" para los eventos de acceso correcto sin aplicación o extraído de device_platform para 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 |
Es el valor de client_ip, src_ip, SourceIp o CLIENT_IP si se trata de 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 |
Es el valor de client_ip, src_ip, SourceIp o CLIENT_IP si se trata de una dirección IP. |
| Lógica del analizador | principal.labels |
Son etiquetas creadas a partir de varios campos, como FederationIdentifier, ApiType, OrgId y channel. |
| Lógica del analizador | principal.location.city |
Valor de geoip_src.city_name, City o LoginGeo.City del registro sin procesar. |
| Lógica del analizador | principal.location.country_or_region |
Valor de geoip_src.country_name, Country, LoginGeo.Country o client_geo del registro sin procesar. |
| Lógica del analizador | principal.location.region_latitude |
Es el valor de data.properties.LoginLatitude.number del registro sin procesar. |
| Lógica del analizador | principal.location.region_longitude |
Es el valor de data.properties.LoginLongitude.number del registro sin procesar. |
| Lógica del analizador | principal.location.state |
Es 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 bien "WINDOWS" para LoginEventStream con Platform que contiene "Windows". |
| Lógica del analizador | principal.platform_version |
El valor de OsVersion o os_version del registro sin procesar, o bien extraído de Platform para LoginEventStream con Platform que contiene "Windows". |
| Lógica del analizador | principal.resource.attribute.labels |
Son 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 bien "Java (Salesforce.com)" para LoginHistory con ApiType como "Socio de SOAP". |
| Lógica del analizador | principal.resource.type |
Se extrae de device_platform para los eventos de Lightning o "Navegador" para LoginAsEvent y LoginAsEventStream. |
| Lógica del analizador | principal.url |
Es el valor de LoginUrl del registro sin procesar. |
| Lógica del analizador | principal.user.email_addresses |
Es 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 |
Es 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 |
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 |
Se deriva de Status, OperationStatus, ErrorCode, action o operation_status del registro sin procesar y se transforma en ALLOW o BLOCK. |
| Lógica del analizador | security_result.action_details |
Es el valor de Status del registro sin procesar de LoginEventStream. |
| Lógica del analizador | security_result.description |
Es el valor de LoginType, logintype, Operation, Action o Display del registro sin procesar. |
| Lógica del analizador | security_result.rule_name |
Es 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, o REQUEST_STATUS, o Section, o forecastcategory del registro sin procesar. |
| Lógica del analizador | target.administrative_domain |
Valor de ORGANIZATION_ID, DelegatedOrganizationId, organization_id o data.properties.OrgName.str del registro sin procesar. |
| Lógica del analizador | target.application |
Es el valor de Application, app_name, ApiType, Name o data.properties.Application.str del registro sin procesar. |
| Lógica del analizador | target.asset.hostname |
Es el valor de target_hostname extraído del campo uri. |
| Lógica del analizador | target.asset.ip |
Es 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 |
Es el valor de file_type del registro sin procesar. |
| Lógica del analizador | target.file.size |
Es el valor de size_bytes del registro sin procesar. |
| Lógica del analizador | target.hostname |
Es el valor de target_hostname extraído del campo uri. |
| Lógica del analizador | target.process.command_line |
Valor de query_exec, Query o data.properties.Query.str del registro sin procesar. |
| Lógica del analizador | target.process.pid |
Es 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 |
Es el valor de REQUEST_ID, RecordId, caseid, leadid, contactid, opportunityid o accountid del registro sin procesar. |
| Lógica del analizador | target.resource.name |
Es 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 |
Es el valor de REQUEST_ID del registro sin procesar. |
| Lógica del analizador | target.resource.resource_type |
Se establece en "ACCESS_POLICY" para ApexCallout y PlatformEncryption, en "DATABASE" para ApexTrigger, en "FILE" para ContentTransfer o en "TABLE" para ApiEvent. |
| Lógica del analizador | target.resource.type |
Se establece en "BATCH" para QueuedExecution y ApexExecution, en "FILE" para ContentTransfer, en "DATABASE_TRIGGER" para ApexTrigger, o en "Case", "Lead", "Contact", "Opportunity" o "Account" según la presencia de los campos de ID correspondientes. |
| Lógica del analizador | target.url |
Es el valor de LoginUrl, URI, attributes.url, login_url o uri del registro sin procesar. |
| Lógica del analizador | target.user.email_addresses |
Valor de Username, attrs.usrName o email_address del registro sin procesar. |
| Lógica del analizador | target.user.user_display_name |
Valor de target_user_display_name, user_name o username del registro sin procesar. |
| Lógica del analizador | target.user.userid |
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 establece en "ACTIVE" si Status no es "Success". De lo contrario, se establece en "UNKNOWN_AUTHENTICATION_STATUS". |
| Lógica del analizador | extensions.auth.mechanism |
Se establece en "REMOTE" para los eventos de acceso: Éxito y acceso con logintype que contiene "Remoto", o "USERNAME_PASSWORD" para LoginEventStream, o "MECHANISM_OTHER" para los eventos con login_url presente, o "AUTHTYPE_UNSPECIFIED" para los eventos de acceso: Éxito y cierre de sesión. |
| Lógica del analizador | extensions.auth.type |
Se establece en "SSO" para Login, Logout, LogoutEvent, LoginAs, IdentityProviderEventStore, LoginHistory, LoginAsEvent con LoginType como "SSO iniciado por SAML de Sfdc", o "AUTHTYPE_UNSPECIFIED" para Login: Success, Logout, LoginAsEvent con LoginType como "Application". |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.