Elastic Outlook 连接器参考

编辑

Elastic Outlook 连接器是使用 Elastic 连接器框架构建的,并且可以作为自托管的自托管连接器使用。

Elastic 托管连接器参考

编辑
查看Elastic 托管连接器参考
可用性和先决条件
编辑

此连接器在 Elastic Cloud 中作为托管连接器(托管服务)提供。

此连接器与 Elastic 版本8.13.0+兼容。

要使用此连接器,请满足所有托管连接器要求

创建 Outlook 连接器
编辑

使用 UI

编辑

要创建新的 Outlook 连接器

  1. 在 Kibana UI 中,从主菜单导航至搜索 → 内容 → 连接器页面,或使用全局搜索字段
  2. 按照说明创建新的原生Outlook连接器。

有关其他操作,请参阅Kibana 中的连接器 UI

使用 API

编辑

您可以使用 Elasticsearch 创建连接器 API 来创建新的原生 Outlook 连接器。

例如

resp = client.connector.put(
    connector_id="my-{service-name-stub}-connector",
    index_name="my-elasticsearch-index",
    name="Content synced from {service-name}",
    service_type="{service-name-stub}",
    is_native=True,
)
print(resp)
const response = await client.connector.put({
  connector_id: "my-{service-name-stub}-connector",
  index_name: "my-elasticsearch-index",
  name: "Content synced from {service-name}",
  service_type: "{service-name-stub}",
  is_native: true,
});
console.log(response);
PUT _connector/my-outlook-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from Outlook",
  "service_type": "outlook",
  "is_native": true
}
您还需要为连接器创建 API 密钥以供使用。

用户需要集群权限 manage_api_keymanage_connectorwrite_connector_secrets 才能以编程方式生成 API 密钥。

要为连接器创建 API 密钥

  1. 运行以下命令,替换指示的值。请注意响应中返回的 idencoded

    resp = client.security.create_api_key(
        name="my-connector-api-key",
        role_descriptors={
            "my-connector-connector-role": {
                "cluster": [
                    "monitor",
                    "manage_connector"
                ],
                "indices": [
                    {
                        "names": [
                            "my-index_name",
                            ".search-acl-filter-my-index_name",
                            ".elastic-connectors*"
                        ],
                        "privileges": [
                            "all"
                        ],
                        "allow_restricted_indices": False
                    }
                ]
            }
        },
    )
    print(resp)
    const response = await client.security.createApiKey({
      name: "my-connector-api-key",
      role_descriptors: {
        "my-connector-connector-role": {
          cluster: ["monitor", "manage_connector"],
          indices: [
            {
              names: [
                "my-index_name",
                ".search-acl-filter-my-index_name",
                ".elastic-connectors*",
              ],
              privileges: ["all"],
              allow_restricted_indices: false,
            },
          ],
        },
      },
    });
    console.log(response);
    POST /_security/api_key
    {
      "name": "my-connector-api-key",
      "role_descriptors": {
        "my-connector-connector-role": {
          "cluster": [
            "monitor",
            "manage_connector"
          ],
          "indices": [
            {
              "names": [
                "my-index_name",
                ".search-acl-filter-my-index_name",
                ".elastic-connectors*"
              ],
              "privileges": [
                "all"
              ],
              "allow_restricted_indices": false
            }
          ]
        }
      }
    }
  2. 使用 encoded 值来存储连接器密钥,并记录此响应中返回的 id

    resp = client.connector.secret_post(
        body={
            "value": "encoded_api_key"
        },
    )
    print(resp)
    const response = await client.connector.secretPost({
      body: {
        value: "encoded_api_key",
      },
    });
    console.log(response);
    POST _connector/_secret
    {
      "value": "encoded_api_key"
    }
  3. 使用 API 密钥 id 和连接器密钥 id 来更新连接器

    resp = client.connector.update_api_key_id(
        connector_id="my_connector_id>",
        api_key_id="API key_id",
        api_key_secret_id="secret_id",
    )
    print(resp)
    const response = await client.connector.updateApiKeyId({
      connector_id: "my_connector_id>",
      api_key_id: "API key_id",
      api_key_secret_id: "secret_id",
    });
    console.log(response);
    PUT /_connector/my_connector_id>/_api_key_id
    {
      "api_key_id": "API key_id",
      "api_key_secret_id": "secret_id"
    }

