加载中

连接到不同 Elastic Cloud Enterprise 环境中的部署

本节解释如何配置部署以远程连接到属于不同 Elastic Cloud Enterprise 环境的集群。

术语说明

在远程集群的情况下,发起连接和请求的 Elasticsearch 集群或部署通常被称为本地集群,而接收请求的 Elasticsearch 集群或部署则被称为远程集群

注意

如果在 ECE 上的远程集群上应用了网络安全筛选器,则远程集群管理员必须配置 IP 筛选器,以允许来自本地 ECE 分配器主机的 IP 地址(或 CIDR 范围)的连接。有关更多信息,请参阅远程集群和网络安全

在开始之前,请考虑您希望用于验证集群之间远程连接的安全模型,并按照相应的步骤操作。

API 密钥

对于基于 Elastic Stack 8.14 或更高版本的部署,您可以使用 API 密钥对到远程集群的跨集群操作进行身份验证和授权。该模型使用专用的服务端点(默认端口为 9443),让管理员能够精细控制远程访问。API 密钥在远程集群上创建,并定义了任何用户在远程集群上可以行使的最大权限。具有远程权限的本地用户角色授予特定用户访问权限,且不能扩展 API 密钥的权限。默认情况下,除非用户是超级用户或被分配了此类角色,否则没有任何远程权限。

从 Elastic Stack 9.3 开始,API 密钥安全模型还支持强身份验证,从而添加了一层额外的安全性。使用此功能,可以限制 API 密钥仅能用于提供允许的证书身份的请求,远程集群将在身份验证期间对其进行验证。

TLS 证书(在 Elastic Stack 9.0.0 中已弃用)
该模型在 Elasticsearch 传输(transport)接口上使用双向 TLS 身份验证来进行跨集群操作。用户身份验证在本地集群上执行,用户的角色名称会被传递到远程集群以进行授权。由于本地集群上的超级用户会自动获得对远程集群的全盘读取访问权限,因此该模型仅适用于同一安全域内的集群。

请按照以下步骤为远程集群配置API 密钥安全模型。如果遇到任何问题,请参阅故障排除

  • 本地和远程部署必须基于 Elastic Stack 8.14 或更高版本。
  • 与基于证书的安全模型不同,API 密钥模型不需要集群之间的双向信任;只需本地集群信任远程集群的证书即可。
  1. 在远程集群上,使用 Elasticsearch APIKibana 创建跨集群 API 密钥。配置该密钥,使其包含对要用于跨集群搜索或跨集群复制的索引的访问权限。
  2. 将编码后的密钥(响应中的 encoded 字段)复制到安全位置。配置本地集群时需要用到它。

本地部署需要先前创建的 API 密钥,以便使用相应的权限集向远程部署进行身份验证。要启用此功能,请将 API 密钥添加到本地部署的密钥库(keystore)中。

要遵循的步骤取决于远程 ECE 环境的代理或负载均衡基础设施的证书颁发机构 (CA) 是公有还是私有。

为了在其他 ECE 环境中配置远程集群,您首先需要在两个 ECE 环境的平台之间建立双向信任关系

  1. 在第一个 ECE 环境的 Platform > Trust Management > Trust parameters 下下载证书并复制环境 ID。
  2. 使用上一步中的证书和环境 ID,在另一个 ECE 环境的 Platform > Trust Management > Trusted environments 下创建新的信任关系。
  3. 从第二个 ECE 环境下载证书并复制环境 ID,然后与第一个 ECE 环境中的资源建立新的信任关系。

现在,这些环境中的部署将能够配置与另一个环境中的部署的信任关系。信任关系必须始终是双向的(本地集群必须信任远程集群,反之亦然),且可以在每个部署的安全设置中进行配置。

  1. 访问要用于跨集群操作的部署的 Security 页面。

  2. 选择 Remote Connections > Add trusted environment,然后选择 Elastic Cloud Enterprise。接着点击 Next

  3. 选择 证书 (Certificates) 作为身份验证机制,然后单击 下一步 (Next)

  4. 从下拉菜单中,选择在配置平台级信任中配置的环境之一。

  5. 选择以下选项之一以配置与 ECE 环境的信任级别

    • 所有部署 (All deployments) - 此部署信任 ECE 环境中的所有部署,包括新建的部署。
    • 特定部署 (Specific deployments) - 指定您希望在 ECE 环境中信任的现有部署。必须为每个远程集群输入完整的 Elasticsearch 集群 ID。Elasticsearch Cluster ID 可以在部署概览页面的 Applications 下找到。
  6. 选择 创建信任 (Create trust) 以完成配置。

  7. 配置 ECE 环境中的对应部署以信任此部署。只有当两个部署相互信任时,您才能成功连接它们。

请注意,必须完整且正确地输入环境 ID 和集群 ID。出于安全原因,无法对 ID 进行验证。如果跨环境信任似乎不起作用,从仔细检查这些 ID 开始是一个很好的切入点。

可以使用信任关系 API 建立两个 Elastic Cloud Enterprise 环境之间的信任。例如,调用获取信任关系列表端点可以获取受信任环境的列表

curl -X GET -H "Authorization: ApiKey $ECE_API_KEY" https://$COORDINATOR_HOST:12443/api/v1/regions/ece-region/platform/configuration/trust-relationships?include_certificate=false
		

对于每个远程 ECE 环境,它将返回类似于以下内容:

