Elastic 托管连接器

编辑

托管的 Elastic 连接器可以直接在您的 Elastic Cloud 部署中使用。无需额外的基础设施。

托管连接器将数据源直接同步到 Elasticsearch 索引。使用 Kibana 中的 连接器 工作流程创建这些索引。

以下连接器可用作 Elastic 托管连接器。有关每个连接器的特定信息,请参阅每个连接器的参考文档。

可用性和先决条件

编辑

托管连接器在 Elastic 版本 8.5.0 中引入。

您的 Elastic Cloud 部署必须包括以下 Elastic 服务

请参阅 Elastic 订阅页面Elastic 搜索 部分的原生集成,了解托管连接器的许可要求。

在 Kibana UI 中的使用

编辑

按照 Kibana 中的 连接器 工作流程选择 连接器 摄取方法。选择一个数据源,创建一个 Elasticsearch 索引,并配置一个托管连接器来管理该索引。

use a connector workflow

选择一个连接器

编辑

从可用选项中选择要同步的数据源,然后选择 继续

创建索引

编辑

创建一个将由连接器管理的新的索引

  1. 命名您的索引,并可选择更改语言分析器以匹配您数据源的人类语言。(索引名称将自动以 search- 为前缀。)
  2. 选择 创建索引

索引已创建并准备好进行配置

此操作需要

  1. 访问 Kibana
  2. 创建或管理索引的权限
  3. 针对 .elastic-connectors 索引的 write 索引权限
  4. manage_api_key 集群权限,以允许创建 API 密钥
  5. write_connector_secrets 集群权限,以允许将 API 密钥存储为机密

配置连接器

编辑

创建一个将由连接器管理的新索引。

从上面继续,或者导航到 Kibana UI 中的以下位置

从主菜单中选择 搜索 > 内容 > Elasticsearch 索引,或使用 全局搜索字段

选择要配置的索引,然后选择 配置 选项卡。

配置连接器

  1. 编辑连接器的名称和描述。您的团队可以使用此信息来区分此索引与其他连接器索引。(这些字段描述了连接器,并且独立于 Elasticsearch 索引名称。)
  2. 保存您的更改。
  3. 编辑数据源配置。此处的字段因连接器而异。有关详细信息,请参阅每个连接器的文档(请参阅上面的 Elastic 托管连接器列表)。有关安全注意事项,请参阅 安全
  4. 保存您的更改。

或者,选择 编辑同步计划 以开始管理连接器

此操作需要

  1. 访问 Kibana
  2. 创建或管理索引的权限
  3. 针对 .elastic-connectors 索引的 write 索引权限
  4. manage_api_key 集群权限,以允许创建 API 密钥
  5. write_connector_secrets 集群权限,以允许将 API 密钥存储为机密

管理连接器

编辑

要管理文档、同步、同步规则、摄取管道和其他连接器功能,请参阅 Kibana 中的连接器 UI

管理 API 密钥

编辑

Elastic 托管连接器的 API 密钥在 Elastic 版本 8.13.0 中引入。在早期版本中创建的托管连接器在升级到 8.13.0 后不会自动使用 API 密钥。有关更多信息,请参阅启用 API 密钥

托管连接器使用 API 密钥与 Elasticsearch 通信。通过 Kibana UI 中的“连接器”页面管理托管连接器时,API 密钥管理将自动处理。Elastic 托管连接器的 API 密钥具有三个索引的 manage 权限

  1. 附加的索引
  2. 用于文档级安全性的访问控制 (ACL) 索引
  3. 内部 .elastic-connectors 索引。

通过 Kibana 更改附加的索引将自动使现有的 API 密钥失效并生成一个新的 API 密钥。如果要轮换现有的 API 密钥,请导航到 配置 选项卡。向下滚动到 管理 API 密钥 并选择 生成 API 密钥。此操作将使之前的 API 密钥失效,创建一个新的 API 密钥,并更新连接器机密。

Elastic 托管连接器的 API 密钥存储在名为 .connector-secrets 的内部系统索引上。只有具有 write_connector-secrets 集群权限的用户才能通过 API 请求写入此索引。只有 Enterprise Search 实例才有权从此索引读取数据。

管理 Elastic 托管连接器的用户需要将其角色分配 write_connector_secrets 集群权限。有关安全注意事项,请参阅安全

以编程方式管理 API 密钥

编辑

您也可以以编程方式创建和存储 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 密钥

编辑

8.13.0 之前创建的托管连接器在升级后最初没有 API 密钥。在将连接器转换为使用 API 密钥之前,无法更改这些连接器的附加索引。

展开以下部分,了解为升级的 Elastic 托管连接器启用 API 密钥的步骤。
  1. Dev Tools 中运行以下命令,以启用连接器的 API 密钥,替换指示的值。

    resp = client.update(
        index=".elastic-connectors",
        id="connector_id",
        doc={
            "features": {
                "native_connector_api_keys": {
                    "enabled": True
                }
            }
        },
    )
    print(resp)
    const response = await client.update({
      index: ".elastic-connectors",
      id: "connector_id",
      doc: {
        features: {
          native_connector_api_keys: {
            enabled: true,
          },
        },
      },
    });
    console.log(response);
    POST .elastic-connectors/_update/connector_id
    {
      "doc": {
        "features": {
          "native_connector_api_keys": {
            "enabled": true
          }
        }
      }
    }
  2. 返回“连接器”页面,并导航到 配置 选项卡。
  3. 向下滚动到 管理 API 密钥 并选择 生成 API 密钥

您的托管连接器现在正在使用 API 密钥来授权摄取到 Elasticsearch 中。

通过 API 使用

编辑

在 8.12 中,我们引入了一组 连接器 API 来创建和管理 Elastic 连接器和同步作业,以及一个 CLI 工具。如果您想以编程方式处理连接器和同步作业,请使用这些工具。

端到端示例

编辑

以下示例演示了如何在 Elastic Cloud 上使用托管连接器:托管连接器教程 (MongoDB)

转换托管连接器

编辑

您可以将托管连接器转换为自托管连接器,以便在您自己的基础设施上运行。您将在 UI 的连接器索引的概述页面上找到相关说明。

将托管连接器转换为自托管连接器是不可逆的操作!