有关所有可用连接器 API 的详细信息,请参阅Elasticsearch API 文档

用法
编辑

要在 Elastic Cloud 中将此连接器用作托管连接器,请使用 Kibana UI 中的连接器工作流程。

要创建新的 Outlook 连接器

  1. 在 Kibana UI 中,导航至搜索 → 连接器页面。
  2. 选择新建原生连接器按钮。
  3. 选择Outlook连接器。

有关其他操作,请参阅Kibana 中的连接器 UI

连接到 Outlook
编辑

Outlook 连接器同时支持云(Office365 Outlook)和本地(Exchange Server)平台。

连接到 Exchange Server
编辑

为了连接到 Exchange Server,连接器会借助 ldap3 Python 库提取 Active Directory 用户。

连接到 Office365 Outlook (Outlook 云)
编辑

要使用 Azure 与 Outlook 连接器集成,请按照以下步骤创建和配置 Azure 应用程序

  1. 导航至Azure 门户并使用您的凭据登录。
  2. 单击应用注册以注册新应用程序。
  3. 导航至概述选项卡。记下 客户端 ID租户 ID
  4. 单击证书和密钥选项卡并创建一个新的客户端密钥。请妥善保管此密钥。
  5. 转到API 权限选项卡。

    • 单击“添加权限”。
    • 选择“我的组织使用的 API”。
    • 搜索并选择“Office 365 Exchange Online”。
    • 添加 full_access_as_app 应用程序权限。

现在,您可以使用记下的客户端 ID、租户 ID 和客户端密钥来配置 Outlook 连接器。

配置
编辑
Outlook 数据源(必需)
下拉菜单以确定 Outlook 平台类型:outlook_cloudoutlook_server。默认值为 outlook_cloud
租户 ID
如果数据源为 outlook_cloud,则为必需。托管 Outlook 实例的 Azure 帐户的租户 ID。
客户端 ID
如果数据源为 outlook_cloud,则为必需。用于向 Outlook 实例进行身份验证的客户端 ID。
客户端密钥值
如果数据源为 outlook_cloud,则为必需。用于向 Outlook 实例进行身份验证的客户端密钥值。
Exchange Server
如果数据源为 outlook_server,则为必需。用于连接 Exchange Server 的 IP 地址。示例:127.0.0.1
Active Directory Server
如果数据源为 outlook_server,则为必需。用于从 Exchange Active Directory 中提取用户以提取数据的 IP 地址。示例:127.0.0.1
Exchange Server 用户名
如果数据源为 outlook_server,则为必需。用于向 Exchange Server 进行身份验证的用户名。
Exchange Server 密码
如果数据源为 outlook_server,则为必需。用于向 Exchange Server 进行身份验证的密码。
Exchange Server 域名
如果数据源为 outlook_server,则为必需。Exchange Server 用户的域名,例如 gmail.comexchange.local
启用 SSL
是否启用 SSL 验证。默认值为 False注意:此配置仅适用于 Outlook Server
SSL 证书

如果启用了 ssl,则为必需。SSL 证书的内容。示例证书

-----BEGIN CERTIFICATE-----
MIID+jCCAuKgAwIBAgIGAJJMzlxLMA0GCSqGSIb3DQEBCwUAMHoxCzAJBgNVBAYT
...
7RhLQyWn2u00L7/9Omw=
-----END CERTIFICATE-----

注意:此配置仅适用于 Outlook Server

文档级安全性

切换以启用文档级安全性 (DLS)。启用后

  • 完全同步将提取每个文档的访问控制列表,并将其存储在 _allow_access_control 字段中。
  • 访问控制同步提取用户的访问控制列表,并将其存储在单独的索引中。
内容提取
编辑

请参阅内容提取

文档和同步
编辑

