Recopila registros de Salesforce
En este documento, se explica cómo transferir registros de Salesforce a Google Security Operations con dos métodos: Amazon AppFlow con Amazon S3 o la API de terceros. 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)
Opción 1: Método de la API de terceros
- Una licencia de Supervisión de eventos de Shield de Salesforce o el complemento Supervisión de eventos
- Capacidad de generar y administrar certificados X.509 y pares de clave RSA
Opción 2: Amazon AppFlow con el método de S3
- 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 directa 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:
- Una licencia de Shield Event Monitoring de Salesforce o el complemento Event Monitoring (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 claves 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. Lo necesitarás para la configuración del 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 Security Operations 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
Google SecOps Integration. - Correo electrónico: Ingresa una dirección de correo electrónico.
- Nombre de usuario: Ingresa 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: 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 Integración de Google Security Operations 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:
- Producción:
https://login.salesforce.com/services/oauth2/token - Zona de pruebas:
https://test.salesforce.com/services/oauth2/token - Dominio personalizado:
https://yourdomain.my.salesforce.com/services/oauth2/token
- 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:
- 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 ingiere.
Configura el bucket de AWS S3 y el IAM para Google SecOps
- Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket
- Guarda el Nombre y la Región del bucket para 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 consultarlas en el futuro.
- Haz clic en Listo.
- Selecciona la pestaña Permisos.
- Haz clic en Agregar permisos en la sección Políticas de permisos.
- Selecciona Agregar permisos.
- Selecciona Adjuntar políticas directamente.
- Busca la política AmazonS3FullAccess.
- Selecciona la política.
- Haz clic en Siguiente.
- Haz clic en Agregar permisos.
Configura 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, Registros de Salesforce.
- 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: Es el URI del bucket.
s3://BUCKET_NAMEReemplaza lo siguiente:- BUCKET_NAME: Es el nombre del bucket.
Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días más reciente. El valor predeterminado es de 180 días.
ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3.
Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3.
- URI de S3: Es el URI del bucket.
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Formatos de registro de Salesforce admitidos
El analizador de Salesforce admite registros en formatos KV (LEEF) y CSV.
Registros de muestra de Salesforce compatibles
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 |
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 IDM. |
ApiType |
target.application |
Es el valor de ApiType del registro sin procesar. |
ApiVersion |
- | No se asignó al objeto 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 formato de 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 formato de 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 formato de 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 |
Es 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 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 |
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 IDM. |
LoginGeo.Country |
principal.location.country_or_region |
Es el valor de LoginGeo.Country del registro sin procesar. |
LoginHistoryId |
- | No se asignó al objeto 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 formato de etiqueta. |
LogFileLength |
principal.resource.attribute.labels |
El valor de LogFileLength del registro sin procesar, con formato de 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 formato de 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 formato de 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 formato de etiqueta. |
RUN_TIME |
target.resource.attribute.labels |
El valor de RUN_TIME del registro sin procesar, con formato de 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 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 formato de 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 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 formato de 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 formato de 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 o "Salesforce for Outlook" para los eventos de acceso correcto, o "Estadísticas" para los eventos de acceso correcto sin aplicación, o bien se extrae de device_platform para los eventos de Lightning. |
| Lógica del analizador | principal.asset.hostname |
Valor de client_ip si es un nombre de host. |
| Lógica del analizador | principal.asset.ip |
Valor de client_ip, src_ip, SourceIp o CLIENT_IP si es una dirección IP. |
| Lógica del analizador | principal.hostname |
Valor de client_ip si es un nombre de host. |
| Lógica del analizador | principal.ip |
Valor de client_ip, src_ip, SourceIp o CLIENT_IP si es 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 |
Etiquetas creadas a partir de varios campos, como CreatedById, ApiVersion, LogFile, LogFileContentType y LogFileLength. |
| Lógica del analizador | principal.resource.name |
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 |
Es 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 |
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 bien en "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.