Salesforce 集成

编辑

Salesforce 集成

编辑

版本

1.0.0 (查看全部)

兼容的 Kibana 版本

8.16.0 或更高版本

支持的无服务器项目类型
这是什么?

安全性
可观测性

订阅级别
这是什么?

基本

支持级别
这是什么?

Elastic

概述

编辑

通过 Salesforce 集成,您可以监控您的 Salesforce 实例。Salesforce 是一个客户关系管理 (CRM) 平台,支持企业从一个可从任何地方访问的统一平台管理营销、销售、商务、服务和 IT 团队。

您可以使用 Salesforce 集成来实现以下目的:

  • 运营洞察:深入了解您组织的登录和注销活动以及其他运营事件。
  • 数据可视化:创建详细的可视化效果,以监控、衡量和分析使用趋势和关键数据,帮助您获得可操作的业务洞察。
  • 主动警报:设置警报,通过在故障排除期间参考相关日志来最大限度地缩短平均检测时间 (MTTD) 和平均修复时间 (MTTR)。

数据流

编辑

Salesforce 集成收集以下数据流:

  • login:收集与登录到 Salesforce 的用户相关的信息。
  • logout:收集与从 Salesforce 注销的用户相关的信息。
  • apex:收集有关各种 Apex 事件的信息,例如 Callout、Execution、REST API、SOAP API、Trigger 等。
  • setupaudittrail:收集与用户在过去 180 天内在组织的设置区域中所做的更改相关的信息。

Salesforce 集成使用 Salesforce REST API 收集以下事件:

兼容性

编辑

此集成已针对 Salesforce Spring '22 (v54.0) 版本和 Summer '24 (v61.0) 版本进行了测试。最低支持版本为 v46.0。

要确定您的 Salesforce 实例版本,请使用以下方法之一:

  • Salesforce Classic

    在 Salesforce Classic 的主页选项卡上,您可以在右上角找到一个链接,指示您的 Salesforce 实例的当前版本,例如 Summer '24 for Developers

  • 使用 Salesforce 实例 URL

    使用以下格式的 Salesforce 实例 URL:<Salesforce 实例 URL>/services/data,例如:https://na9.salesforce.com/services/data,其中 https://na9.salesforce.com 是 Salesforce 实例 URL。

    请求该 URL 将返回一个 XML 响应,其中列出了所有可用版本。

<Versions>
    <Version>
        <label>Spring '22</label>
        <url>/services/data/v54.0</url>
        <version>54.0</version>
    </Version>
    <Version>
        <label>Summer '22</label>
        <url>/services/data/v55.0</url>
        <version>55.0</version>
    </Version>
</Versions>

列表中的最后一项表示您的 Salesforce 实例的当前版本。在此示例中,当前版本为 Summer '22 (v55.0)

先决条件

编辑
  • 您需要 Elasticsearch 来存储和搜索数据,以及 Kibana 来可视化和管理数据。您可以使用我们在 Elastic Cloud 上的托管 Elasticsearch 服务(推荐),也可以在您的硬件上自行管理 Elastic Stack。
  • 确保为您的 Salesforce 实例中的用户配置文件选择了“启用 API”权限

    1. 转到设置> 快速查找,然后键入用户
    2. 从左侧导航树中选择用户
    3. 全名列中,选择与用于数据收集的用户帐户关联的名称。
    4. 在配置文件页面上搜索启用 API权限。如果它不存在,请在系统权限下搜索,并检查是否选择了“启用 API”特权。如果没有,请启用它以进行数据收集。
  • 确保启用了使用 实时事件监控 API 收集数据

    1. 转到设置> 快速查找,然后键入事件管理器
    2. 从左侧导航树中选择事件管理器
    3. 要监控事件,例如登录事件或注销事件,请单击下拉箭头,然后选择启用存储
    4. 检查您是否具有所需权限:查看实时事件监控数据

实时事件监控可能需要额外的许可。请与您的 Salesforce 客户代表核实您的订阅级别。

设置

编辑

有关如何设置集成的分步说明,请参阅入门指南。

配置

编辑

要配置 Salesforce 集成,您需要以下信息:

Salesforce 实例 URL

编辑

这是您的 Salesforce 组织的 URL。

  • Salesforce Classic:给定示例 URL https://na9.salesforce.com/home/home.jsp,Salesforce 实例 URL 被提取为 https://na9.salesforce.com
  • Salesforce Lightning:实例 URL 在查看配置文件选项卡中您的用户名下可用。如果使用 Salesforce Lightning,请使用正确的实例 URL,因为它使用 *.lightning.force.com,但实例 URL 是 *.salesforce.com。

用于身份验证的客户端密钥和客户端密码

编辑

要使用此集成,您需要使用 OAuth 创建一个新的 Salesforce 应用程序。请按照以下步骤在 Salesforce 中创建一个连接的应用程序:

  1. 使用您要收集数据的用户凭据登录 Salesforce
  2. 单击右上菜单栏中的设置
  3. 设置搜索框中,搜索 App Manager 并选择它。
  4. 单击新建连接的应用程序
  5. 为连接的应用程序提供一个名称。此名称将显示在应用程序管理器及其应用程序启动器磁贴上。
  6. 输入 API 名称。默认值是不带空格的名称版本。只允许使用字母、数字和下划线。如果原始应用程序名称包含任何其他字符,请编辑默认名称。
  7. 输入 Salesforce 的联系人电子邮件。
  8. API(启用 OAuth 设置)部分下,选中启用 OAuth 设置的框。
  9. 回调 URL字段中,输入 Salesforce 实例 URL 中指定的实例 URL。
  10. 选择以下要应用于连接的应用程序的 OAuth 范围:

    • 通过 API 管理用户数据 (api)
    • 随时执行请求 (refresh_token, offline_access)
    • (可选)如果在数据收集期间遇到任何权限问题,请添加完全访问权限 (full)范围。
  11. 选择需要 Web 服务器流程的密钥,以要求应用程序的客户端密钥来换取访问令牌。
  12. 选择需要刷新令牌流程的密钥,以在刷新令牌和混合刷新令牌流程的授权请求中要求应用程序的客户端密钥。
  13. 单击保存。更改生效可能需要大约 10 分钟。
  14. 单击继续,然后在API 详细信息下选择管理消费者详细信息。输入验证码验证用户帐户。
  15. 从“消费者详细信息”部分复制 消费者密钥消费者密码。这些值应分别在配置中用作客户端 ID 和客户端密码。

