收集 Salesforce 日志

支持的平台:

本文档介绍了如何使用两种方法将 Salesforce 日志注入到 Google Security Operations:Amazon AppFlow 与 Amazon S3第三方 API。解析器可处理 LEEF、CSV 和 JSON 格式的日志。它会提取字段,执行特定于格式的处理(处理 LEEF 键值对、CSV 列和 JSON 结构),将它们映射到 UDM,并使用元数据和派生字段丰富数据。解析器还会处理各种 Salesforce 事件类型,针对登录、退出和其他操作应用特定逻辑,对事件进行分类,并设置适当的 UDM 事件类型。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例
  • 对 Salesforce 的特权访问权限(系统管理员或同等权限)

选项 1:第三方 API 方法

  • Salesforce Shield 事件监控许可或事件监控插件
  • 能够生成和管理 X.509 证书和 RSA 密钥对

方案 2:使用 S3 方法的 Amazon AppFlow

  • 对 AWS 的特权访问权限
  • 您的组织使用的是 Salesforce 企业版、无限版或绩效版

重要许可注意事项:如果没有 Salesforce Shield 事件监控,对 EventLogFile 的 API 访问权限仅限于 7 种基本事件类型(登录、注销、API 总使用量、CORS 违规记录、CSP 违规、主机名重定向、Apex 意外异常),保留期限为 1 天。大多数未使用 Shield 的组织应使用 Amazon AppFlow 方法(选项 2)。

选项 1:使用第三方 API (OAuth JWT Bearer) 配置 Salesforce Direct API 集成

此方法使用 OAuth 2.0 JWT 不记名令牌流程建立从 Google SecOps 到 Salesforce 的直接 API 连接,以进行服务器到服务器的身份验证。

此方法的前提条件

  • Salesforce Shield 事件监控许可或事件监控插件(需要此许可或插件才能全面访问 EventLogFile)
  • Salesforce 中的系统管理员访问权限
  • 能够生成和管理 X.509 证书和 RSA 密钥对

生成 RSA 密钥对和 X.509 证书

您需要 RSA 私钥和相应的 X.509 证书才能进行 JWT 不记名身份验证。

  1. 生成 RSA 私钥:

    openssl genrsa -out salesforce_jwt_private.key 2048
    
  2. 生成证书签名请求 (CSR):

    openssl req -new -key salesforce_jwt_private.key -out salesforce_jwt.csr
    
  3. 生成自签名证书(有效期为 1 年):

    openssl x509 -req -days 365 -in salesforce_jwt.csr -signkey salesforce_jwt_private.key -out salesforce_jwt.crt
    
  4. 请妥善保存私钥。您需要此信息才能配置 Google SecOps Feed。

创建采用 JWT Bearer 流程的 Salesforce 关联的应用

  1. 以系统管理员身份登录 Salesforce
  2. 依次前往设置 > 应用 > 应用管理器
  3. 点击 New Connected App
  4. 提供以下配置详细信息:
    • Connected App Name:输入一个名称(例如 Google Security Operations Integration)。
    • API Name:系统会根据关联的应用名称自动填充。
    • 联系电子邮件地址:输入您的电子邮件地址。
  5. API(启用 OAuth 设置)部分:
    • 选择 Enable OAuth Settings(启用 OAuth 设置)。
    • Callback 网址:输入 https://login.salesforce.com/services/oauth2/callback(此网址不用于 JWT 流程,但必须输入)。
    • 选择使用数字签名
    • 点击 Choose File(选择文件),然后上传您之前生成的 X.509 证书 (salesforce_jwt.crt)。
    • Selected OAuth Scopes:添加以下范围:
      • Access and manage your data (api)(访问和管理您的数据(api))
      • Perform requests on your behalf at any time (refresh_token, offline_access)
    • Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows(为受支持的授权流程启用必需的用于代码交换的证明密钥 (PKCE) 扩展程序):清除此选项。
  6. 点击保存
  7. 点击警告消息中的继续
  8. 在“关联的应用”详情页面上,记下使用方密钥。此值将用作 Google SecOps 中的 JWT 声明颁发者
  9. 依次点击管理 > 修改政策
  10. OAuth 政策部分中:
    • 允许的用户:选择管理员批准的用户已获得预先授权
    • IP 放宽:选择放宽 IP 限制
  11. 点击保存