{
   "id":"83a7b03f2a4343fe99f09bd27ca3d9ec",
   "name":"ECE2",
   "trust_by_default":false,
   "account_ids":[
      "651598b101e54ccab1bfdcd8b6e3b8be"
   ],
   "local":false,
   "last_modified":"2022-01-9T14:33:20.465Z"
}
		

为了信任名称为 ECE2 的环境中的集群 ID 为 cf659f7fe6164d9691b284ae36811be1 的部署(注意:请使用 Elasticsearch 集群 ID,而不是部署 ID),您需要更新信任设置,添加如下所示的外部信任关系

{
  "trust":{
    "accounts":[
      {
         "account_id":"ec38dd0aa45f4a69909ca5c81c27138a",
         "trust_all":true
      }
    ],
    "external":[
      {
         "trust_relationship_id":"83a7b03f2a4343fe99f09bd27ca3d9ec",
         "trust_all":false,
         "trust_allowlist":[
            "cf659f7fe6164d9691b284ae36811be1"
         ]
      }
    ]
  }
}
		

您现在可以远程连接到受信任的集群。

在本地集群上,使用 Kibana 或 Elasticsearch API 添加远程集群。

注意

此远程集群配置使用的是代理模式 (Proxy mode),并要求 ECE 分配器 (allocator) 能够连接到远程地址端点。

要在 Kibana 中添加远程集群

  1. 转到导航菜单中的 远程集群 (Remote Clusters) 管理页面,或使用全局搜索字段

  2. 选择 添加远程集群 (Add a remote cluster)

  3. Select connection type 中,选择您之前准备的身份验证机制(API keysCertificates),然后点击 Next

  4. 添加连接信息 (Add connection information) 中,填写以下字段

    • 远程集群名称 (Remote cluster name):此集群别名 (cluster alias) 是代表与远程集群连接的唯一标识符,用于区分本地和远程索引。

      使用 API 密钥身份验证时,此别名必须与您在 Cloud UI 中添加 API 密钥时配置的 Remote cluster name 保持一致。

    • Remote address:此值可以在要用作远程集群的 Elastic Cloud Enterprise 部署的 Security 页面上找到。从 Remote cluster parameters 区域复制 Proxy address

      注意

      如果您将 API 密钥用作安全模型,请将端口更改为 9443

    • 配置高级选项 (Configure advanced options)(可选):如果您需要自定义其他设置,请展开此部分。

      • TLS 服务器名称 (TLS server name):如果远程集群出示的证书是为与远程地址不同的名称签署的,请指定一个值。

        此值可以在要用作远程集群的 Elastic Cloud Enterprise 部署的 Security 页面上找到。从 Remote cluster parameters 区域复制 Server name

      • 套接字连接数 (Socket connections):定义与远程集群打开的连接数。

    有关可用客户端连接设置的完整列表,请参阅远程集群设置参考

  5. 点击 Next

  6. 确认设置 (Confirm setup) 中,单击 添加远程集群 (Add remote cluster)(您已在上一步中建立了信任)。

注意

如果您在建立连接时遇到问题,且远程集群是带有私有证书的 Elastic Cloud Enterprise 环境的一部分,请确保代理地址和服务器名称与证书信息相匹配。有关更多信息,请参阅在 Elastic Cloud Enterprise 中管理端点

要添加远程集群,请使用 更新集群设置 API。配置以下字段

  • Remote cluster alias:使用 API 密钥身份验证时,集群别名必须与您在 Cloud UI 中添加 API 密钥时配置的 Remote cluster name 相匹配。

  • modeproxy

  • proxy_address:此值可以在要用作远程集群的 Elastic Cloud Enterprise 部署的 Security 页面上找到。从 Remote cluster parameters 区域复制 Proxy address

    使用 API 时,可以通过用分号拼接字段 metadata.endpoint 和端口 9400,从 Elasticsearch 资源信息中获取此值。

    注意

    如果您将 API 密钥用作安全模型,请将端口更改为 9443

  • server_name:此值可以在要用作远程集群的 Elastic Cloud Enterprise 部署的 Security 页面上找到。从 Remote cluster parameters 区域复制 Server name

    使用 API 时,可以从 Elasticsearch 资源信息字段 metadata.endpoint 中获取此值。

此示例展示了添加或更新远程集群的 API 调用。别名 alias-for-my-remote-cluster 必须与向部署添加 API 密钥时使用的远程集群名称相匹配

PUT /_cluster/settings
{
  "persistent": {
    "cluster": {
      "remote": {
        "alias-for-my-remote-cluster": {
          "mode":"proxy",
          "proxy_address": "<REMOTE_CLUSTER_ADDRESS>:9443",
          "server_name": "<REMOTE_CLUSTER_SERVER_NAME>"
        }
      }
    }
  }
}
		
  1. 远程集群别名

有关代理模式下可用的客户端连接设置的完整列表,请参阅远程集群设置参考

如果您将基于 API 密钥的安全模型用于跨集群复制或跨集群搜索,用于连接到远程集群的跨集群 API 密钥将定义任何用户在该远程集群上可以行使的最大权限。请在本地集群上定义具有远程索引权限远程集群权限的用户角色,以向特定用户授予远程访问权限。默认情况下,除非用户是超级用户或被分配了包含远程权限的角色,否则没有任何远程权限。

如果您使用的是基于 TLS 证书的身份验证,请在本地集群和远程集群上创建同名的角色。每个集群各自定义其角色权限,但名称必须匹配,以便在连接的两端均能强制执行授权。

有关更多详细信息,请参阅为跨集群复制配置权限为跨集群搜索配置权限

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.