有关更多详细信息,请查看 Salesforce 文档,了解如何创建连接的应用程序

用户名

编辑

注册用户的用户 ID。

密码

编辑

用于使用您的 Salesforce 实例验证用户的密码。

当使用带有安全令牌的 Salesforce 实例时,将令牌直接附加到您的密码,无需空格或特殊字符。例如,如果您的密码是 password,并且您的安全令牌是 12345,请输入:password12345

令牌 URL

编辑
  1. 使用令牌 URL 来获取用于 API 访问的身份验证令牌。
  2. 对于大多数 Salesforce 实例,令牌 URL 遵循此格式:https://login.salesforce.com/services/oauth2/token
  3. 如果您使用的是 Salesforce 沙盒环境,请改用 https://test.salesforce.com/services/oauth2/token
  4. 对于自定义 Salesforce 域,请将 login.salesforce.com 替换为您的自定义域名。例如,如果您的自定义域名是 mycompany.my.salesforce.com,则令牌 URL 将变为 https://mycompany.my.salesforce.com/services/oauth2/token。这也适用于沙盒环境。
  5. 在 Salesforce 集成中,我们在内部将 /services/oauth2/token 附加到 URL。请确保您在 Salesforce 集成中提供的 URL 是不包含 /services/oauth2/token 部分的基本 URL。例如,如果您的自定义域名是 mycompany.my.salesforce.com,完整的令牌 URL 将是 https://mycompany.my.salesforce.com/services/oauth2/token,但您在 Salesforce 集成中提供的 URL 应该是 https://mycompany.my.salesforce.com。在大多数情况下,这与 Salesforce 实例 URL 相同。

Salesforce Lightning 用户必须使用带有 *.salesforce.com 域(类似于 Salesforce 实例 URL)的 URL,而不是 *.lightning.force.com,因为 Salesforce API 不适用于 *.lightning.force.com

API 版本

编辑

查找 API 版本

  1. 转到 设置 > 快速查找 > Apex 类
  2. 点击 新建
  3. 点击 版本设置 标签。
  4. 参考 版本 下拉列表中的 API 版本号。

或者,您可以使用“兼容性”部分中描述的 Salesforce 实例 API 版本。

验证

编辑

成功配置 Salesforce 集成后,请按照以下步骤验证设置

  1. 导航到 Salesforce 集成中的 资产 选项卡。您会找到与您配置的数据流相关的可用仪表板列表。
  2. 选择与您的数据流相关的仪表板(例如,登录、注销、apex、setupaudittrail)。
  3. 验证仪表板是否填充了预期的数据。

如果仪表板正确显示数据,则表示您的集成已成功验证。

Salesforce 集成:v0.15.0 及更高版本

编辑

在 0.15.0 版本中,我们显著增强了 Salesforce 集成,引入了数据收集机制、身份验证和数据流方面的重大变更。由于这些变更,我们建议使用 Salesforce 集成 v0.15.0 或更高版本,并卸载以前的版本。

主要增强功能

编辑
  1. 统一数据收集:集成现在使用单个 Filebeat 输入 (Salesforce 输入) 从 EventLogFile 和实时事件监控 API 收集数据。
  2. JWT 身份验证:引入了 JWT 身份验证机制。
  3. 扩展的配置选项:添加了 initial_interval 和其他选项来微调数据收集,包括历史数据检索。
  4. 数据收集机制的更改:将 Streaming API (cometd) 替换为实时事件监控 API。
  5. 性能优化:显著降低了数据收集过程中的 CPU 和内存使用率。
  6. 增强的仪表板:改进了可视化效果。

重大变更

编辑
  1. 数据流整合:从 6 个数据流减少到 4 个数据流 - apexloginlogoutsetupaudittrail
  2. 字段映射更新:修改了多个字段的映射。
  3. 其他更改:还进行了一些其他调整,以提高集成的整体性能和功能。

故障排除

编辑

本节提供使用 Salesforce 集成时可能遇到的常见问题的解决方案。

请求超时

编辑

如果您在 apexloginlogoutsetupaudittrail 数据流中遇到来自 Salesforce 服务器的响应延迟,您可能会遇到类似的错误

Error while processing http request: failed to execute rf.collectResponse: failed to execute http client.Do: failed to execute http client.Do: failed to read http.response.body

解决方案: 考虑增加受影响数据流的 高级选项部分中的 请求超时设置。

数据摄取错误

编辑

如果您遇到数据摄取错误,您可能会收到以下错误消息

400 Bad Request

解决方案: 确保将 API 已启用权限授予与用于集成的 用户名关联的 配置文件。有关更多信息,请查看先决条件部分。

如果错误仍然存在,请按照以下步骤操作

  1. 导航到 设置 > 快速查找 > 应用程序管理器
  2. 找到该应用程序,然后单击相应的箭头以查看可用的操作。
  3. 单击 查看
  4. 通过单击 API 部分中的 管理消费者详细信息 获取客户端密钥和密钥。
  5. 单击 管理 以编辑策略。
  6. 单击 编辑策略,然后从 IP 放松的下拉菜单中选择 放宽 IP 限制

使用 Salesforce Connected App 验证 OAuth 2.0 身份验证

编辑
CLIENT_ID="" # Replace with your client ID
CLIENT_SECRET="" # Replace with your client secret
USERNAME="" # Replace with your Salesforce username
PASSWORD="" # Replace with your Salesforce password
SECURITY_TOKEN=""  # Replace with your Salesforce security token (if applicable). Else, leave it blank.
TOKEN_URL="https://<your-instance>.my.salesforce.com/services/oauth2/token" # Replace with your Salesforce instance URL