在 Salesforce 中创建和配置集成用户

  1. 依次前往设置 > 用户 > 用户
  2. 点击 New User(新用户)。
  3. 提供以下配置详细信息:
    • First Name:输入 Google
    • Last Name:输入 Google SecOps Integration
    • 电子邮件地址:输入电子邮件地址。
    • 用户名:输入一个唯一的用户名。
    • 用户许可:选择 Salesforce
    • 个人资料:选择系统管理员,或创建具有 API 访问权限的自定义个人资料。
  4. 点击保存
  5. 请记下用户名,确保与您输入的内容完全一致。此值将用作 Google SecOps 中的 JWT 声明主题

将集成用户分配给关联的应用

  1. 依次前往设置 > 应用 > 关联的应用 > 管理关联的应用
  2. 点击您创建的 Google Security Operations 集成关联的应用。
  3. 点击管理 > 管理配置文件管理权限集
  4. 选择分配给集成用户的配置文件或权限集(例如系统管理员)。
  5. 点击保存

向集成用户授予 API 和事件监控权限

  1. 依次前往设置 > 用户 > 权限集
  2. 点击 New(新建)。
  3. 提供以下配置详细信息:
    • 标签:输入 Event Monitoring API Access
    • API 名称:系统自动填充。
  4. 点击保存
  5. 在“权限集”详情页面上:
    • 点击系统权限
    • 点击修改
    • 检查以下权限:
      • API 已启用
      • 查看事件日志文件
      • 查看所有数据(可选,但建议使用,以便获得全面的访问权限)
    • 点击保存
  6. 依次点击管理分配 > 添加分配
  7. 选择您之前创建的集成用户。
  8. 依次点击分配 > 完成

在 Google SecOps 中配置 Feed 以通过 API 注入 Salesforce 日志

  1. 依次前往 SIEM 设置 > Feed
  2. 点击 + 添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称(例如 Salesforce logs)。
  5. 选择第三方 API 作为来源类型
  6. 选择 Salesforce 作为日志类型
  7. 点击下一步
  8. 从下拉菜单中选择 OAuth JWT 授权
  9. 为以下输入参数指定值:
    • OAuth JWT 端点:输入 Salesforce OAuth 令牌端点:
      • 制作https://login.salesforce.com/services/oauth2/token
      • 沙盒https://test.salesforce.com/services/oauth2/token
      • 自定义网域https://yourdomain.my.salesforce.com/services/oauth2/token
    • JWT 声明签发者:输入关联应用中的使用方密钥
    • JWT 声明主题:输入集成用户的用户名
    • JWT 声明受众群体:输入 Salesforce 登录基本网址:
      • 制作https://login.salesforce.com
      • 沙盒https://test.salesforce.com
    • RSA 私钥:粘贴 RSA 私钥 (salesforce_jwt_private.key) 的全部内容,包括 -----BEGIN PRIVATE KEY----------END PRIVATE KEY----- 行。
  10. 指定其他参数:
    • 资产命名空间资产命名空间
    • 注入标签:要应用于此 Feed 中事件的标签。
  11. 点击下一步
  12. 最终确定界面中查看新的 Feed 配置,然后点击提交

选项 2:使用 Amazon AppFlow 和 S3 配置 Salesforce 日志导出

此方法使用 Amazon AppFlow 从 Salesforce 中提取数据并将其存储在 Amazon S3 中,然后 Google SecOps 会提取这些数据。

为 Google SecOps 配置 AWS S3 存储桶和 IAM

  1. 按照以下用户指南创建 Amazon S3 存储桶创建存储桶
  2. 保存存储桶名称区域以供日后参考(例如 salesforce-secops-logs)。
  3. 按照以下用户指南创建用户创建 IAM 用户
  4. 选择创建的用户
  5. 选择安全凭据标签页。
  6. 访问密钥部分中,点击创建访问密钥
  7. 选择第三方服务作为使用情形
  8. 点击下一步
  9. 可选:添加说明标记。
  10. 点击创建访问密钥
  11. 点击下载 CSV 文件,保存访问密钥不公开的访问密钥以供日后参考。
  12. 点击完成
  13. 选择权限标签页。
  14. 权限政策部分中,点击添加权限
  15. 选择添加权限
  16. 选择直接附加政策
  17. 搜索 AmazonS3FullAccess 政策。
  18. 选择相应政策。
  19. 点击下一步
  20. 点击添加权限

