Collecter les journaux Salesforce
Ce document explique comment ingérer des journaux Salesforce dans Google Security Operations à l'aide de deux méthodes : l'API tierce ou Amazon AppFlow avec Amazon S3. 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)
Pour la méthode d'API tierce (option 1) :
- Licence Salesforce Shield Event Monitoring ou module complémentaire Event Monitoring (requis pour un accès complet à EventLogFile)
- Possibilité de générer et de gérer des certificats X.509 et des paires de clés RSA
Pour Amazon AppFlow avec la méthode S3 (option 2) :
- 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 entre Google SecOps et Salesforce à l'aide du flux OAuth 2.0 JWT Bearer pour l'authentification de serveur à serveur.
Prérequis pour cette méthode :
- Licence Salesforce Shield Event Monitoring ou module complémentaire Event Monitoring (requis pour un accès complet à EventLogFile).
- Accès administrateur système dans Salesforce.
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 jeton 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 SecOps 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 des 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
SecOps Integration. - Adresse e-mail : saisissez une adresse e-mail.
- Nom d'utilisateur : saisissez un nom d'utilisateur unique (par exemple,
secops-integration@yourcompany.com). - 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 Google SecOps Integration 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 avec le paramètre grant_type :
- Production :
https://login.salesforce.com/services/oauth2/token?grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer - Bac à sable :
https://test.salesforce.com/services/oauth2/token?grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer - Domaine personnalisé :
https://yourdomain.my.salesforce.com/services/oauth2/token?grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
- 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 avec le paramètre grant_type :
- 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 : 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 une utilisation ultérieure.
- Cliquez sur OK.
- Sélectionnez l'onglet Autorisations.
- Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
- Sélectionnez Ajouter des autorisations.
- Sélectionnez Joindre directement des règles.
- Recherchez et sélectionnez la règle AmazonS3FullAccess.
- 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 avez Event Monitoring 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 tous les champs directement 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 + 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 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 : saisissez l'URI du bucket (par exemple,
s3://salesforce-secops-logs/).- Remplacez
salesforce-secops-logspar le nom réel de votre bucket.
- Remplacez
Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
- Jamais : ne supprime jamais aucun fichier après les transferts.
- En cas de réussite : supprime tous les fichiers et répertoires vides après un transfert réussi.
- Âge maximal des fichiers : incluez 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.
- 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.
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 |
La 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 |
La 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 des événements Sites, ou "User-Agent" 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 de geoip_src.country_name, Country, LoginGeo.Country ou client_geo à partir 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 |
La 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 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 de 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 de ORGANIZATION_ID, DelegatedOrganizationId, organization_id ou data.properties.OrgName.str à partir 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 sur "UNKNOWN_AUTHENTICATION_STATUS". |
| Logique de l'analyseur | extensions.auth.mechanism |
Définissez la valeur sur "REMOTE" pour les événements "Connexion : réussie" 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 : réussie" 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.