curl -v -X POST "${TOKEN_URL}" \
     -d "grant_type=password" \
     -d "client_id=${CLIENT_ID}" \
     -d "client_secret=${CLIENT_SECRET}" \
     -d "username=${USERNAME}" \
     -d "password=${PASSWORD}${SECURITY_TOKEN}"

该脚本已在基于 Unix 的系统(macOS、Linux)上测试过。如果您使用其他操作系统,您可能需要相应地调整命令。

此命令对于调试和排除 Salesforce Connected Apps 的 OAuth 2.0 身份验证问题非常有用。建议在设置完整的 Salesforce 集成之前使用 curl 之类的工具测试 OAuth 2.0 身份验证。这种方法使您能够在设置完整的 Salesforce 集成时尽早验证身份验证过程并识别任何潜在问题。如果请求成功,响应将包含可用于对后续 Salesforce API 请求进行身份验证的访问令牌。如果请求失败,响应将包含一条错误消息,指示失败的原因。

日志参考

编辑

Apex

编辑

apex 数据流捕获与 Apex 操作相关的事件,使开发人员能够访问 Salesforce 平台后端数据库和客户端-服务器接口来创建第三方 SaaS 应用程序。

示例

apex 的示例事件如下所示

{
    "@timestamp": "2022-11-22T04:46:15.591Z",
    "agent": {
        "ephemeral_id": "bcd82746-7d4f-4c15-8288-e159f8223e86",
        "id": "ea40bcb3-cd35-4db9-b0d3-81d94e75b64d",
        "name": "docker-fleet-agent",
        "type": "filebeat",
        "version": "8.14.0"
    },
    "data_stream": {
        "dataset": "salesforce.apex",
        "namespace": "ep",
        "type": "logs"
    },
    "ecs": {
        "version": "8.11.0"
    },
    "elastic_agent": {
        "id": "ea40bcb3-cd35-4db9-b0d3-81d94e75b64d",
        "snapshot": false,
        "version": "8.14.0"
    },
    "event": {
        "action": "apex-callout",
        "agent_id_status": "verified",
        "category": [
            "network"
        ],
        "dataset": "salesforce.apex",
        "duration": 1293,
        "ingested": "2024-06-21T16:36:07Z",
        "kind": "event",
        "original": "{\"CLIENT_IP\":\"81.2.69.142\",\"CPU_TIME\":\"10\",\"EVENT_TYPE\":\"ApexCallout\",\"LOGIN_KEY\":\"Obv9123BzbaxqCo1\",\"METHOD\":\"GET\",\"ORGANIZATION_ID\":\"00D5j000000001V\",\"REQUEST_ID\":\"4exLFFQZ1234xFl1cJNwOV\",\"REQUEST_SIZE\":\"10\",\"RESPONSE_SIZE\":\"256\",\"RUN_TIME\":\"1305\",\"SESSION_KEY\":\"WvtsJ1235oW24EbH\",\"SUCCESS\":\"1\",\"TIME\":\"1293\",\"TIMESTAMP\":\"20221122044615.591\",\"TIMESTAMP_DERIVED\":\"2022-11-22T04:46:15.591Z\",\"TYPE\":\"OData\",\"URI\":\"CALLOUT-LOG\",\"URI_ID_DERIVED\":\"0055j000000utlPAQZB\",\"URL\":\"https://temp.sh/odata/Accounts\",\"USER_ID\":\"0055j0000000001\",\"USER_ID_DERIVED\":\"0055j012345utlPAAQ\"}",
        "outcome": "success",
        "provider": "EventLogFile",
        "type": [
            "connection"
        ],
        "url": "https://temp.sh/odata/Accounts"
    },
    "host": {
        "architecture": "x86_64",
        "containerized": true,
        "hostname": "docker-fleet-agent",
        "id": "345c85cf1fe945e2b19719b370c09a48",
        "ip": [
            "192.168.251.7"
        ],
        "mac": [
            "02-42-C0-A8-FB-07"
        ],
        "name": "docker-fleet-agent",
        "os": {
            "codename": "focal",
            "family": "debian",
            "kernel": "3.10.0-1160.114.2.el7.x86_64",
            "name": "Ubuntu",
            "platform": "ubuntu",
            "type": "linux",
            "version": "20.04.6 LTS (Focal Fossa)"
        }
    },
    "http": {
        "request": {
            "bytes": 10,
            "method": "GET"
        },
        "response": {
            "bytes": 256
        }
    },
    "input": {
        "type": "salesforce"
    },
    "related": {
        "ip": [
            "81.2.69.142"
        ]
    },
    "salesforce": {
        "apex": {
            "cpu_time": 10,
            "event_type": "ApexCallout",
            "login_key": "Obv9123BzbaxqCo1",
            "organization_id": "00D5j000000001V",
            "request_id": "4exLFFQZ1234xFl1cJNwOV",
            "run_time": 1305,
            "type": "OData",
            "uri": "CALLOUT-LOG",
            "uri_derived_id": "0055j000000utlPAQZB",
            "user_id_derived": "0055j012345utlPAAQ"
        },
        "instance_url": "http://elastic-package-service-salesforce-1:8010"
    },
    "source": {
        "geo": {
            "city_name": "London",
            "continent_name": "Europe",
            "country_iso_code": "GB",
            "country_name": "United Kingdom",
            "location": {
                "lat": 51.5142,
                "lon": -0.0931
            },
            "region_iso_code": "GB-ENG",
            "region_name": "England"
        },
        "ip": "81.2.69.142"
    },
    "tags": [
        "preserve_original_event",
        "salesforce-apex"
    ],
    "user": {
        "id": "0055j0000000001"
    }
}
导出的字段
字段 描述 类型 单位 指标类型

@timestamp

事件时间戳。