配置 Amazon AppFlow

  1. 打开 Amazon AppFlow 控制台
  2. 点击创建流程
  3. 提供以下配置详细信息:
    • 流程名称:输入一个名称(例如 Salesforce-to-S3-SecOps)。
    • 流程说明:可选说明。
  4. 点击下一步
  5. 对于来源详细信息
    • 数据源名称:选择 Salesforce
    • 选择 Salesforce 连接:点击创建新连接
    • 系统随即会显示一个 Salesforce 登录窗口。使用您的 Salesforce 凭据登录。
    • 在系统提示时授予访问权限。
    • Salesforce 对象:选择要转移的对象(例如,如果您有事件监控,则选择 EventLogFile,或者选择其他审核对象)。
  6. 点击下一步
  7. 目的地详细信息部分:
    • 目标名称:选择 Amazon S3
    • 存储桶详细信息:选择您之前创建的 S3 存储桶。
    • S3 存储桶前缀:可选前缀(例如 salesforce-logs/)。
  8. 点击下一步
  9. 对于流触发器
    • 选择按时间表运行
    • 开始时间:设置首选开始时间。
    • 重复:根据您的需求选择每小时每天
  10. 点击下一步
  11. 对于地图数据字段
    • 选择直接映射所有字段,也可以指定要映射的字段。
    • 如果手动进行映射,请选择要转移的字段。
  12. 点击下一步
  13. 对于添加过滤条件(可选):
    • 添加任意过滤条件以限制传输的数据。
  14. 点击下一步
  15. 检查配置,然后点击创建流程
  16. 点击激活流程以开始执行预定转移。

在 Google SecOps 中配置 Feed 以注入 Salesforce 日志

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称,例如 Salesforce 日志
  5. 选择 Amazon S3 V2 作为来源类型
  6. 选择 Salesforce 作为日志类型
  7. 点击下一步
  8. 为以下输入参数指定值:

    • S3 URI:存储桶 URI。s3://BUCKET_NAME 替换以下内容:
      • BUCKET_NAME:相应存储桶的名称。
    • 来源删除选项:根据您的偏好选择删除选项。

    • 文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天。

    • 访问密钥 ID:有权访问 S3 存储桶的用户访问密钥。

    • 私有访问密钥:有权访问 S3 存储桶的用户私有密钥。

  9. 点击下一步

  10. 最终确定界面中查看新的 Feed 配置,然后点击提交

支持的 Salesforce 日志格式

Salesforce 解析器支持 KV (LEEF) 和 CSV 格式的日志。

支持的 Salesforce 示例日志

  • 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/A
    
  • CSV

    "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
    

UDM 映射表

