Elastic SharePoint Server 连接器参考

编辑

Elastic SharePoint Server 连接器连接器,用于 Microsoft SharePoint Server

此连接器使用开源 Elastic 连接器框架以 Python 编写。查看此连接器的源代码

正在查找 SharePoint 在线连接器?请参阅 SharePoint Online 参考

Elastic 管理的连接器参考

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

自 Elastic 8.15.0 起,此连接器作为托管服务提供。要使用此连接器,请满足所有托管连接器要求

此连接器处于 beta 版,并且可能会发生更改。Beta 版功能可能会发生更改,并且不在一般可用 (GA) 功能的支持 SLA 范围内。Elastic 计划在未来的版本中将此功能推广到 GA。

创建 SharePoint Server 连接器
编辑

使用 UI

编辑

要创建新的 SharePoint Server 连接器

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

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

使用 API

编辑

您可以使用 Elasticsearch 创建连接器 API 来创建新的本机 SharePoint Server 连接器。

例如

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-sharepoint_server-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from SharePoint Server",
  "service_type": "sharepoint_server",
  "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 管理的连接器

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

兼容性
编辑

以下 SharePoint Server 版本兼容

  • SharePoint 2013
  • SharePoint 2016
  • SharePoint 2019
配置
编辑

需要以下配置字段来设置连接器

authentication
身份验证模式,基本NTLM
username
SharePoint Server 实例的帐户用户名。
password
帐户的密码。
host_url

托管 SharePoint Server 实例的服务器主机 URL。示例

  • https://192.158.1.38:8080
  • https://<tenant_name>.sharepoint.com
site_collections

要从 SharePoint Server 中提取的站点集列表(以逗号分隔)。示例

  • collection1
  • collection1, collection2
ssl_enabled
是否启用 SSL 验证。默认值为 False
ssl_ca

SharePoint Server 所需的 SSL 证书内容。如果 ssl_enabled 设置为 False,请将此字段留空。

示例证书

-----BEGIN CERTIFICATE-----
MIID+jCCAuKgAwIBAgIGAJJMzlxLMA0GCSqGSIb3DQEBCwUAMHoxCzAJBgNVBAYT
...
7RhLQyWn2u00L7/9Omw=
-----END CERTIFICATE-----
retry_count
在请求 SharePoint Server 实例失败后重试的次数。默认值为 3
use_document_level_security

切换以启用文档级别安全性 (DLS)。启用后,完全同步将提取每个文档的访问控制列表,并将其存储在 _allow_access_control 字段中。访问控制同步会提取用户的访问控制列表,并将其存储在单独的索引中。

启用后,将提供以下精细权限切换

  • 提取唯一列表权限:启用此选项以提取唯一 列表权限。如果禁用此设置,列表将从其父站点继承权限。
  • 提取唯一列表项权限:启用此选项以提取唯一 列表项权限。如果禁用此设置,列表项将从其父站点继承权限。

    如果留空,这些精细权限切换将使用默认值 true。请注意,这些设置可能会增加同步时间。

文档和同步
编辑

连接器会同步以下 SharePoint 对象类型

  • 站点和子站点
  • 列表
  • 列表项及其附件内容
  • 文档库及其附件内容(包括网页)
同步类型
编辑

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

此连接器还支持增量同步

文档级别安全性
编辑

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

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

同步规则
编辑

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

当前版本中此连接器不支持高级同步规则。当前,筛选通过提取管道进行控制。

内容提取
编辑

请参阅内容提取

已知问题
编辑

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

故障排除
编辑

请参阅故障排除

安全性
编辑

请参阅安全性

框架和源代码
编辑

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

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

自管理连接器参考

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

此连接器作为自管理 自管理连接器提供。此自管理连接器与 Elastic 版本 8.9.0+ 兼容。要使用此连接器,请满足所有自管理连接器要求

此连接器处于 beta 版,并且可能会发生更改。Beta 版功能可能会发生更改,并且不在一般可用 (GA) 功能的支持 SLA 范围内。Elastic 计划在未来的版本中将此功能推广到 GA。

创建 SharePoint Server 连接器
编辑

使用 UI

编辑