日期

data_stream.dataset

数据流数据集。

constant_keyword

data_stream.namespace

数据流命名空间。

constant_keyword

data_stream.type

数据流类型。

constant_keyword

input.type

输入类型。

keyword

salesforce.apex.action

调用执行的操作。

keyword

salesforce.apex.callout_time

等待 Web 服务调用的时间,以毫秒为单位。

浮点数

毫秒

仪表

salesforce.apex.class_name

Apex 类名称。如果该类是托管包的一部分,则此字符串包含包命名空间。

keyword

salesforce.apex.client_name

正在使用 Salesforce 服务的客户端的名称。此字段是可选参数,可以在 API 调用中传递。如果为空,则调用者未在 CallOptions 标头中指定客户端。

keyword

salesforce.apex.cpu_time

完成请求所用的 CPU 时间,以毫秒为单位。

浮点数

毫秒

仪表

salesforce.apex.db_blocks

指示数据库中正在发生的活动量。此字段的高值表示在查询中添加索引或过滤器将有助于提高性能。

长整型

仪表

salesforce.apex.db_cpu_time

完成请求的 CPU 时间(以毫秒为单位)。指示在请求期间数据库层中发生的活动量。

浮点数

毫秒

仪表

salesforce.apex.db_total_time

请求中所有操作等待数据库处理的总时间(以毫秒为单位)。将此字段与 cpu_time 进行比较,以确定性能问题是发生在数据库层还是在您自己的代码中。

浮点数

毫秒

仪表

salesforce.apex.entity

正在访问的外部对象的名称。

keyword

salesforce.apex.entity_name

受触发器影响的对象的名称。

keyword

salesforce.apex.entry_point

此 Apex 执行的入口点。

keyword

salesforce.apex.event_type

事件的类型。

keyword

salesforce.apex.execute_ms

Salesforce 准备和执行查询所花费的时间(以毫秒为单位)。在 API 版本 42.0 及更高版本中可用。

浮点数

毫秒

仪表

salesforce.apex.fetch_ms

从外部系统检索查询结果所花费的时间(以毫秒为单位)。在 API 版本 42.0 及更高版本中可用。

浮点数

毫秒

仪表

salesforce.apex.fields_count

字段或列的数量(如果适用)。

长整型

salesforce.apex.filter

用于筛选要返回的行的字段表达式。对应于 SOQL 查询中的 WHERE。

keyword

salesforce.apex.is_long_running_request

指示请求是否计入您组织的并发长时间运行的 Apex 请求限制。

布尔值

salesforce.apex.limit

查询要返回的最大行数。对应于 SOQL 查询中的 LIMIT。

长整型

salesforce.apex.limit_usage_pct

针对组织的限制所进行的 Apex SOAP 调用的百分比。

浮点数

百分比

仪表

salesforce.apex.login_key

将给定用户登录会话中的所有事件联系在一起的字符串。它以登录事件开始,并以注销事件或用户会话过期结束。

keyword

salesforce.apex.media_type

响应的媒体类型。

keyword

salesforce.apex.message

与失败的调用相关的错误或警告消息。

文本

salesforce.apex.method_name

调用 Apex 方法的名称。

keyword

salesforce.apex.offset

在结果集中分页时要跳过的行数。对应于 SOQL 查询中的 OFFSET。

长整型

salesforce.apex.orderby

用于对查询结果进行排序的字段或列,以及是以升序(默认)还是降序对结果进行排序。对应于 SOQL 查询中的 ORDER BY。

keyword

salesforce.apex.organization_id

组织的 15 个字符的 ID。

keyword

salesforce.apex.query

SOQL 查询(如果已执行)。

keyword

salesforce.apex.quiddity

与此事件关联的外部执行的类型。

keyword

salesforce.apex.request_id

单个事务的唯一 ID。一个事务可以包含一个或多个事件。给定事务中的每个事件都具有相同的 request_id。

keyword

salesforce.apex.request_status

页面视图或用户界面操作的请求状态。

keyword

salesforce.apex.rows_fetched

调用提取的行数。在 API 版本 42.0 及更高版本中可用。

长整型

salesforce.apex.rows_processed

请求中处理的行数。

长整型

salesforce.apex.rows_total

结果集中的记录总数。如果自定义适配器的 DataSource.Provider 类未声明 QUERY_TOTAL_SIZE 功能,则该值始终为 -1。

长整型

salesforce.apex.run_time

请求所花费的时间,以毫秒为单位。

浮点数

毫秒

仪表

salesforce.apex.select

要查询的字段的逗号分隔列表。对应于 SOQL 查询中的 SELECT。

keyword

salesforce.apex.soql_queries_count

在事件期间执行的 SOQL 查询的数量。

长整型

salesforce.apex.subqueries

保留供将来使用。

keyword

salesforce.apex.throughput

一秒钟内检索的记录数。

浮点数

仪表

salesforce.apex.trigger_id

触发器的 15 个字符的 ID。

keyword

salesforce.apex.trigger_name

对于来自托管包的触发器,trigger_name 包括一个命名空间前缀,该前缀用点 (.) 字符分隔。如果不存在命名空间前缀,则触发器来自非托管触发器。

keyword

salesforce.apex.trigger_type

此触发器的类型。

keyword

salesforce.apex.type

Apex 调用的类型。

keyword

salesforce.apex.uri

接收请求的页面的 URI。

keyword

salesforce.apex.uri_derived_id

接收请求的页面的 URI 的 18 个字符大小写安全 ID。

keyword

salesforce.apex.user_agent

用于发出请求的客户端类型(例如,浏览器、应用程序或 API)的数字代码。

keyword

salesforce.apex.user_id_derived

通过 UI 或 API 使用 Salesforce 服务的用户的 18 个字符大小写安全 ID。

keyword

salesforce.instance_url

Salesforce 实例 URL。

keyword

登录

编辑