连接器会同步以下对象和实体

  • 邮件

    • 收件箱邮件
    • 已发送邮件
    • 存档邮件
    • 垃圾邮件
  • 联系人
  • 日历事件
  • 任务
  • 附件

    • 邮件附件
    • 任务附件
    • 日历附件
  • 不会提取大于 10 MB 的文件中的内容。(自托管连接器可以使用自托管本地提取服务来处理更大的二进制文件。)
  • 权限不会同步。索引到 Elastic 部署中的所有文档对于所有有权访问该 Elastic 部署的用户都是可见的。
同步类型
编辑

默认情况下,所有连接器都支持完全同步

此连接器还支持增量同步

文档级安全性
编辑

文档级安全性 (DLS) 使您可以根据用户的权限限制对文档的访问。有关如何为此连接器启用 DLS,请参阅本页上的配置

请参阅搜索应用程序中的 DLS,了解在构建搜索应用程序时,如何从启用 DLS 的连接器中提取数据。示例使用 SharePoint Online 作为数据源,但相同的步骤适用于每个连接器。

同步规则
编辑

基本同步规则对于所有连接器都是相同的,并且默认可用。

高级同步规则
编辑

当前版本中此连接器不提供高级同步规则。

连接器客户端操作
编辑
端到端测试
编辑

注意:在当前版本的连接器中,端到端测试不可用。

已知问题
编辑

目前此连接器没有已知问题。有关所有连接器的已知问题列表,请参阅已知问题

故障排除
编辑

请参阅故障排除

安全性
编辑

请参阅安全性

框架和源代码
编辑

此连接器使用 Elastic 连接器框架,用 Python 编写。

查看此连接器的源代码(分支 8.17,与 Elastic 8.17 兼容)。

自托管连接器参考

编辑
查看自托管连接器参考
可用性和先决条件
编辑

此连接器可作为自托管的自托管连接器使用。要使用此连接器,请满足所有自托管连接器先决条件

创建 Outlook 连接器
编辑

使用 UI

编辑

要创建新的 Outlook 连接器

  1. 在 Kibana UI 中,从主菜单导航至搜索 → 内容 → 连接器页面,或使用全局搜索字段
  2. 按照说明创建新的Outlook自托管连接器。

使用 API

编辑

您可以使用 Elasticsearch 创建连接器 API 来创建新的自托管 Outlook 自托管连接器。

例如

resp = client.connector.put(
    connector_id="my-{service-name-stub}-connector",
    index_name="my-elasticsearch-index",
    name="Content synced from {service-name}",
    service_type="{service-name-stub}",
)
print(resp)
const response = await client.connector.put({
  connector_id: "my-{service-name-stub}-connector",
  index_name: "my-elasticsearch-index",
  name: "Content synced from {service-name}",
  service_type: "{service-name-stub}",
});
console.log(response);
PUT _connector/my-outlook-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from Outlook",
  "service_type": "outlook"
}
您还需要为连接器创建 API 密钥以供使用。

用户需要集群权限 manage_api_keymanage_connectorwrite_connector_secrets 才能以编程方式生成 API 密钥。

要为连接器创建 API 密钥

  1. 运行以下命令,替换指示的值。请注意响应中返回的 encoded

    resp = client.security.create_api_key(
        name="connector_name-connector-api-key",
        role_descriptors={
            "connector_name-connector-role": {
                "cluster": [
                    "monitor",
                    "manage_connector"
                ],
                "indices": [
                    {
                        "names": [
                            "index_name",
                            ".search-acl-filter-index_name",
                            ".elastic-connectors*"
                        ],
                        "privileges": [
                            "all"
                        ],
                        "allow_restricted_indices": False
                    }
                ]
            }
        },
    )
    print(resp)
    const response = await client.security.createApiKey({
      name: "connector_name-connector-api-key",
      role_descriptors: {
        "connector_name-connector-role": {
          cluster: ["monitor", "manage_connector"],
          indices: [
            {
              names: [
                "index_name",
                ".search-acl-filter-index_name",
                ".elastic-connectors*",
              ],
              privileges: ["all"],
              allow_restricted_indices: false,
            },
          ],
        },
      },
    });
    console.log(response);
    POST /_security/api_key
    {
      "name": "connector_name-connector-api-key",
      "role_descriptors": {
        "connector_name-connector-role": {
          "cluster": [
            "monitor",
            "manage_connector"
          ],
          "indices": [
            {
              "names": [
                "index_name",
                ".search-acl-filter-index_name",
                ".elastic-connectors*"
              ],
              "privileges": [
                "all"
              ],
              "allow_restricted_indices": false
            }
          ]
        }
      }
    }
  2. 使用 API 密钥 encoded 值更新 config.yml 文件。