日志字段 UDM 映射 逻辑
Account.Name target.resource.name 原始日志中的 Account.Name 值。
AccountId target.resource.id 原始日志中的 AccountId 值。
Action security_result.description 原始日志中的 Action 值。
AdditionalInfo - 未映射到 IDM 对象。
ApiType target.application 原始日志中的 ApiType 值。
ApiVersion - 未映射到 IDM 对象。
Application principal.application 原始日志中的 Application 值,对于 LoginAsEvent 为“浏览器”,对于 LoginEvent 为“集成 JWT 令牌”,对于具有对象类型 LoginHistory 的 LoginHistory 为“SfdcSiqActivityPlatform”,对于 ApiEvent 为“N/A”,对于 LoginAsEventStream 为“浏览器”。
attributes.url target.url 原始日志中的 attributes.url 值,或原始日志中各种事件类型的特定网址。
attributes.type metadata.product_event_type 原始日志中的 attributes.type 值。
AuthSessionId network.session_id 原始日志中的 AuthSessionId 值。
Browser principal.resource.name 原始日志中的 Browser 值;如果原始日志中没有 BrowserApplication 为“Insights”,则为“Unknown”;如果 LoginHistory 的 ApiType 为“SOAP Partner”,则为“Java (Salesforce.com)”;如果 LoginHistory 的 Application 为“SfdcSiqActivityPlatform”,则为“Unknown”;对于 LoginAsEventStream,则为 data.properties.Browser.str。
Case.Subject target.resource.name 原始日志中的 Case.Subject 值。
CaseId target.resource.id 原始日志中的 CaseId 值。
cat metadata.product_event_type 原始日志中的 cat 值。
City principal.location.city 原始日志中的 City 值,或 LoginHistory 中的 LoginGeo.City 值。
Client principal.labels 原始日志中的 Client 值,格式为标签。
CLIENT_IP principal.ipprincipal.asset.ip 原始日志中的 CLIENT_IP 值。
ClientVersion - 未映射到 IDM 对象。
CipherSuite network.tls.cipher 原始日志中的 CipherSuite 值。
ColumnHeaders principal.labels 原始日志中的 ColumnHeaders 值,格式为标签。
ConnectedAppId principal.labels 原始日志中的 ConnectedAppId 值,格式为标签。
Contact.Name target.resource.name 原始日志中的 Contact.Name 值。
ContactId target.resource.id 原始日志中的 ContactId 值。
Country principal.location.country_or_region 原始日志中的 Country 值,或 LoginHistory 的 LoginGeo.Country
CreatedByContext principal.user.userid 原始日志中的 CreatedByContext 值。
CreatedById principal.resource.attribute.labels 原始日志中的 CreatedById 值,格式为标签。
CreatedDate metadata.collected_timestamp 原始日志中的 CreatedDate 值,如果未提供,则为当前时间戳。
CPU_TIME target.resource.attribute.labels 原始日志中的 CPU_TIME 值,格式为标签。
data - 包含单独提取和映射的各种字段。
DATASET_IDS target.resource.name 原始日志中的 DATASET_IDS 值。
DelegatedOrganizationId target.administrative_domain 原始日志中的 DelegatedOrganizationId 值。
DelegatedUsername observer.user.userid 原始日志中的 DelegatedUsername 值。
Description metadata.description 原始日志中的 Description 值。
DevicePlatform principal.resource.type 原始日志中的 DevicePlatform 值,经过解析以提取资源类型。
Display metadata.description 原始日志中的 Display 值。
DOWNLOAD_FORMAT target.resource.attribute.labels 原始日志中的 DOWNLOAD_FORMAT 值,格式为标签。
Duration target.resource.attribute.labels 原始日志中的 Duration 值,格式为标签。
ENTITY_NAME target.resource.attribute.labels 原始日志中的 ENTITY_NAME 值,格式为标签。
ErrorCode security_result.action 原始日志中的 ErrorCode 值,转换为 ALLOW 或 BLOCK。
EventDate timestamp 原始日志中的 EventDate 值,如果可用,则为 data.properties.TIMESTAMP_DERIVED.str,如果可用,则为 data.properties.TIMESTAMP_DERIVED_FIRST.str,如果可用,则为 @timestamp,如果可用,则为 created_date,如果可用,则为 timestamp,对于 LoginHistory,则为 LoginTime
EventIdentifier metadata.product_log_id 原始日志中的 EventIdentifier 值。
EventType metadata.product_event_type 原始日志中的 EventType 值。
Id principal.user.userid 原始日志中的 Id 值,或 SetupAuditTrail 和其他事件的 metadata.product_log_id 值。
IdentityUsed principal.user.email_addresses 原始日志中的 IdentityUsed 值。
Lead.Name target.resource.name 原始日志中的 Lead.Name 值。
LeadId target.resource.id 原始日志中的 LeadId 值。
LoginAsCategory - 未映射到 IDM 对象。
LoginGeo.Country principal.location.country_or_region 原始日志中的 LoginGeo.Country 值。
LoginHistoryId - 未映射到 IDM 对象。
LoginKey principal.user.useridnetwork.session_id 原始日志中的 LoginKey 值,或 SetupAuditTrail 的 CreatedByContext 值。
LoginTime timestamp 原始日志中的 LoginTime 值。
LoginType security_result.description 原始日志中的 LoginType 值;如果 LoginHistory 的 ApiType 为“SOAP Partner”,则为“Other Apex API”;如果 LoginHistory 的 Application 为“SfdcSiqActivityPlatform”,则为“Remote Access 2.0”。
LoginUrl target.urlprincipal.url 原始日志中的 LoginUrl 值。
LogFile principal.resource.attribute.labels 原始日志中的 LogFile 值,格式为标签。
LogFileContentType principal.resource.attribute.labels 原始日志中的 LogFileContentType 值,格式为标签。
LogFileLength principal.resource.attribute.labels 原始日志中的 LogFileLength 值,格式为标签。
Message - 未映射到 IDM 对象。
METHOD network.http.method 原始日志中的 METHOD 值。
Name target.application 原始日志中的 Name 值。
NewValue - OldValue 结合使用以生成 security_result.summary
NUMBER_FIELDS target.resource.attribute.labels 原始日志中的 NUMBER_FIELDS 值,格式为标签。
OldValue - NewValue 结合使用以生成 security_result.summary
Operation security_result.descriptiontarget.resource.attribute.labels 原始日志中的 Operation 值,或 SetupAuditTrail 的 Display 值。
OperationStatus security_result.action 原始日志中的 OperationStatus 值,转换为 ALLOW 或 BLOCK。
ORGANIZATION_ID target.administrative_domain 原始日志中的 ORGANIZATION_ID 值。
OsName principal.platform 原始日志中的 OsName 值。
OsVersion principal.platform_version 原始日志中的 OsVersion 值。
Platform principal.platform 原始日志中的 Platform 值,或 LightningUriEventStream 中的 data.properties.OsName.str 值,或 LoginEventStream 中的 data.properties.OsName.str 值。
QueriedEntities target.resource.nameprincipal.labels 原始日志中的 QueriedEntities 值,或 UriEvent 和 ApiEvent 的 component_name 值。
Query target.process.command_lineprincipal.labels 原始日志中的 Query 值。
RecordId target.resource.id 原始日志中的 RecordId 值。
Records principal.labels 原始日志中的 Records 值,格式为标签。
REQUEST_ID metadata.product_log_idtarget.resource.product_object_id 原始日志中的 REQUEST_ID 值。
REQUEST_SIZE network.sent_bytes 原始日志中的 REQUEST_SIZE 值。
REQUEST_STATUS security_result.summary 原始日志中的 REQUEST_STATUS 值。
RESPONSE_SIZE network.received_bytes 原始日志中的 RESPONSE_SIZE 值。
RowsProcessed target.resource.attribute.labels 原始日志中的 RowsProcessed 值,格式为标签。
RUN_TIME target.resource.attribute.labels 原始日志中的 RUN_TIME 值,格式为标签。
SamlEntityUrl - 未映射到 IDM 对象。
SdkAppType - 未映射到 IDM 对象。
SdkAppVersion - 未映射到 IDM 对象。
SdkVersion - 未映射到 IDM 对象。
Section security_result.summary 原始日志中的 Section 值。
SessionKey network.session_id 原始日志中的 SessionKey 值。
SessionLevel target.resource.attribute.labels 原始日志中的 SessionLevel 值,格式为标签。
SourceIp principal.ipprincipal.asset.ip 原始日志中的 SourceIp 值。
src principal.ipprincipal.asset.ip 原始日志中的 src 值。
SsoType target.resource.attribute.labels 原始日志中的 SsoType 值,格式为标签。
STATUS_CODE network.http.response_code 原始日志中的 STATUS_CODE 值。
Status security_result.actionsecurity_result.action_details 原始日志中的 Status 值,转换为 ALLOW 或 BLOCK,或用作 LoginEventStream 的操作详细信息。
Subject target.resource.name 原始日志中的 Subject 值。
TargetUrl - 未映射到 IDM 对象。
TIMESTAMP metadata.collected_timestamp 原始日志中的 TIMESTAMP 值。
TIMESTAMP_DERIVED timestamp 原始日志中的 TIMESTAMP_DERIVED 值。
TlsProtocol network.tls.version_protocol 原始日志中的 TlsProtocol 值。
URI target.url 原始日志中的 URI 值。
USER_AGENT network.http.user_agent 原始日志中的 USER_AGENT 值。
USER_ID principal.user.userid 原始日志中的 USER_ID 值。
USER_ID_DERIVED principal.user.product_object_idtarget.resource.attribute.labels 原始日志中的 USER_ID_DERIVED 值。
UserId principal.user.userid 原始日志中的 UserId 值。
USER_TYPE target.resource.attribute.labels 原始日志中的 USER_TYPE 值,格式为标签。
Username principal.user.useridprincipal.user.email_addressestarget.user.email_addresses 原始日志中的 Username 值,或各种事件的 src_email 值,或 IdentityProviderEventStore 的 IdentityUsed 值,或 Search 和 SearchAlert 的 data.properties.Email.str 值,或 LoginAsEventStream 和 LoginEventStream 的 data.properties.Username.str 值。
UserType target.resource.attribute.labels 原始日志中的 UserType 值,格式为标签。
usrName principal.user.useridprincipal.user.email_addressestarget.user.email_addresses 原始日志中的 usrName 值。
VerificationMethod target.resource.attribute.labels 原始日志中的 VerificationMethod 值,格式为标签。
解析器逻辑 metadata.event_type 根据 event_idoperation 字段派生,或者对于 LoginEventStream 设置为“USER_LOGIN”,对于 Logout 和 LogoutEvent 设置为“USER_LOGOUT”,对于各种事件设置为“USER_RESOURCE_UPDATE_CONTENT”,对于 PlatformEncryption 设置为“USER_RESOURCE_UPDATE_PERMISSIONS”,对于 QueuedExecution、ApexExecution、LightningInteraction、LightningPerformance、LightningPageView、URI、RestApi、API、AuraRequest、ApexCallout、OneCommerceUsage、Sites、MetadataApiOperation、OneCommerceUsage、VisualforceRequest、Dashboard、Search、ListViewEvent 设置为“RESOURCE_READ”,对于 Operation 为“Create”或“INSERT”的 UriEvent 和 TimeBasedWorkflow 设置为“RESOURCE_CREATION”,对于 Operation 为“Update”的 UriEvent 和 LightningUriEvent 设置为“RESOURCE_WRITTEN”,对于 Operation 为“Delete”或“ROLLBACK”的 UriEvent 设置为“RESOURCE_DELETION”,对于 SetupAuditTrail 和 AuditTrail 设置为“USER_UNCATEGORIZED”,对于 operation 为“namedCredentialEncryptedFieldChange”的 SetupAuditTrail 设置为“USER_CHANGE_PASSWORD”,对于 ApiEventStream 和 LightningUriEventStream 设置为“GENERIC_EVENT”,或者根据网络和委托人存在情况派生。
解析器逻辑 metadata.ingestion_labels 用于指明事件来源的标签,可以是“事件日志文件”“实时事件监控”或“SetupAuditTrail”。
解析器逻辑 metadata.log_type 始终设置为“SALESFORCE”。
解析器逻辑 metadata.product_name 始终设置为“SALESFORCE”。
解析器逻辑 metadata.vendor_name 始终设置为“SALESFORCE”。
解析器逻辑 metadata.url_back_to_product 由各种字段(例如 LoginUrlattributes.urldata.properties.PageUrl.strdata.properties.LoginUrl.str)构建而成。
解析器逻辑 network.application_protocol 如果 uri 字段以“http”开头,则设置为“HTTPS”。
解析器逻辑 network.http.referral_url 如果 user_agent 字段包含“Referer=”,则从中提取。
解析器逻辑 network.http.response_code 派生自 request_status,用于各种事件。
解析器逻辑 network.http.user_agent 原始日志中的 user_agent 值,或 ApiEventStream 和 LoginEventStream 中的 data.properties.UserAgent.str 值,或 Sites 事件中的值,或 Sites 事件中的“User-Agent”。
解析器逻辑 network.session_id 原始日志中的 session_keySESSION_KEY 值,或通过其他字段(如 LoginKeyAuthSessionId)构建的值。
解析器逻辑 network.tls.version 原始日志中的 tls_protocol 值,或 LoginEventStream 中的 data.properties.TlsProtocol.str 值。
解析器逻辑 principal.application 原始日志中的 application 值,或“Salesforce for Outlook”(对于“登录:成功”事件)、“Insights”(对于没有应用的“登录:成功”事件),或从 device_platform 中提取的值(对于 Lightning 事件)。
解析器逻辑 principal.asset.hostname 如果 client_ip 是主机名,则返回相应值。
解析器逻辑 principal.asset.ip 如果值为 IP 地址,则为 client_ipsrc_ipSourceIpCLIENT_IP
解析器逻辑 principal.hostname 如果 client_ip 是主机名,则返回相应值。
解析器逻辑 principal.ip 如果值为 IP 地址,则为 client_ipsrc_ipSourceIpCLIENT_IP
解析器逻辑 principal.labels 根据各种字段(例如 FederationIdentifierApiTypeOrgIdchannel)构建的标签。
解析器逻辑 principal.location.city 原始日志中的 geoip_src.city_nameCityLoginGeo.City 的值。
解析器逻辑 principal.location.country_or_region 原始日志中的 geoip_src.country_nameCountryLoginGeo.Countryclient_geo 的值。
解析器逻辑 principal.location.region_latitude 原始日志中的 data.properties.LoginLatitude.number 值。
解析器逻辑 principal.location.region_longitude 原始日志中的 data.properties.LoginLongitude.number 值。
解析器逻辑 principal.location.state 原始日志中的 geoip_src.region_name 值。
解析器逻辑 principal.platform 原始日志中的 PlatformOsNameos_name 的值,或者对于 Platform 包含“Windows”的 LoginEventStream,该值为“WINDOWS”。
解析器逻辑 principal.platform_version 原始日志中的 OsVersionos_version 值,或者从 Platform 中提取的 LoginEventStream 的值(如果 Platform 包含“Windows”)。
解析器逻辑 principal.resource.attribute.labels 根据各种字段(例如 CreatedByIdApiVersionLogFileLogFileContentTypeLogFileLength)构建的标签。
解析器逻辑 principal.resource.name 原始日志中的 Browserbrowser_name 值,或者对于 ApiType 为“SOAP Partner”的 LoginHistory,该值为“Java (Salesforce.com)”。
解析器逻辑 principal.resource.type 对于 Lightning 事件,该值为从 device_platform 中提取的值;对于 LoginAsEvent 和 LoginAsEventStream,该值为“浏览器”。
解析器逻辑 principal.url 原始日志中的 LoginUrl 值。
解析器逻辑 principal.user.email_addresses 原始日志中的 usrNameUsernamesrc_emailIdentityUseddata.properties.Username.strdata.properties.Email.str 的值。
解析器逻辑 principal.user.product_object_id 原始日志中的 attrs.USER_ID_DERIVEDdata.properties.USER_ID_DERIVED.str 值。
解析器逻辑 principal.user.userid 原始日志中的 usrNameUsernameuser_idUserIdUSER_IDIdLoginKeyCreatedByContextdata.properties.Username.strdata.properties.USER_ID.strdata.properties.LoginKey.str 的值。
解析器逻辑 security_result.action 从原始日志中的 StatusOperationStatusErrorCodeactionoperation_status 派生而来,转换为 ALLOW 或 BLOCK。
解析器逻辑 security_result.action_details LoginEventStream 的原始日志中的 Status 值。
解析器逻辑 security_result.description 原始日志中的 LoginTypelogintypeOperationActionDisplay 的值。
解析器逻辑 security_result.rule_name 原始日志中的 Policyrule_name 值。
解析器逻辑 security_result.summary 根据原始日志中的 NewValueOldValueREQUEST_STATUSSectionforecastcategory 构建。
解析器逻辑 target.administrative_domain 原始日志中的 ORGANIZATION_IDDelegatedOrganizationIdorganization_iddata.properties.OrgName.str 的值。
解析器逻辑 target.application 原始日志中的 Applicationapp_nameApiTypeNamedata.properties.Application.str 的值。
解析器逻辑 target.asset.hostname uri 字段提取的 target_hostname 值。
解析器逻辑 target.asset.ip 原始日志中的 data.properties.CLIENT_IP.str 值。
解析器逻辑 target.asset_id device_idREQUEST_ID 构造而成。
解析器逻辑 target.file.mime_type 原始日志中的 file_type 值。
解析器逻辑 target.file.size 原始日志中的 size_bytes 值。
解析器逻辑 target.hostname uri 字段提取的 target_hostname 值。
解析器逻辑 target.process.command_line 原始日志中的 query_execQuerydata.properties.Query.str 的值。
解析器逻辑 target.process.pid 原始日志中的 job_id 值。
解析器逻辑 target.resource.attribute.labels 由各种字段(例如 CPU_TIMERUN_TIMEUSER_TYPEDB_TOTAL_TIMEMEDIA_TYPEROWS_PROCESSEDNUMBER_FIELDSDB_BLOCKSDB_CPU_TIMEENTITY_NAMEEXCEPTION_MESSAGEUSER_ID_DERIVEDDOWNLOAD_FORMATUSER_TYPECPU_TIMERUN_TIMEWAVE_SESSION_IDSessionLevelverification_methodcpu_timerun_timedb_total_timedb_cpu_timeexec_timecallout_timenumber_soql_queriesdurationuser_typeentry_pointoperationsession_levelrows_processedsso_typedashboard_typeOperationSessionLevel)构建的标签。
解析器逻辑 target.resource.id 原始日志中的 REQUEST_IDRecordIdcaseidleadidcontactidopportunityidaccountid 的值。
解析器逻辑 target.resource.name 原始日志中的 QueriedEntitiesresource_namecomponent_nameDATASET_IDSfieldStageNameSubject 的值。
解析器逻辑 target.resource.product_object_id 原始日志中的 REQUEST_ID 值。
解析器逻辑 target.resource.resource_type 对于 ApexCallout 和 PlatformEncryption,设置为“ACCESS_POLICY”;对于 ApexTrigger,设置为“DATABASE”;对于 ContentTransfer,设置为“FILE”;对于 ApiEvent,设置为“TABLE”。
解析器逻辑 target.resource.type 对于 QueuedExecution 和 ApexExecution,设置为“BATCH”;对于 ContentTransfer,设置为“FILE”;对于 ApexTrigger,设置为“DATABASE_TRIGGER”;对于“Case”“Lead”“Contact”“Opportunity”“Account”,则根据是否存在相应的 ID 字段来设置。
解析器逻辑 target.url 原始日志中的 LoginUrlURIattributes.urllogin_urluri 的值。
解析器逻辑 target.user.email_addresses 原始日志中的 Usernameattrs.usrNameemail_address 的值。
解析器逻辑 target.user.user_display_name 原始日志中的 target_user_display_nameuser_nameusername 的值。
解析器逻辑 target.user.userid 原始日志中的 target_user_namedata.properties.UserId.strdata.properties.CreatedById.str 的值。
解析器逻辑 extensions.auth.auth_details 如果 Status 不是“Success”,则设置为“ACTIVE”,否则设置为“UNKNOWN_AUTHENTICATION_STATUS”。
解析器逻辑 extensions.auth.mechanism 如果登录成功事件和登录事件的 logintype 包含“Remote”,则设置为“REMOTE”;如果为 LoginEventStream,则设置为“USERNAME_PASSWORD”;如果事件包含 login_url,则设置为“MECHANISM_OTHER”;如果为登录成功事件和退出事件,则设置为“AUTHTYPE_UNSPECIFIED”。
解析器逻辑 extensions.auth.type 对于登录、注销、LogoutEvent、LoginAs、IdentityProviderEventStore、LoginHistory、LoginAsEvent(如果 LoginType 为“SAML Sfdc Initiated SSO”),设置为“SSO”;对于登录:成功、注销、LoginAsEvent(如果 LoginType 为“Application”),设置为“AUTHTYPE_UNSPECIFIED”。

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。