login 数据流捕获有关 Salesforce 组织内用户登录历史的事件。此数据流提供有关用户身份验证活动的见解,帮助您监控和分析登录模式、检测异常情况并确保安全合规性。

示例

以下是 login 的示例事件

{
    "@timestamp": "2022-11-22T04:46:15.591Z",
    "agent": {
        "ephemeral_id": "b02f2751-9a38-4438-8b75-937262b340bc",
        "id": "ea40bcb3-cd35-4db9-b0d3-81d94e75b64d",
        "name": "docker-fleet-agent",
        "type": "filebeat",
        "version": "8.14.0"
    },
    "data_stream": {
        "dataset": "salesforce.login",
        "namespace": "ep",
        "type": "logs"
    },
    "ecs": {
        "version": "8.11.0"
    },
    "elastic_agent": {
        "id": "ea40bcb3-cd35-4db9-b0d3-81d94e75b64d",
        "snapshot": false,
        "version": "8.14.0"
    },
    "event": {
        "action": "login-attempt",
        "agent_id_status": "verified",
        "category": [
            "authentication"
        ],
        "dataset": "salesforce.login",
        "ingested": "2024-06-21T16:46:09Z",
        "kind": "event",
        "module": "salesforce",
        "original": "{\"API_TYPE\":\"f\",\"API_VERSION\":\"9998.0\",\"AUTHENTICATION_METHOD_REFERENCE\":\"\",\"BROWSER_TYPE\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36\",\"CIPHER_SUITE\":\"ECDHE-RSA-AES256-GCM-SHA384\",\"CLIENT_IP\":\"81.2.69.142\",\"CPU_TIME\":\"30\",\"DB_TOTAL_TIME\":\"52435102\",\"EVENT_TYPE\":\"Login\",\"LOGIN_KEY\":\"QfNecrLXSII6fsBq\",\"LOGIN_STATUS\":\"LOGIN_NO_ERROR\",\"ORGANIZATION_ID\":\"00D5j000000VI3n\",\"REQUEST_ID\":\"4ehU_U-nbQyAPFl1cJILm-\",\"REQUEST_STATUS\":\"Success\",\"RUN_TIME\":\"83\",\"SESSION_KEY\":\"\",\"SOURCE_IP\":\"81.2.69.142\",\"TIMESTAMP\":\"20221122044615.591\",\"TIMESTAMP_DERIVED\":\"2022-11-22T04:46:15.591Z\",\"TLS_PROTOCOL\":\"TLSv1.2\",\"URI\":\"/index.jsp\",\"URI_ID_DERIVED\":\"s4heK3WbH-lcJIL3-n\",\"USER_ID\":\"0055j000000utlP\",\"USER_ID_DERIVED\":\"0055j000000utlPAAQ\",\"USER_NAME\":\"[email protected]\",\"USER_TYPE\":\"Standard\"}",
        "outcome": "success",
        "provider": "EventLogFile",
        "type": [
            "info"
        ],
        "url": "/index.jsp"
    },
    "host": {
        "architecture": "x86_64",
        "containerized": true,
        "hostname": "docker-fleet-agent",
        "id": "345c85cf1fe945e2b19719b370c09a48",
        "ip": [
            "192.168.251.7"
        ],
        "mac": [
            "02-42-C0-A8-FB-07"
        ],
        "name": "docker-fleet-agent",
        "os": {
            "codename": "focal",
            "family": "debian",
            "kernel": "3.10.0-1160.114.2.el7.x86_64",
            "name": "Ubuntu",
            "platform": "ubuntu",
            "type": "linux",
            "version": "20.04.6 LTS (Focal Fossa)"
        }
    },
    "input": {
        "type": "salesforce"
    },
    "related": {
        "ip": [
            "81.2.69.142"
        ]
    },
    "salesforce": {
        "instance_url": "http://elastic-package-service-salesforce-1:8010",
        "login": {
            "api": {
                "type": "Feed",
                "version": "9998.0"
            },
            "client": {
                "ip": "81.2.69.142"
            },
            "cpu_time": 30,
            "db_total_time": 52435102,
            "event_type": "Login",
            "key": "QfNecrLXSII6fsBq",
            "organization_id": "00D5j000000VI3n",
            "request": {
                "id": "4ehU_U-nbQyAPFl1cJILm-",
                "status": "Success"
            },
            "run_time": 83,
            "uri": {
                "id": "s4heK3WbH-lcJIL3-n"
            },
            "user_id": "0055j000000utlP"
        }
    },
    "source": {
        "geo": {
            "city_name": "London",
            "continent_name": "Europe",
            "country_iso_code": "GB",
            "country_name": "United Kingdom",
            "location": {
                "lat": 51.5142,
                "lon": -0.0931
            },
            "region_iso_code": "GB-ENG",
            "region_name": "England"
        },
        "ip": "81.2.69.142"
    },
    "tags": [
        "preserve_original_event",
        "salesforce-login"
    ],
    "tls": {
        "cipher": "ECDHE-RSA-AES256-GCM-SHA384",
        "version": "1.2",
        "version_protocol": "TLS"
    },
    "user": {
        "email": "[email protected]",
        "id": "0055j000000utlPAAQ",
        "roles": [
            "Standard"
        ]
    },
    "user_agent": {
        "device": {
            "name": "Other"
        },
        "name": "Chrome",
        "os": {
            "full": "Windows 10",
            "name": "Windows",
            "version": "10"
        }
    }
}
导出的字段
字段 描述 类型 单位 指标类型

@timestamp

事件时间戳。

日期

data_stream.dataset

数据流数据集。

constant_keyword

data_stream.namespace

数据流命名空间。

constant_keyword

data_stream.type

数据流类型。

constant_keyword

input.type

输入类型。

keyword

salesforce.instance_url

Salesforce 实例的实例 URL。

keyword

salesforce.login.additional_info

在登录请求期间从 HTTP 标头捕获的其他信息。

match_only_text

salesforce.login.api.type

Salesforce API 请求的类型。

keyword

salesforce.login.api.version