有关所有可用连接器 API 的详细信息,请参阅Elasticsearch API 文档

用法
编辑

要将此连接器用作自管理连接器,请使用连接器列表中的 Outlook 图标或 自定义连接器 工作流。

有关其他操作,请参阅Kibana 中的连接器 UI

连接到 Outlook
编辑

Outlook 连接器同时支持云(Office365 Outlook)和本地(Exchange Server)平台。

连接到 Exchange 服务器
编辑

为了连接到 Exchange Server,连接器会借助 ldap3 Python 库提取 Active Directory 用户。

连接到 Office365 Outlook(Outlook 云)
编辑

要使用 Azure 与 Outlook 连接器集成,请按照以下步骤创建和配置 Azure 应用程序

  1. 导航至Azure 门户并使用您的凭据登录。
  2. 单击应用注册以注册新应用程序。
  3. 导航至概述选项卡。记下 客户端 ID租户 ID
  4. 单击证书和密钥选项卡并创建一个新的客户端密钥。请妥善保管此密钥。
  5. 转到API 权限选项卡。

    • 单击“添加权限”。
    • 选择“我的组织使用的 API”。
    • 搜索并选择“Office 365 Exchange Online”。
    • 添加 full_access_as_app 应用程序权限。

现在,您可以使用记下的客户端 ID、租户 ID 和客户端密钥来配置 Outlook 连接器。

配置
编辑
data_source
(必需)下拉列表,用于确定 Outlook 平台类型:outlook_cloudoutlook_server。默认值为 outlook_cloud
tenant_id
(如果数据源为 outlook_cloud 则为必需)托管 Outlook 实例的 Azure 帐户的租户 ID。
client_id
(如果数据源为 outlook_cloud 则为必需)用于向 Outlook 实例进行身份验证的客户端 ID。
client_secret
(如果数据源为 outlook_cloud 则为必需)用于向 Outlook 实例进行身份验证的客户端密钥值。
exchange_server
(如果数据源为 outlook_server 则为必需)用于连接 Exchange 服务器的 IP 地址。示例:127.0.0.1
active_directory_server
(如果数据源为 outlook_server 则为必需)用于从 Exchange Active Directory 获取用户以获取数据的 IP 地址。示例:127.0.0.1
username
(如果数据源为 outlook_server 则为必需)用于向 Exchange 服务器进行身份验证的用户名。
password
(如果数据源为 outlook_server 则为必需)用于向 Exchange 服务器进行身份验证的密码。
domain
(如果数据源为 outlook_server 则为必需)Exchange 服务器用户的域名,例如 gmail.comexchange.local
ssl_enabled
是否启用 SSL 验证。默认值为 False注意:此配置仅适用于 Outlook Server
ssl_ca

(如果启用了 SSL 则为必需)SSL 证书的内容。示例证书

-----BEGIN CERTIFICATE-----
MIID+jCCAuKgAwIBAgIGAJJMzlxLMA0GCSqGSIb3DQEBCwUAMHoxCzAJBgNVBAYT
...
7RhLQyWn2u00L7/9Omw=
-----END CERTIFICATE-----
use_text_extraction_service
使用自托管内容提取服务。默认值为 False
document_level_security

切换以启用文档级安全性 (DLS)。启用后

  • 完全同步将提取每个文档的访问控制列表,并将其存储在 _allow_access_control 字段中。
  • 访问控制同步提取用户的访问控制列表,并将其存储在单独的索引中。

注意:此配置仅适用于 Outlook Server