要创建新的 SharePoint Server 连接器

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

使用 API

编辑

您可以使用 Elasticsearch 的创建连接器 API 来创建一个新的自管理 SharePoint Server 自管理连接器。

例如

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-sharepoint_server-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from SharePoint Server",
  "service_type": "sharepoint_server"
}
您还需要创建一个 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 文档

使用方法
编辑

要将此连接器用作自管理连接器,请参阅自管理连接器

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

兼容性
编辑

以下 SharePoint Server 版本与 Elastic 连接器框架兼容

  • SharePoint 2013
  • SharePoint 2016
  • SharePoint 2019
配置
编辑

当使用自管理连接器工作流程时,这些字段最初将使用连接器源代码中设置的默认配置。这些设置在 get_default_configuration 函数定义中。

这些可配置字段将在 Kibana UI 中使用各自的标签呈现。连接后,您将能够在 Kibana 中更新这些值。

需要以下配置字段来设置连接器

authentication
身份验证模式,基本NTLM
username
SharePoint Server 实例的帐户用户名。
password
帐户的密码。
host_url

托管 SharePoint Server 实例的服务器主机 URL。示例

  • https://192.158.1.38:8080
  • https://<tenant_name>.sharepoint.com
site_collections

要从 SharePoint Server 中提取的站点集列表(以逗号分隔)。示例

  • collection1
  • collection1, collection2
ssl_enabled
是否启用 SSL 验证。默认值为 False
ssl_ca

SharePoint Server 实例所需的 SSL 证书内容。如果 ssl_enabled 设置为 False,则将此字段留空。

示例证书

-----BEGIN CERTIFICATE-----
MIID+jCCAuKgAwIBAgIGAJJMzlxLMA0GCSqGSIb3DQEBCwUAMHoxCzAJBgNVBAYT
...
7RhLQyWn2u00L7/9Omw=
-----END CERTIFICATE-----
retry_count
在对 SharePoint Server 实例的请求失败后重试的次数。默认值为 3
use_document_level_security

切换以启用文档级别安全性 (DLS)。启用后,完全同步将提取每个文档的访问控制列表,并将其存储在 _allow_access_control 字段中。访问控制同步会提取用户的访问控制列表,并将其存储在单独的索引中。

启用后,将提供以下精细权限切换

  • 提取唯一列表权限:启用此选项以提取唯一 列表权限。如果禁用此设置,列表将从其父站点继承权限。
  • 提取唯一列表项权限:启用此选项以提取唯一 列表项权限。如果禁用此设置,列表项将从其父站点继承权限。

    如果留空,这些精细权限切换将使用默认值 true。请注意,这些设置可能会增加同步时间。

使用 Docker 部署
编辑

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

步骤 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: sharepoint_server
    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 仓库中的 README

文档和同步
编辑

连接器会同步以下 SharePoint 对象类型

  • 站点和子站点
  • 列表
  • 列表项及其附件内容
  • 文档库及其附件内容(包括网页)
  • 默认情况下,不会提取大于 10 MB 的文件的内容。使用自管理的本地提取服务来处理较大的二进制文件。
  • 权限不会同步。所有索引到 Elastic 部署的文档对所有有权访问该 Elasticsearch 索引的用户可见。
同步类型
编辑

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

此连接器还支持增量同步,但此功能目前默认禁用。请参阅链接的文档以启用增量同步。

文档级安全性
编辑

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

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

同步规则
编辑

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

当前版本中此连接器不支持高级同步规则。当前,筛选通过提取管道进行控制。

内容提取
编辑

请参阅内容提取

自管理连接器操作
编辑
端到端测试
编辑

连接器框架使操作员能够针对真实数据源运行功能测试。有关更多详细信息,请参阅连接器测试

要对 SharePoint 连接器执行 E2E 测试,请运行以下命令

$ make ftest NAME=sharepoint_server

为了加快测试速度,请添加 DATA_SIZE=small 标志

make ftest NAME=sharepoint_server DATA_SIZE=small
已知问题
编辑

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

故障排除
编辑

请参阅故障排除

安全性
编辑

请参阅安全性

框架和源代码
编辑

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

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