用于登录请求的 Salesforce API 版本。

keyword

salesforce.login.application

用于访问 Salesforce 组织的应用程序。

keyword

salesforce.login.auth.method_reference

第三方身份提供商使用 OpenID Connect 协议进行 SSO 的身份验证方法引用。此字段在 API 版本 51.0 及更高版本中可用。

keyword

salesforce.login.auth.service_id

第三方身份提供商使用 OpenID Connect 协议进行单点登录 (SSO) 的身份验证服务 ID。

keyword

salesforce.login.client.ip

使用 Salesforce 服务的客户端的 IP 地址。内部 Salesforce IP 地址显示为“Salesforce.com IP”。

ip

salesforce.login.client_version

用于登录请求的客户端版本。

keyword

salesforce.login.cpu_time

完成登录请求所用的 CPU 时间(以毫秒为单位),表示应用程序服务器层中的活动量。

长整型

毫秒

仪表

salesforce.login.db_total_time

登录期间数据库往返的时间(以纳秒为单位),包括在 JDBC 驱动程序、网络和数据库 CPU 时间中花费的时间。

长整型

nanos

仪表

salesforce.login.evaluation_time

评估事务安全策略所花费的时间,以毫秒为单位。此字段在 API 版本 46.0 及更高版本中可用。

double

毫秒

仪表

salesforce.login.event_type

事件的类型。对于登录事件,该值始终为“Login”。

keyword

salesforce.login.geo_id

与用户登录期间的 IP 地址关联的 LoginGeo 对象的 Salesforce ID。

keyword

salesforce.login.history_id

跟踪用户会话的标识符,允许将用户活动与特定的登录实例相关联。

keyword

salesforce.login.key

将给定用户登录会话中的所有事件连接在一起的字符串,从登录事件开始,到注销事件或用户会话过期结束。

keyword

salesforce.login.organization_id

Salesforce 组织的 15 个字符的 ID。

keyword

salesforce.login.related_event_identifier

与登录事件关联的相关事件的标识符。

keyword

salesforce.login.request.id

登录请求事务的唯一标识符。

keyword

salesforce.login.request.status

登录请求的状态(例如,成功、失败)。

keyword

salesforce.login.run_time

登录请求所用的总时间(以毫秒为单位)。

长整型

毫秒

仪表

salesforce.login.transaction_security.policy.id

用于评估登录事件的事务安全策略的 ID。

keyword

salesforce.login.transaction_security.policy.outcome

事务安全策略评估的结果(例如,阻止、通知、不操作)。

keyword

salesforce.login.type

用于访问会话的登录类型。

keyword

salesforce.login.uri.id

接收登录请求的页面的 URI 的 18 个字符不区分大小写的 ID。

keyword

salesforce.login.user_id

登录到 Salesforce 的用户的 15 个字符的 ID。

keyword

注销

编辑

logout 数据流捕获有关 Salesforce 组织内用户注销历史的事件。此数据流提供有关用户身份验证活动的见解,帮助您监控和分析注销模式、检测异常情况并确保安全合规性。

示例

以下是 logout 的示例事件

{
    "@timestamp": "2022-11-22T07:37:25.779Z",
    "agent": {
        "ephemeral_id": "222f4fde-1141-42af-adaf-4b86e6aa9c18",
        "id": "ea40bcb3-cd35-4db9-b0d3-81d94e75b64d",
        "name": "docker-fleet-agent",
        "type": "filebeat",
        "version": "8.14.0"
    },
    "data_stream": {
        "dataset": "salesforce.logout",
        "namespace": "ep",
        "type": "logs"
    },
    "ecs": {
        "version": "8.11.0"
    },
    "elastic_agent": {
        "id": "ea40bcb3-cd35-4db9-b0d3-81d94e75b64d",
        "snapshot": false,
        "version": "8.14.0"
    },
    "event": {
        "action": "logout",
        "agent_id_status": "verified",
        "category": [
            "authentication"
        ],
        "code": "4exLFFQZ1234xFl1cJNwOV",
        "dataset": "salesforce.logout",
        "ingested": "2024-06-21T16:47:21Z",
        "kind": "event",
        "module": "salesforce",
        "original": "{\"API_TYPE\":\"f\",\"API_VERSION\":\"54.0\",\"APP_TYPE\":\"1000\",\"BROWSER_TYPE\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36\",\"CLIENT_IP\":\"81.2.69.142\",\"CLIENT_VERSION\":\"9998\",\"EVENT_TYPE\":\"Logout\",\"LOGIN_KEY\":\"Obv9123BzbaxqCo1\",\"ORGANIZATION_ID\":\"00D5j001234VI3n\",\"PLATFORM_TYPE\":\"1015\",\"REQUEST_ID\":\"4exLFFQZ1234xFl1cJNwOV\",\"RESOLUTION_TYPE\":\"9999\",\"SESSION_KEY\":\"WvtsJ1235oW24EbH\",\"SESSION_LEVEL\":\"1\",\"SESSION_TYPE\":\"O\",\"TIMESTAMP\":\"20221122073725.779\",\"TIMESTAMP_DERIVED\":\"2022-11-22T07:37:25.779Z\",\"USER_ID\":\"0055j000000utlP\",\"USER_ID_DERIVED\":\"0055j000000utlPAAQ\",\"USER_INITIATED_LOGOUT\":\"0\",\"USER_TYPE\":\"S\"}",
        "provider": "EventLogFile",
        "type": [
            "info"
        ]
    },
    "host": {
        "architecture": "x86_64",
        "containerized": true,
        "hostname": "docker-fleet-agent",
        "id": "345c85cf1fe945e2b19719b370c09a48",
        "ip": [
            "192.168.251.7"
        ],
        "mac": [
            "02-42-C0-A8-FB-07"
        ],
        "name": "docker-fleet-agent",
        "os": {
            "codename": "focal",
            "family": "debian",
            "kernel": "3.10.0-1160.114.2.el7.x86_64",
            "name": "Ubuntu",
            "platform": "ubuntu",
            "type": "linux",
            "version": "20.04.6 LTS (Focal Fossa)"
        }
    },
    "input": {
        "type": "salesforce"
    },
    "related": {
        "ip": [
            "81.2.69.142"
        ]
    },
    "salesforce": {
        "instance_url": "http://elastic-package-service-salesforce-1:8010",
        "logout": {
            "api": {
                "type": "Feed",
                "version": "54.0"
            },
            "app_type": "Application",
            "browser_type": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36",
            "client_version": "9998",
            "event_type": "Logout",
            "login_key": "Obv9123BzbaxqCo1",
            "organization_id": "00D5j001234VI3n",
            "platform_type": "Windows 10",
            "resolution_type": "9999",
            "session": {
                "level": "Standard Session",
                "type": "Oauth2"
            },
            "user": {
                "roles": [
                    "Standard"
                ]
            },
            "user_id": "0055j000000utlP",
            "user_initiated_logout": "0"
        }
    },
    "source": {
        "geo": {
            "city_name": "London",
            "continent_name": "Europe",
            "country_iso_code": "GB",
            "country_name": "United Kingdom",
            "location": {
                "lat": 51.5142,
                "lon": -0.0931
            },
            "region_iso_code": "GB-ENG",
            "region_name": "England"
        },
        "ip": "81.2.69.142"
    },
    "tags": [
        "preserve_original_event",
        "salesforce-logout"
    ],
    "user": {
        "id": "0055j000000utlPAAQ"
    }
}
导出的字段
字段 描述 类型

