Collecter les journaux Salesforce
Ce document explique comment ingérer des journaux Salesforce dans Google Security Operations à l'aide de deux méthodes : Amazon AppFlow avec Amazon S3 ou l'API tierce. L'analyseur gère les journaux aux formats LEEF, CSV et JSON. Il extrait les champs, effectue un traitement spécifique au format (gestion des paires clé/valeur LEEF, des colonnes CSV et des structures JSON), les mappe à l'UDM et enrichit les données avec des métadonnées et des champs dérivés. Le parseur gère également différents types d'événements Salesforce, en appliquant une logique spécifique aux connexions, aux déconnexions et à d'autres actions, en catégorisant les événements et en définissant les types d'événements UDM appropriés.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Une instance Google SecOps
- Accès privilégié à Salesforce (administrateur système ou équivalent)
Option 1 : Méthode de l'API tierce
- Une licence Salesforce Shield Event Monitoring ou un module complémentaire Event Monitoring
- la possibilité de générer et de gérer des certificats X.509 et des paires de clés RSA ;
Option 2 : Amazon AppFlow avec la méthode S3
- Accès privilégié à AWS
- Votre organisation utilise l'édition Enterprise, Unlimited ou Performance de Salesforce.
Important : Note sur les licences : Sans Salesforce Shield Event Monitoring, l'accès à l'API EventLogFile est limité à sept types d'événements de base (connexion, déconnexion, utilisation totale de l'API, enregistrement des violations CORS, violation CSP, redirections de nom d'hôte, exception inattendue Apex) avec une période de conservation d'un jour. La plupart des organisations qui n'utilisent pas Shield doivent utiliser la méthode Amazon AppFlow (option 2).
Option 1 : Configurer l'intégration directe de l'API Salesforce à l'aide d'une API tierce (support JWT OAuth)
Cette méthode établit une connexion API directe entre Google SecOps et Salesforce à l'aide du flux OAuth 2.0 JWT Bearer pour l'authentification de serveur à serveur.
Conditions requises pour cette méthode :
- Une licence Salesforce Shield Event Monitoring ou un module complémentaire Event Monitoring (requis pour un accès complet à EventLogFile)
- Accès administrateur système dans Salesforce
- la possibilité de générer et de gérer des certificats X.509 et des paires de clés RSA ;
Générer une paire de clés RSA et un certificat X.509
Vous avez besoin d'une clé privée RSA et du certificat X.509 correspondant pour l'authentification par jeton de support JWT.
Générez une clé privée RSA :
openssl genrsa -out salesforce_jwt_private.key 2048Générez une requête de signature de certificat (CSR) :
openssl req -new -key salesforce_jwt_private.key -out salesforce_jwt.csrGénérez un certificat autosigné (valable un an) :
openssl x509 -req -days 365 -in salesforce_jwt.csr -signkey salesforce_jwt_private.key -out salesforce_jwt.crtEnregistrez la clé privée de manière sécurisée. Vous en aurez besoin pour la configuration du flux Google SecOps.
Créer une application connectée Salesforce avec le flux de support JWT
- Connectez-vous à Salesforce en tant qu'administrateur système.
- Accédez à Configuration > Applications > Gestionnaire d'applications.
- Cliquez sur New Connected App (Nouvelle application connectée).
- Fournissez les informations de configuration suivantes :
- Nom de l'application connectée : saisissez un nom (par exemple,
Google Security Operations Integration). - Nom de l'API : renseigné automatiquement en fonction du nom de l'application connectée.
- Adresse e-mail de contact : saisissez votre adresse e-mail.
- Nom de l'application connectée : saisissez un nom (par exemple,
- Dans la section API (Activer les paramètres OAuth) :
- Sélectionnez Enable OAuth Settings (Activer les paramètres OAuth).
- URL de rappel : saisissez
https://login.salesforce.com/services/oauth2/callback(cette URL n'est pas utilisée pour le flux JWT, mais elle est obligatoire). - Sélectionnez Utiliser des signatures numériques.
- Cliquez sur Sélectionner un fichier et importez le certificat X.509 (
salesforce_jwt.crt) que vous avez généré précédemment. - Champs d'application OAuth sélectionnés : ajoutez les champs d'application suivants :
- Access and manage your data (api) (Accéder à vos données et les gérer – API)
- Effectuer des requêtes en votre nom à tout moment (refresh_token, offline_access)
- Exiger l'extension PKCE (Proof Key for Code Exchange) pour les flux d'autorisation compatibles : décochez cette option.
- Cliquez sur Enregistrer.
- Cliquez sur Continuer dans le message d'avertissement.
- Sur la page d'informations de l'application connectée, notez la clé client. Il sera utilisé comme émetteur de revendications JWT dans Google SecOps.
- Cliquez sur Gérer > Modifier les règles.
- Dans la section Règles OAuth :
- Utilisateurs autorisés : sélectionnez Les utilisateurs validés par l'administrateur sont pré-autorisés.
- Assouplissement des restrictions d'adresses IP : sélectionnez Assouplir les restrictions d'adresses IP.
- Cliquez sur Enregistrer.
Créer et configurer un utilisateur d'intégration dans Salesforce
- Accédez à Configuration> Utilisateurs> Utilisateurs.
- Cliquez sur New User (Nouvel utilisateur).
- Fournissez les informations de configuration suivantes :
- Prénom : saisissez
Google. - Nom : saisissez
Google SecOps Integration. - Adresse e-mail : saisissez une adresse e-mail.
- Nom d'utilisateur : saisissez un nom d'utilisateur unique.
- Licence utilisateur : sélectionnez Salesforce.
- Profil : sélectionnez Administrateur système ou créez un profil personnalisé avec accès à l'API.
- Prénom : saisissez
- Cliquez sur Enregistrer.
- Notez le nom d'utilisateur exactement tel qu'il a été saisi. Il sera utilisé comme sujet des revendications JWT dans Google SecOps.
Attribuer l'utilisateur d'intégration à l'application connectée
- Accédez à Configuration > Applications > Applications associées > Gérer les applications associées.
- Cliquez sur l'application connectée Intégration Google Security Operations que vous avez créée.
- Cliquez sur Gérer > Gérer les profils ou Gérer les ensembles d'autorisations.
- Sélectionnez le profil ou l'ensemble d'autorisations attribué à votre utilisateur d'intégration (par exemple, Administrateur système).
- Cliquez sur Enregistrer.
Accorder des autorisations d'API et de surveillance des événements à l'utilisateur d'intégration
- Accédez à Configuration> Utilisateurs> Ensembles d'autorisations.
- Cliquez sur New (Nouveau).
- Fournissez les informations de configuration suivantes :
- Libellé : saisissez
Event Monitoring API Access. - Nom de l'API : renseigné automatiquement.
- Libellé : saisissez
- Cliquez sur Enregistrer.
- Sur la page d'informations sur l'ensemble d'autorisations :
- Cliquez sur Autorisations système.
- Cliquez sur Modifier.
- Vérifiez les autorisations suivantes :
- API activée
- Afficher les fichiers journaux des événements
- Afficher toutes les données (facultatif, mais recommandé pour un accès complet)
- Cliquez sur Enregistrer.
- Cliquez sur Gérer les attributions > Ajouter des attributions.
- Sélectionnez l'utilisateur d'intégration que vous avez créé précédemment.
- Cliquez sur Attribuer > OK.
Configurer un flux dans Google SecOps pour ingérer les journaux Salesforce via l'API
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur + Ajouter un flux.
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple,
Salesforce logs). - Sélectionnez API tierce comme type de source.
- Sélectionnez Salesforce comme type de journal.
- Cliquez sur Suivant.
- Sélectionnez Octroi JWT OAuth dans le menu déroulant.
- Spécifiez les valeurs des paramètres d'entrée suivants :
- Point de terminaison JWT OAuth : saisissez le point de terminaison du jeton OAuth Salesforce :
- Production :
https://login.salesforce.com/services/oauth2/token - Bac à sable :
https://test.salesforce.com/services/oauth2/token - Domaine personnalisé :
https://yourdomain.my.salesforce.com/services/oauth2/token
- Production :
- Émetteur des revendications JWT : saisissez la clé client de l'application connectée.
- Objet des revendications JWT : saisissez le nom d'utilisateur de l'utilisateur d'intégration.
- Audience des revendications JWT : saisissez l'URL de base de connexion Salesforce :
- Production :
https://login.salesforce.com - Bac à sable :
https://test.salesforce.com
- Production :
- Clé privée RSA : collez l'intégralité du contenu de votre clé privée RSA (
salesforce_jwt_private.key), y compris les lignes-----BEGIN PRIVATE KEY-----et-----END PRIVATE KEY-----.
- Point de terminaison JWT OAuth : saisissez le point de terminaison du jeton OAuth Salesforce :
- Spécifiez des paramètres supplémentaires :
- Espace de noms de l'élément : espace de noms de l'élément.
- Libellés d'ingestion : libellé à appliquer aux événements de ce flux.
- Cliquez sur Suivant.
- Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.
Option 2 : Configurer l'exportation des journaux Salesforce à l'aide d'Amazon AppFlow et S3
Cette méthode utilise Amazon AppFlow pour extraire les données de Salesforce et les stocker dans Amazon S3, que Google SecOps ingère ensuite.
Configurer un bucket AWS S3 et IAM pour Google SecOps
- Créez un bucket Amazon S3 en suivant ce guide de l'utilisateur : Créer un bucket.
- Enregistrez le nom et la région du bucket pour référence ultérieure (par exemple,
salesforce-secops-logs). - Créez un utilisateur en suivant ce guide de l'utilisateur : Créer un utilisateur IAM.
- Sélectionnez l'utilisateur créé.
- Sélectionnez l'onglet Informations d'identification de sécurité.
- Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
- Sélectionnez Service tiers comme Cas d'utilisation.
- Cliquez sur Suivant.
- Facultatif : Ajoutez un tag de description.
- Cliquez sur Créer une clé d'accès.
- Cliquez sur Télécharger le fichier CSV pour enregistrer la clé d'accès et la clé d'accès secrète pour référence ultérieure.
- Cliquez sur OK.
- Sélectionnez l'onglet Autorisations.
- Cliquez sur Ajouter des autorisations dans la section Règles relatives aux autorisations.
- Sélectionnez Ajouter des autorisations.
- Sélectionnez Joindre directement des règles.
- Recherchez la règle AmazonS3FullAccess.
- Sélectionnez la règle.
- Cliquez sur Suivant.
- Cliquez sur Ajouter des autorisations.
Configurer Amazon AppFlow
- Ouvrez la console Amazon AppFlow.
- Cliquez sur Créer un flux.
- Fournissez les informations de configuration suivantes :
- Nom du flux : saisissez un nom (par exemple,
Salesforce-to-S3-SecOps). - Description du flux : description facultative.
- Nom du flux : saisissez un nom (par exemple,
- Cliquez sur Suivant.
- Pour Détails de la source :
- Nom de la source : sélectionnez Salesforce.
- Choisir une connexion Salesforce : cliquez sur Créer une connexion.
- Une fenêtre de connexion Salesforce s'affiche. Connectez-vous avec vos identifiants Salesforce.
- Accordez l'accès lorsque vous y êtes invité.
- Objet Salesforce : sélectionnez l'objet que vous souhaitez transférer (par exemple, EventLogFile si vous disposez de la surveillance des événements ou d'autres objets d'audit).
- Cliquez sur Suivant.
- Pour Détails de la destination :
- Nom de la destination : sélectionnez Amazon S3.
- Détails du bucket : sélectionnez le bucket S3 que vous avez créé précédemment.
- Préfixe du bucket S3 : préfixe facultatif (par exemple,
salesforce-logs/).
- Cliquez sur Suivant.
- Pour le déclencheur de flux :
- Sélectionnez Exécuter selon la planification.
- À partir de : définissez l'heure de début de votre choix.
- Répétitions : sélectionnez Toutes les heures ou Tous les jours selon vos besoins.
- Cliquez sur Suivant.
- Pour Mapper les champs de données :
- Sélectionnez Mapper directement tous les champs ou spécifiez les champs à mapper.
- Si vous effectuez le mappage manuellement, sélectionnez les champs que vous souhaitez transférer.
- Cliquez sur Suivant.
- Pour Ajouter des filtres (facultatif) :
- Ajoutez des filtres pour limiter les données transférées.
- Cliquez sur Suivant.
- Vérifiez votre configuration, puis cliquez sur Créer un flux.
- Cliquez sur Activer le flux pour lancer les transferts planifiés.
Configurer un flux dans Google SecOps pour ingérer les journaux Salesforce
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Salesforce).
- Sélectionnez Amazon S3 V2 comme type de source.
- Sélectionnez Salesforce comme type de journal.
- Cliquez sur Suivant.
Spécifiez les valeurs des paramètres d'entrée suivants :
- URI S3 : URI du bucket.
s3://BUCKET_NAMERemplacez les éléments suivants :- BUCKET_NAME : nom du bucket.
Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
Âge maximal du fichier : inclut les fichiers modifiés au cours des derniers jours. La valeur par défaut est de 180 jours.
ID de clé d'accès : clé d'accès utilisateur ayant accès au bucket S3.
Clé d'accès secrète : clé secrète de l'utilisateur ayant accès au bucket S3.
- URI S3 : URI du bucket.
Cliquez sur Suivant.
Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.
Formats de journaux Salesforce acceptés
L'analyseur Salesforce est compatible avec les journaux aux formats KV (LEEF) et CSV.
Journaux d'exemple Salesforce acceptés
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
Table de mappage UDM
| Champ de journal | Mappage UDM | Logique |
|---|---|---|
Account.Name |
target.resource.name |
Valeur de Account.Name à partir du journal brut. |
AccountId |
target.resource.id |
Valeur de AccountId à partir du journal brut. |
Action |
security_result.description |
Valeur de Action à partir du journal brut. |
AdditionalInfo |
- | Non mappé à l'objet IDM. |
ApiType |
target.application |
Valeur de ApiType à partir du journal brut. |
ApiVersion |
- | Non mappé à l'objet IDM. |
Application |
principal.application |
Valeur de Application du journal brut, ou "Navigateur" pour LoginAsEvent, ou "Jeton JWT d'intégration" pour LoginEvent, ou "SfdcSiqActivityPlatform" pour LoginHistory avec objecttype LoginHistory, ou "N/A" pour ApiEvent, ou "Navigateur" pour LoginAsEventStream. |
attributes.url |
target.url |
La valeur de attributes.url à partir du journal brut ou des URL spécifiques pour différents types d'événements à partir du journal brut. |
attributes.type |
metadata.product_event_type |
Valeur de attributes.type à partir du journal brut. |
AuthSessionId |
network.session_id |
Valeur de AuthSessionId à partir du journal brut. |
Browser |
principal.resource.name |
Valeur de Browser à partir du journal brut, ou "Inconnu" si Browser n'est pas disponible dans le journal brut et que Application est défini sur "Insights", ou "Java (Salesforce.com)" pour LoginHistory avec ApiType défini sur "SOAP Partner", ou "Inconnu" pour LoginHistory avec Application défini sur "SfdcSiqActivityPlatform", ou à partir de data.properties.Browser.str pour LoginAsEventStream. |
Case.Subject |
target.resource.name |
Valeur de Case.Subject à partir du journal brut. |
CaseId |
target.resource.id |
Valeur de CaseId à partir du journal brut. |
cat |
metadata.product_event_type |
Valeur de cat à partir du journal brut. |
City |
principal.location.city |
Valeur de City à partir du journal brut ou de LoginGeo.City pour LoginHistory. |
Client |
principal.labels |
Valeur de Client à partir du journal brut, mise en forme en tant que libellé. |
CLIENT_IP |
principal.ip, principal.asset.ip |
Valeur de CLIENT_IP à partir du journal brut. |
ClientVersion |
- | Non mappé à l'objet IDM. |
CipherSuite |
network.tls.cipher |
Valeur de CipherSuite à partir du journal brut. |
ColumnHeaders |
principal.labels |
Valeur de ColumnHeaders à partir du journal brut, mise en forme en tant que libellé. |
ConnectedAppId |
principal.labels |
Valeur de ConnectedAppId à partir du journal brut, mise en forme en tant que libellé. |
Contact.Name |
target.resource.name |
Valeur de Contact.Name à partir du journal brut. |
ContactId |
target.resource.id |
Valeur de ContactId à partir du journal brut. |
Country |
principal.location.country_or_region |
Valeur de Country à partir du journal brut ou LoginGeo.Country pour LoginHistory. |
CreatedByContext |
principal.user.userid |
Valeur de CreatedByContext à partir du journal brut. |
CreatedById |
principal.resource.attribute.labels |
Valeur de CreatedById à partir du journal brut, mise en forme en tant que libellé. |
CreatedDate |
metadata.collected_timestamp |
Valeur de CreatedDate à partir du journal brut ou code temporel actuel si la valeur n'est pas disponible. |
CPU_TIME |
target.resource.attribute.labels |
Valeur de CPU_TIME à partir du journal brut, mise en forme en tant que libellé. |
data |
- | Contient différents champs qui sont extraits et mappés individuellement. |
DATASET_IDS |
target.resource.name |
Valeur de DATASET_IDS à partir du journal brut. |
DelegatedOrganizationId |
target.administrative_domain |
Valeur de DelegatedOrganizationId à partir du journal brut. |
DelegatedUsername |
observer.user.userid |
Valeur de DelegatedUsername à partir du journal brut. |
Description |
metadata.description |
Valeur de Description à partir du journal brut. |
DevicePlatform |
principal.resource.type |
Valeur de DevicePlatform du journal brut, analysée pour extraire le type de ressource. |
Display |
metadata.description |
Valeur de Display à partir du journal brut. |
DOWNLOAD_FORMAT |
target.resource.attribute.labels |
Valeur de DOWNLOAD_FORMAT à partir du journal brut, mise en forme en tant que libellé. |
Duration |
target.resource.attribute.labels |
Valeur de Duration à partir du journal brut, mise en forme en tant que libellé. |
ENTITY_NAME |
target.resource.attribute.labels |
Valeur de ENTITY_NAME à partir du journal brut, mise en forme en tant que libellé. |
ErrorCode |
security_result.action |
Valeur de ErrorCode du journal brut, transformée en ALLOW ou BLOCK. |
EventDate |
timestamp |
Valeur de EventDate à partir du journal brut, ou data.properties.TIMESTAMP_DERIVED.str si disponible, ou data.properties.TIMESTAMP_DERIVED_FIRST.str si disponible, ou @timestamp si disponible, ou created_date si disponible, ou timestamp si disponible, ou LoginTime pour LoginHistory. |
EventIdentifier |
metadata.product_log_id |
Valeur de EventIdentifier à partir du journal brut. |
EventType |
metadata.product_event_type |
Valeur de EventType à partir du journal brut. |
Id |
principal.user.userid |
Valeur de Id à partir du journal brut ou metadata.product_log_id pour SetupAuditTrail et d'autres événements. |
IdentityUsed |
principal.user.email_addresses |
Valeur de IdentityUsed à partir du journal brut. |
Lead.Name |
target.resource.name |
Valeur de Lead.Name à partir du journal brut. |
LeadId |
target.resource.id |
Valeur de LeadId à partir du journal brut. |
LoginAsCategory |
- | Non mappé à l'objet IDM. |
LoginGeo.Country |
principal.location.country_or_region |
Valeur de LoginGeo.Country à partir du journal brut. |
LoginHistoryId |
- | Non mappé à l'objet IDM. |
LoginKey |
principal.user.userid, network.session_id |
Valeur de LoginKey à partir du journal brut ou CreatedByContext pour SetupAuditTrail. |
LoginTime |
timestamp |
Valeur de LoginTime à partir du journal brut. |
LoginType |
security_result.description |
Valeur de LoginType à partir du journal brut, ou "Autre API Apex" pour LoginHistory avec ApiType en tant que "Partenaire SOAP", ou "Accès à distance 2.0" pour LoginHistory avec Application en tant que "SfdcSiqActivityPlatform". |
LoginUrl |
target.url, principal.url |
Valeur de LoginUrl à partir du journal brut. |
LogFile |
principal.resource.attribute.labels |
Valeur de LogFile à partir du journal brut, mise en forme en tant que libellé. |
LogFileContentType |
principal.resource.attribute.labels |
Valeur de LogFileContentType à partir du journal brut, mise en forme en tant que libellé. |
LogFileLength |
principal.resource.attribute.labels |
Valeur de LogFileLength à partir du journal brut, mise en forme en tant que libellé. |
Message |
- | Non mappé à l'objet IDM. |
METHOD |
network.http.method |
Valeur de METHOD à partir du journal brut. |
Name |
target.application |
Valeur de Name à partir du journal brut. |
NewValue |
- | Utilisé conjointement avec OldValue pour générer security_result.summary. |
NUMBER_FIELDS |
target.resource.attribute.labels |
Valeur de NUMBER_FIELDS à partir du journal brut, mise en forme en tant que libellé. |
OldValue |
- | Utilisé conjointement avec NewValue pour générer security_result.summary. |
Operation |
security_result.description, target.resource.attribute.labels |
Valeur de Operation à partir du journal brut ou Display pour SetupAuditTrail. |
OperationStatus |
security_result.action |
Valeur de OperationStatus du journal brut, transformée en ALLOW ou BLOCK. |
ORGANIZATION_ID |
target.administrative_domain |
Valeur de ORGANIZATION_ID à partir du journal brut. |
OsName |
principal.platform |
Valeur de OsName à partir du journal brut. |
OsVersion |
principal.platform_version |
Valeur de OsVersion à partir du journal brut. |
Platform |
principal.platform |
La valeur de Platform à partir du journal brut, ou de data.properties.OsName.str pour LightningUriEventStream, ou de data.properties.OsName.str pour LoginEventStream. |
QueriedEntities |
target.resource.name, principal.labels |
La valeur de QueriedEntities à partir du journal brut, ou component_name pour UriEvent et ApiEvent. |
Query |
target.process.command_line, principal.labels |
Valeur de Query à partir du journal brut. |
RecordId |
target.resource.id |
Valeur de RecordId à partir du journal brut. |
Records |
principal.labels |
Valeur de Records à partir du journal brut, mise en forme en tant que libellé. |
REQUEST_ID |
metadata.product_log_id, target.resource.product_object_id |
Valeur de REQUEST_ID à partir du journal brut. |
REQUEST_SIZE |
network.sent_bytes |
Valeur de REQUEST_SIZE à partir du journal brut. |
REQUEST_STATUS |
security_result.summary |
Valeur de REQUEST_STATUS à partir du journal brut. |
RESPONSE_SIZE |
network.received_bytes |
Valeur de RESPONSE_SIZE à partir du journal brut. |
RowsProcessed |
target.resource.attribute.labels |
Valeur de RowsProcessed à partir du journal brut, mise en forme en tant que libellé. |
RUN_TIME |
target.resource.attribute.labels |
Valeur de RUN_TIME à partir du journal brut, mise en forme en tant que libellé. |
SamlEntityUrl |
- | Non mappé à l'objet IDM. |
SdkAppType |
- | Non mappé à l'objet IDM. |
SdkAppVersion |
- | Non mappé à l'objet IDM. |
SdkVersion |
- | Non mappé à l'objet IDM. |
Section |
security_result.summary |
Valeur de Section à partir du journal brut. |
SessionKey |
network.session_id |
Valeur de SessionKey à partir du journal brut. |
SessionLevel |
target.resource.attribute.labels |
Valeur de SessionLevel à partir du journal brut, mise en forme en tant que libellé. |
SourceIp |
principal.ip, principal.asset.ip |
Valeur de SourceIp à partir du journal brut. |
src |
principal.ip, principal.asset.ip |
Valeur de src à partir du journal brut. |
SsoType |
target.resource.attribute.labels |
Valeur de SsoType à partir du journal brut, mise en forme en tant que libellé. |
STATUS_CODE |
network.http.response_code |
Valeur de STATUS_CODE à partir du journal brut. |
Status |
security_result.action, security_result.action_details |
Valeur de Status du journal brut, transformée en ALLOW ou BLOCK, ou utilisée comme détails de l'action pour LoginEventStream. |
Subject |
target.resource.name |
Valeur de Subject à partir du journal brut. |
TargetUrl |
- | Non mappé à l'objet IDM. |
TIMESTAMP |
metadata.collected_timestamp |
Valeur de TIMESTAMP à partir du journal brut. |
TIMESTAMP_DERIVED |
timestamp |
Valeur de TIMESTAMP_DERIVED à partir du journal brut. |
TlsProtocol |
network.tls.version_protocol |
Valeur de TlsProtocol à partir du journal brut. |
URI |
target.url |
Valeur de URI à partir du journal brut. |
USER_AGENT |
network.http.user_agent |
Valeur de USER_AGENT à partir du journal brut. |
USER_ID |
principal.user.userid |
Valeur de USER_ID à partir du journal brut. |
USER_ID_DERIVED |
principal.user.product_object_id, target.resource.attribute.labels |
Valeur de USER_ID_DERIVED à partir du journal brut. |
UserId |
principal.user.userid |
Valeur de UserId à partir du journal brut. |
USER_TYPE |
target.resource.attribute.labels |
Valeur de USER_TYPE à partir du journal brut, mise en forme en tant que libellé. |
Username |
principal.user.userid, principal.user.email_addresses, target.user.email_addresses |
Valeur de Username à partir du journal brut, ou src_email pour différents événements, ou IdentityUsed pour IdentityProviderEventStore, ou data.properties.Email.str pour Search et SearchAlert, ou data.properties.Username.str pour LoginAsEventStream et LoginEventStream. |
UserType |
target.resource.attribute.labels |
Valeur de UserType à partir du journal brut, mise en forme en tant que libellé. |
usrName |
principal.user.userid, principal.user.email_addresses, target.user.email_addresses |
Valeur de usrName à partir du journal brut. |
VerificationMethod |
target.resource.attribute.labels |
Valeur de VerificationMethod à partir du journal brut, mise en forme en tant que libellé. |
| Logique de l'analyseur | metadata.event_type |
Dérivé des champs event_id et operation, ou défini sur "USER_LOGIN" pour LoginEventStream, "USER_LOGOUT" pour Logout et LogoutEvent, "USER_RESOURCE_UPDATE_CONTENT" pour divers événements, "USER_RESOURCE_UPDATE_PERMISSIONS" pour PlatformEncryption, "RESOURCE_READ" pour QueuedExecution, ApexExecution, LightningInteraction, LightningPerformance, LightningPageView, URI, RestApi, API, AuraRequest, ApexCallout, OneCommerceUsage, Sites, MetadataApiOperation, OneCommerceUsage, VisualforceRequest, Dashboard, Search, ListViewEvent, "RESOURCE_CREATION" pour UriEvent et TimeBasedWorkflow avec Operation défini sur "Create" ou "INSERT", "RESOURCE_WRITTEN" pour UriEvent et LightningUriEvent avec Operation défini sur "Update", "RESOURCE_DELETION" pour UriEvent avec Operation défini sur "Delete" ou "ROLLBACK", "USER_UNCATEGORIZED" pour SetupAuditTrail et AuditTrail, "USER_CHANGE_PASSWORD" pour SetupAuditTrail avec operation défini sur "namedCredentialEncryptedFieldChange", "GENERIC_EVENT" pour ApiEventStream et LightningUriEventStream, ou en fonction de la présence du réseau et du principal. |
| Logique de l'analyseur | metadata.ingestion_labels |
Libellés indiquant la source de l'événement : "Fichier journal des événements", "Surveillance des événements en temps réel" ou "SetupAuditTrail". |
| Logique de l'analyseur | metadata.log_type |
Toujours défini sur "SALESFORCE". |
| Logique de l'analyseur | metadata.product_name |
Toujours défini sur "SALESFORCE". |
| Logique de l'analyseur | metadata.vendor_name |
Toujours défini sur "SALESFORCE". |
| Logique de l'analyseur | metadata.url_back_to_product |
Construit à partir de différents champs tels que LoginUrl, attributes.url, data.properties.PageUrl.str et data.properties.LoginUrl.str. |
| Logique de l'analyseur | network.application_protocol |
Définissez la valeur sur "HTTPS" si le champ uri commence par "http". |
| Logique de l'analyseur | network.http.referral_url |
Extrait du champ user_agent s'il contient "Referer=". |
| Logique de l'analyseur | network.http.response_code |
Dérivé de request_status pour divers événements. |
| Logique de l'analyseur | network.http.user_agent |
Valeur de user_agent à partir du journal brut, ou de data.properties.UserAgent.str pour ApiEventStream et LoginEventStream, ou à partir des événements Sites, ou "User-Agent" à partir des événements Sites. |
| Logique de l'analyseur | network.session_id |
Valeur de session_key ou SESSION_KEY à partir du journal brut, ou construite à partir d'autres champs tels que LoginKey ou AuthSessionId. |
| Logique de l'analyseur | network.tls.version |
Valeur de tls_protocol à partir du journal brut ou de data.properties.TlsProtocol.str pour LoginEventStream. |
| Logique de l'analyseur | principal.application |
Valeur de application à partir du journal brut, ou "Salesforce pour Outlook" pour les événements "Connexion : succès", ou "Insights" pour les événements "Connexion : succès" sans application, ou extraite de device_platform pour les événements Lightning. |
| Logique de l'analyseur | principal.asset.hostname |
Valeur de client_ip s'il s'agit d'un nom d'hôte. |
| Logique de l'analyseur | principal.asset.ip |
La valeur de client_ip, src_ip, SourceIp ou CLIENT_IP s'il s'agit d'une adresse IP. |
| Logique de l'analyseur | principal.hostname |
Valeur de client_ip s'il s'agit d'un nom d'hôte. |
| Logique de l'analyseur | principal.ip |
La valeur de client_ip, src_ip, SourceIp ou CLIENT_IP s'il s'agit d'une adresse IP. |
| Logique de l'analyseur | principal.labels |
Libellés construits à partir de différents champs tels que FederationIdentifier, ApiType, OrgId, channel. |
| Logique de l'analyseur | principal.location.city |
Valeur de geoip_src.city_name, City ou LoginGeo.City à partir du journal brut. |
| Logique de l'analyseur | principal.location.country_or_region |
Valeur geoip_src.country_name, Country, LoginGeo.Country ou client_geo du journal brut. |
| Logique de l'analyseur | principal.location.region_latitude |
Valeur de data.properties.LoginLatitude.number à partir du journal brut. |
| Logique de l'analyseur | principal.location.region_longitude |
Valeur de data.properties.LoginLongitude.number à partir du journal brut. |
| Logique de l'analyseur | principal.location.state |
Valeur de geoip_src.region_name à partir du journal brut. |
| Logique de l'analyseur | principal.platform |
Valeur de Platform, OsName ou os_name du journal brut, ou "WINDOWS" pour LoginEventStream avec Platform contenant "Windows". |
| Logique de l'analyseur | principal.platform_version |
Valeur de OsVersion ou os_version à partir du journal brut, ou extraite de Platform pour LoginEventStream avec Platform contenant "Windows". |
| Logique de l'analyseur | principal.resource.attribute.labels |
Libellés construits à partir de différents champs tels que CreatedById, ApiVersion, LogFile, LogFileContentType, LogFileLength. |
| Logique de l'analyseur | principal.resource.name |
Valeur de Browser ou browser_name à partir du journal brut, ou "Java (Salesforce.com)" pour LoginHistory avec ApiType défini sur "SOAP Partner". |
| Logique de l'analyseur | principal.resource.type |
Extrait de device_platform pour les événements Lightning, ou "Navigateur" pour LoginAsEvent et LoginAsEventStream. |
| Logique de l'analyseur | principal.url |
Valeur de LoginUrl à partir du journal brut. |
| Logique de l'analyseur | principal.user.email_addresses |
Valeur usrName, Username, src_email, IdentityUsed, data.properties.Username.str ou data.properties.Email.str du journal brut. |
| Logique de l'analyseur | principal.user.product_object_id |
Valeur attrs.USER_ID_DERIVED ou data.properties.USER_ID_DERIVED.str du journal brut. |
| Logique de l'analyseur | principal.user.userid |
Valeur usrName, Username, user_id, UserId, USER_ID, Id, LoginKey, CreatedByContext, data.properties.Username.str, data.properties.USER_ID.str ou data.properties.LoginKey.str du journal brut. |
| Logique de l'analyseur | security_result.action |
Dérivé de Status, OperationStatus, ErrorCode, action ou operation_status du journal brut, transformé en ALLOW ou BLOCK. |
| Logique de l'analyseur | security_result.action_details |
Valeur de Status à partir du journal brut pour LoginEventStream. |
| Logique de l'analyseur | security_result.description |
Valeur de LoginType, logintype, Operation, Action ou Display du journal brut. |
| Logique de l'analyseur | security_result.rule_name |
Valeur Policy ou rule_name du journal brut. |
| Logique de l'analyseur | security_result.summary |
Construit à partir de NewValue et OldValue ou REQUEST_STATUS ou Section ou forecastcategory à partir du journal brut. |
| Logique de l'analyseur | target.administrative_domain |
Valeur ORGANIZATION_ID, DelegatedOrganizationId, organization_id ou data.properties.OrgName.str du journal brut. |
| Logique de l'analyseur | target.application |
Valeur de Application, app_name, ApiType, Name ou data.properties.Application.str du journal brut. |
| Logique de l'analyseur | target.asset.hostname |
Valeur de target_hostname extraite du champ uri. |
| Logique de l'analyseur | target.asset.ip |
Valeur de data.properties.CLIENT_IP.str à partir du journal brut. |
| Logique de l'analyseur | target.asset_id |
Construit à partir de device_id ou REQUEST_ID. |
| Logique de l'analyseur | target.file.mime_type |
Valeur de file_type à partir du journal brut. |
| Logique de l'analyseur | target.file.size |
Valeur de size_bytes à partir du journal brut. |
| Logique de l'analyseur | target.hostname |
Valeur de target_hostname extraite du champ uri. |
| Logique de l'analyseur | target.process.command_line |
Valeur de query_exec, Query ou data.properties.Query.str à partir du journal brut. |
| Logique de l'analyseur | target.process.pid |
Valeur de job_id à partir du journal brut. |
| Logique de l'analyseur | target.resource.attribute.labels |
Étiquettes construites à partir de différents champs tels que 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 et SessionLevel. |
| Logique de l'analyseur | target.resource.id |
Valeur REQUEST_ID, RecordId, caseid, leadid, contactid, opportunityid ou accountid du journal brut. |
| Logique de l'analyseur | target.resource.name |
Valeur QueriedEntities, resource_name, component_name, DATASET_IDS, field, StageName ou Subject du journal brut. |
| Logique de l'analyseur | target.resource.product_object_id |
Valeur de REQUEST_ID à partir du journal brut. |
| Logique de l'analyseur | target.resource.resource_type |
Définissez sur "ACCESS_POLICY" pour ApexCallout et PlatformEncryption, sur "DATABASE" pour ApexTrigger, sur "FILE" pour ContentTransfer ou sur "TABLE" pour ApiEvent. |
| Logique de l'analyseur | target.resource.type |
Défini sur "BATCH" pour QueuedExecution et ApexExecution, sur "FILE" pour ContentTransfer, sur "DATABASE_TRIGGER" pour ApexTrigger, ou sur "Case", "Lead", "Contact", "Opportunity" ou "Account" en fonction de la présence des champs d'ID correspondants. |
| Logique de l'analyseur | target.url |
Valeur de LoginUrl, URI, attributes.url, login_url ou uri du journal brut. |
| Logique de l'analyseur | target.user.email_addresses |
Valeur de Username, attrs.usrName ou email_address à partir du journal brut. |
| Logique de l'analyseur | target.user.user_display_name |
Valeur de target_user_display_name, user_name ou username à partir du journal brut. |
| Logique de l'analyseur | target.user.userid |
Valeur de target_user_name, data.properties.UserId.str ou data.properties.CreatedById.str à partir du journal brut. |
| Logique de l'analyseur | extensions.auth.auth_details |
Définissez la valeur sur "ACTIVE" si Status n'est pas "Success". Sinon, définissez la valeur sur "UNKNOWN_AUTHENTICATION_STATUS". |
| Logique de l'analyseur | extensions.auth.mechanism |
Définissez la valeur sur "REMOTE" pour les événements "Connexion : succès" et "Connexion" avec logintype contenant "Remote", ou sur "USERNAME_PASSWORD" pour LoginEventStream, ou sur "MECHANISM_OTHER" pour les événements avec login_url, ou sur "AUTHTYPE_UNSPECIFIED" pour les événements "Connexion : succès" et "Déconnexion". |
| Logique de l'analyseur | extensions.auth.type |
Définissez la valeur sur "SSO" pour Login, Logout, LogoutEvent, LoginAs, IdentityProviderEventStore, LoginHistory, LoginAsEvent avec LoginType défini sur "SAML Sfdc Initiated SSO", ou "AUTHTYPE_UNSPECIFIED" pour Login: Success, Logout, LoginAsEvent avec LoginType défini sur "Application". |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.