使用 Docker 部署
编辑

您可以使用 Docker 将 Outlook 连接器部署为自管理连接器。请按照以下说明进行操作。

步骤 1:下载示例配置文件

下载示例配置文件。您可以手动下载,也可以运行以下命令

curl https://raw.githubusercontent.com/elastic/connectors/main/config.yml.example --output ~/connectors-config/config.yml

如果您的目录名称不同,或者您想使用其他配置文件名称,请记住更新 --output 参数值。

步骤 2:更新自管理连接器的配置文件

更新配置文件,使用以下设置来匹配您的环境

  • elasticsearch.host
  • elasticsearch.api_key
  • connectors

如果您正在针对 Docker 化的 Elasticsearch 和 Kibana 版本运行连接器服务,您的配置文件将如下所示

# When connecting to your cloud deployment you should edit the host value
elasticsearch.host: http://host.docker.internal:9200
elasticsearch.api_key: <ELASTICSEARCH_API_KEY>

connectors:
  -
    connector_id: <CONNECTOR_ID_FROM_KIBANA>
    service_type: outlook
    api_key: <CONNECTOR_API_KEY_FROM_KIBANA> # Optional. If not provided, the connector will use the elasticsearch.api_key instead

建议使用 elasticsearch.api_key 作为身份验证方法。但是,您也可以使用 elasticsearch.usernameelasticsearch.password 来向您的 Elasticsearch 实例进行身份验证。

注意:您可以通过简单地取消注释配置文件中的特定设置并修改其值来更改其他默认配置。

步骤 3:运行 Docker 映像

使用以下命令运行带有连接器服务的 Docker 映像

docker run \
-v ~/connectors-config:/config \
--network "elastic" \
--tty \
--rm \
docker.elastic.co/enterprise-search/elastic-connectors:8.17.0.0 \
/app/bin/elastic-ingest \
-c /config/config.yml

有关更多详细信息,请参阅 elastic/connectors 存储库中的 DOCKER.md

官方注册表中查找所有可用的 Docker 映像。

我们还有一个使用 Docker Compose 的快速入门自管理选项,因此您可以一次启动所有必需的服务:Elasticsearch、Kibana 和连接器服务。有关更多信息,请参阅 elastic/connectors 存储库中的此 自述文件

内容提取
编辑

请参阅内容提取

文档和同步
编辑

连接器会同步以下对象和实体

  • 邮件

    • 收件箱邮件
    • 已发送邮件
    • 存档邮件
    • 垃圾邮件
  • 联系人
  • 日历事件
  • 任务
  • 附件

    • 邮件附件
    • 任务附件
    • 日历附件
  • 默认情况下,不会提取大于 10 MB 的文件内容。您可以使用自管理本地提取服务来处理更大的二进制文件。
  • 权限不会同步。索引到 Elastic 部署中的所有文档对于所有有权访问该 Elastic 部署的用户都是可见的。
同步类型
编辑

默认情况下,所有连接器都支持完全同步

此连接器还支持增量同步

文档级安全
编辑

文档级安全 (DLS) 使您能够根据用户的权限限制对文档的访问。有关如何为此连接器启用 DLS 的信息,请参阅此页面上的配置

请参阅搜索应用程序中的 DLS,了解在构建搜索应用程序时,如何从启用 DLS 的连接器中提取数据。示例使用 SharePoint Online 作为数据源,但相同的步骤适用于每个连接器。

同步规则
编辑

基本同步规则对于所有连接器都是相同的,并且默认可用。

高级同步规则
编辑

当前版本中此连接器不提供高级同步规则。

连接器客户端操作
编辑
端到端测试
编辑

注意:在当前版本的连接器中,端到端测试不可用。

已知问题
编辑

目前此连接器没有已知问题。有关所有连接器的已知问题列表,请参阅已知问题

故障排除
编辑

请参阅故障排除

安全性
编辑

请参阅安全性

框架和源代码
编辑

此连接器包含在Elastic 连接器框架中。

查看此连接器的源代码(分支 8.17,与 Elastic 8.17 兼容)。