@timestamp

事件时间戳。

日期

data_stream.dataset

数据流数据集。

constant_keyword

data_stream.namespace

数据流命名空间。

constant_keyword

data_stream.type

数据流类型。

constant_keyword

input.type

输入类型。

keyword

salesforce.instance_url

Salesforce 实例的实例 URL。

keyword

salesforce.logout.api.type

Salesforce API 请求的类型。

keyword

salesforce.logout.api.version

正在使用的 Salesforce API 的版本。

keyword

salesforce.logout.app_type

注销时正在使用的应用程序类型。

keyword

salesforce.logout.browser_type

登录时使用的浏览器返回的标识符字符串。

keyword

salesforce.logout.client_version

注销时正在使用的客户端版本。

keyword

salesforce.logout.event_identifier

仅当此事件监控的活动需要额外的身份验证时(例如,多因素身份验证),才会填充此字段。在这种情况下,Salesforce 会生成更多事件,并将新事件的 RelatedEventIdentifier 字段设置为原始事件的 EventIdentifier 字段的值。将此字段与 EventIdentifier 字段一起使用,以关联所有相关事件。如果不需要额外的身份验证,则此字段为空白。

keyword

salesforce.logout.event_type

事件的类型。该值始终为 Logout。

keyword

salesforce.logout.login_key

将给定用户登录会话中的所有事件联系在一起的字符串。它以登录事件开始,并以注销事件或用户会话过期结束。

keyword

salesforce.logout.organization_id

组织的 15 个字符的 ID。

keyword

salesforce.logout.platform_type

客户端平台的代码。如果超时导致注销,则此字段为 null。

keyword

salesforce.logout.resolution_type

客户端的屏幕分辨率。如果超时导致注销,则此字段为 null。

keyword

salesforce.logout.session.key

用户的唯一会话 ID。可以使用此值来识别会话中的所有用户事件。当用户注销并再次登录时,将启动新的会话。

keyword

salesforce.logout.session.level

注销时使用的会话的安全级别(例如,标准会话或高保障会话)。

keyword

salesforce.logout.session.type

注销时使用的会话类型(例如,API、Oauth2 或 UI)。

keyword

salesforce.logout.user.roles

通过 UI 或 API 使用 Salesforce 服务的用户的角色。

keyword

salesforce.logout.user_id

通过 UI 或 API 使用 Salesforce 服务的用户的 15 个字符的 ID。

keyword

salesforce.logout.user_id_derived

通过 UI 或 API 使用 Salesforce 服务的用户的 18 个字符大小写安全 ID。

keyword

salesforce.logout.user_initiated_logout

如果用户通过单击“注销”按钮有意注销组织,则该值为 true。如果用户的会话由于不活动或其他隐式注销操作而超时,则该值为 false。

布尔值

设置审核跟踪

编辑

setupaudittrail 数据流捕获并记录用户在组织“设置”区域中所做的更改。默认情况下,它会收集过去一周的数据,但用户可以通过调整配置中的初始间隔来配置它以收集过去 180 天的数据。

示例

以下是 setupaudittrail 的示例事件

{
    "@timestamp": "2022-08-16T09:26:38.000Z",
    "agent": {
        "ephemeral_id": "8a1bedda-17d6-4895-b914-851f067b9106",
        "id": "ea40bcb3-cd35-4db9-b0d3-81d94e75b64d",
        "name": "docker-fleet-agent",
        "type": "filebeat",
        "version": "8.14.0"
    },
    "data_stream": {
        "dataset": "salesforce.setupaudittrail",
        "namespace": "ep",
        "type": "logs"
    },
    "ecs": {
        "version": "8.11.0"
    },
    "elastic_agent": {
        "id": "ea40bcb3-cd35-4db9-b0d3-81d94e75b64d",
        "snapshot": false,
        "version": "8.14.0"
    },
    "event": {
        "action": "insertConnectedApplication",
        "agent_id_status": "verified",
        "created": "2022-08-16T09:26:38.000Z",
        "dataset": "salesforce.setupaudittrail",
        "id": "0Ym5j000019nwonCAA",
        "ingested": "2024-06-21T16:40:13Z",
        "kind": "event",
        "module": "salesforce",
        "original": "{\"Action\":\"insertConnectedApplication\",\"CreatedByContext\":\"Einstein\",\"CreatedById\":\"0055j000000utlPAAQ\",\"CreatedDate\":\"2022-08-16T09:26:38.000+0000\",\"DelegateUser\":\"user1\",\"Display\":\"For user [email protected], the User Verified Email status changed to verified\",\"Id\":\"0Ym5j000019nwonCAA\",\"Section\":\"Connected Apps\"}",
        "provider": "Object",
        "type": [
            "admin"
        ]
    },
    "host": {
        "architecture": "x86_64",
        "containerized": true,
        "hostname": "docker-fleet-agent",
        "id": "345c85cf1fe945e2b19719b370c09a48",
        "ip": [
            "192.168.251.7"
        ],
        "mac": [
            "02-42-C0-A8-FB-07"
        ],
        "name": "docker-fleet-agent",
        "os": {
            "codename": "focal",
            "family": "debian",
            "kernel": "3.10.0-1160.114.2.el7.x86_64",
            "name": "Ubuntu",
            "platform": "ubuntu",
            "type": "linux",
            "version": "20.04.6 LTS (Focal Fossa)"
        }
    },
    "input": {
        "type": "salesforce"
    },
    "salesforce": {
        "instance_url": "http://elastic-package-service-salesforce-1:8010",
        "setup_audit_trail": {
            "created_by_context": "Einstein",
            "created_by_id": "0055j000000utlPAAQ",
            "delegate_user": "user1",
            "display": "For user [email protected], the User Verified Email status changed to verified",
            "section": "Connected Apps"
        }
    },
    "tags": [
        "preserve_original_event",
        "salesforce-setupaudittrail"
    ],
    "user": {
        "id": "0055j000000utlPAAQ",
        "name": "[email protected]"
    }
}
导出的字段
字段 描述 类型

@timestamp

事件时间戳。

日期

data_stream.dataset

数据流数据集。

constant_keyword

data_stream.namespace

数据流命名空间。

constant_keyword

data_stream.type

数据流类型。

constant_keyword

input.type

输入类型。

keyword

salesforce.instance_url

Salesforce 实例的实例 URL。

keyword

salesforce.setup_audit_trail.created_by_context

进行设置更改的上下文。例如,如果 Einstein 使用云到云服务来更改设置,则此字段的值为 Einstein。

keyword

salesforce.setup_audit_trail.created_by_id

进行设置更改的 ID。例如,如果 Einstein 使用云到云服务来更改设置,则此字段的值为 Einstein 的 ID。

keyword

salesforce.setup_audit_trail.created_by_issuer

保留供将来使用。

keyword

salesforce.setup_audit_trail.delegate_user

在“设置”中执行操作的“以...身份登录”用户。如果“以...身份登录”用户未执行该操作,则此字段为空白。此字段在 API 版本 35.0 及更高版本中可用。

keyword

salesforce.setup_audit_trail.display

对“设置”中所做更改的完整描述。例如,如果“操作”字段的值为 PermSetCreate,“显示”字段的值类似于“创建了权限集 MAD: 使用用户许可证 Salesforce”。

keyword

salesforce.setup_audit_trail.responsible_namespace_prefix

未知

keyword

salesforce.setup_audit_trail.section

执行操作的“设置”菜单中的部分。例如,管理用户或公司资料。

keyword

更新日志

编辑
更新日志
版本 详细信息 Kibana 版本

1.0.0

增强 (查看拉取请求)
Salesforce 集成的 GA 版本。

增强 (查看拉取请求)
改进 Salesforce 集成文档和字段描述。

增强 (查看拉取请求)
更新文档以反映可选安全令牌的使用。

8.16.0 或更高版本

0.15.1

增强 (查看拉取请求)
改进 Salesforce 集成文档。

0.15.0

重大变更 (查看拉取请求)
改进 Salesforce 集成。

增强 (查看拉取请求)
为 Salesforce 集成添加仪表板。

0.14.1

增强 (查看拉取请求)
使用重新索引步骤更新 README。

0.14.0

增强 (查看拉取请求)
为敏感字段启用密钥。有关更多详细信息,请参阅 https://elastic.ac.cn/guide/en/fleet/current/agent-policy.html#agent-policy-secret-values

0.13.1

错误修复 (查看拉取请求)
由于错误,为旧版堆栈版本禁用密钥。

0.13.0

增强 (查看拉取请求)
为敏感字段启用密钥,支持从 8.12 版本开始。

0.12.1

错误修复 (查看拉取请求)
添加 null 和 ignore_missing 检查以处理 event.original 字段。

0.12.0

增强 (查看拉取请求)
将请求跟踪器日志计数限制为五。

0.11.0

增强 (查看拉取请求)
将软件包 format_version 更新为 3.0.0。

0.10.1

增强 (查看拉取请求)
添加请求超时配置。

0.10.0

增强 (查看拉取请求)
将所有权从 obs-service-integrations 重命名为 obs-infraobs-integrations

0.9.0

增强 (查看拉取请求)
添加一个新标志以启用请求跟踪

0.8.0

增强 (查看拉取请求)
使仪表板与 Kibana 8.6.0 及更高版本的元字段兼容。

0.7.0

增强 (查看拉取请求)
Salesforce 集成包,带有 “logout_stream” 数据流。

0.6.0

增强 (查看拉取请求)
Salesforce 集成包,带有 “login_stream” 数据流。

0.5.0

增强 (查看拉取请求)
将可视化迁移到 Lens。

0.4.1

增强 (查看拉取请求)
添加了类别和/或子类别。

0.4.0

增强 (查看拉取请求)
Salesforce 集成包,带有 “setupaudittrail” 数据流。

0.3.0

增强 (查看拉取请求)
Salesforce 集成包,带有 “apex” 数据流。

0.2.1

错误修复 (查看拉取请求)
为“login_rest”和“logout_rest”添加分页支持。

0.2.0

增强 (查看拉取请求)
Salesforce 集成包,带有 “logout_rest” 数据流。

0.1.0

增强 (查看拉取请求)
Salesforce 集成包,带有 “login_rest” 数据流。