正在加载

AWS PrivateLink 流量过滤器

Elastic Cloud Hosted

仅针对 AWS PrivateLink 连接的流量过滤是 Elastic Cloud Hosted 中可用的安全层之一。它允许您限制如何访问您的部署。

请参阅流量过滤,了解有关 Elastic Cloud Hosted 中的流量过滤以及流量过滤规则如何工作的更多信息。

AWS PrivateLink 在两个 AWS Virtual Private Cloud (VPC) 之间建立安全连接。 VPC 可以属于不同的账户,即服务提供商及其服务消费者。 AWS 在 AWS 数据中心内路由 PrivateLink 流量,并且永远不会将其暴露于公共互联网。 在这种配置中,Elastic Cloud 是第三方服务提供商,而客户是服务消费者。

PrivateLink 是 VPC 端点和 PrivateLink 服务之间的连接。

阅读更多关于流量过滤的信息,了解 Elastic Cloud 中流量过滤背后的通用概念。

在开始之前,请查看以下注意事项

AWS PrivateLink 过滤仅支持 AWS 区域。 Elastic 尚不支持跨区域 AWS PrivateLink 连接。 您的 PrivateLink 端点需要与您的目标部署位于同一区域。 更多详细信息可以在AWS VPCE 文档中找到。

AWS 接口 VPC 端点配置为一个或多个可用区 (AZ)。 在某些区域中,我们的 VPC 端点服务并非存在于区域提供的所有可能的 AZ 中。 您只能选择双方共有的 AZ。 由于 AZ 的名称(例如 us-east-1a)在 AWS 账户之间有所不同,因此以下 AWS 区域列表显示了该服务的每个可用 AZ 的 ID(例如 use1-az4)。

查看接口端点可用区注意事项了解更多详细信息。

Elastic 收费与节点位于相同或不同的可用区 (AZ) 无关。 因此,将部署节点放置在单个 AZ 中,而不是两个或三个 AZ 中,并不能降低节点间成本。

在客户 VPC 侧,在同一 AWS 区域内,面向 AWS PrivateLink 端点的可用区之间的数据传输,是免费的。 因此,当目标是 AWS Privatelink Elastic Cloud 服务端点时,您不会因为 VPC 内的跨 AZ 数据传输而产生费用。 我们建议您在特定区域的所有受支持的 Elastic Cloud AZ 中设置 VPC 端点,以实现最大的流量吞吐量和弹性。

如果 Elastic 和您的 VPC 在两个或更少的 AZ 中重叠,则您可以在 VPC 中 Elastic PrivateLink 服务存在的相同可用区中创建子网和 VPC PrivateLink 端点。

传输客户端不支持通过 PrivateLink 连接。

PrivateLink 服务由 Elastic 在所有受支持的 AWS 区域中,使用以下服务名称设置

设置到您的集群的 PrivateLink 连接的过程在 AWS(例如,通过使用 AWS 控制台)和 Elastic Cloud UI 之间分开。 这些是高级步骤

AWS 控制台 Elastic Cloud
1. 使用 Elastic Cloud 服务名称创建 VPC 端点。
2. 创建指向 VPC 端点的 DNS 记录。
3. 使用您的 VPC 端点 ID 创建 PrivateLink 规则集。
4. 将 PrivateLink 规则集与您的部署相关联。
5. 通过 PrivateLink 与您的部署交互。

确保您的 VPC 端点位于 Elastic Cloud 在 VPC 服务区域上支持的所有可用区中。

确保您的 VPC 位于特定区域的所有受支持的 Elastic Cloud 可用区中,可以避免潜在的流量不平衡。 这种不平衡可能会使某些协调节点饱和,而其他节点则未得到充分利用,最终影响性能。 启用所有受支持的 Elastic Cloud 区域可确保以最佳方式平衡流量。

您可以使用 AWS CLI 查找区域名称到区域 ID 的映射

$ aws ec2 describe-availability-zones --region us-east-1 | jq -c '.AvailabilityZones[] | { id: .ZoneId, name: .ZoneName } ' | sort
{"id":"use1-az1","name":"us-east-1c"}
{"id":"use1-az2","name":"us-east-1e"}
{"id":"use1-az3","name":"us-east-1d"}
{"id":"use1-az4","name":"us-east-1a"}
{"id":"use1-az5","name":"us-east-1f"}
{"id":"use1-az6","name":"us-east-1b"}

该映射对于您的区域将有所不同。 我们的 us-east-1 生产 VPC 服务位于 use1-az2use1-az4use1-az6 中。 我们需要在 us-east-1eus-east-1aus-east-1b 中的至少一个中为前面的映射创建 VPC 端点。

  1. 使用您所在区域的服务名称在您的 VPC 中创建 VPC 端点。

    请按照 AWS 指南 中的详细信息创建一个指向端点服务的 VPC 接口端点。

    使用您所在区域的服务名称

    PrivateLink

    端点的安全组应至少允许来自您的实例 CIDR 范围在端口 443 和 9243 上的入站连接。实例的安全组应允许在端口 443 和 9243 上与端点的出站连接。

  2. 创建一个 DNS 记录。

    1. 创建一个私有托管区域。请参考PrivateLink 服务名称和别名中的私有托管区域域名来获取区域的名称。例如,在us-east-1中使用vpce.us-east-1.aws.elastic-cloud.com作为区域域名。不要忘记将该区域与您的 VPC 关联起来。

      Private hosted zone example
    2. 然后创建一个 DNS CNAME 别名,指向 PrivateLink 端点。将该记录添加到您 VPC 中的私有 DNS 区域。使用 * 作为记录名称,并使用 VPC 端点 DNS 名称作为值。

      请按照 AWS 指南 中的详细信息创建一个指向您的 VPC 端点 DNS 名称的 CNAME 记录。

      PrivateLink CNAME
  3. 测试连接。

    找出您的部署的端点。您可以通过在 Cloud UI 中选择复制端点来完成此操作。它看起来像

    my-deployment-d53192.es.us-east-1.aws.found.io
    

    其中 my-deployment-d53192 是一个别名,es 是您想在部署中访问的产品。

    要通过 PrivateLink 访问您的 Elasticsearch 集群

    • 如果您配置了自定义端点别名,您可以使用自定义端点 URL 进行连接。

    • 或者,使用以下 URL 结构

      https://{{alias}}.{product}.{{private_hosted_zone_domain_name}}
      

      例如

      https://my-deployment-d53192.es.vpce.us-east-1.aws.elastic-cloud.com
      
    提示

    您可以使用 443 或 9243 作为端口。

    您可以使用以下 curl 命令测试 AWS 控制台部分设置(将区域和 Elasticsearch ID 替换为您的集群)

    请求

    $ curl -v https://my-deployment-d53192.es.vpce.us-east-1.aws.elastic-cloud.com
    

    响应

    * Server certificate:
    *  subject: CN=*.us-east-1.aws.elastic-cloud.com
    *  SSL certificate verify ok.
    ..
    {"ok":false,"message":"Forbidden"}
    * Connection #0 to host my-deployment-d53192.es.vpce.us-east-1.aws.elastic-cloud.com left intact
    

    连接已建立,并且向客户端提供了一个有效的证书。403 Forbidden 是预期的,因为您尚未允许通过此 PrivateLink 连接进行流量。

按照以下高级步骤将私有链接规则添加到您的部署。

  1. 查找您的 VPC 端点 ID.
  2. 使用 VPC 端点创建规则.
  3. 将 VPC 端点与您的部署关联.
  4. 通过私有链接访问部署.

您可以在 AWS 控制台中找到您的 VPC 端点 ID

VPC Endpoint ID

一旦您知道您的 VPC 端点 ID,您就可以创建一个私有链接流量过滤器规则集。

  1. 登录到 Elastic Cloud 控制台
  2. 在主页或托管部署页面上找到您的部署,然后选择管理以访问其设置菜单。
  3. 功能选项卡下,打开流量过滤器页面。
  4. 选择创建过滤器
  1. 选择私有链接端点

  2. 创建您的规则集,提供有意义的名称和描述。

  3. 选择规则集的区域。

  4. 输入您的 VPC 端点 ID。

  5. 选择此规则集是否应自动附加到新的部署。

    注意

    每个规则集都绑定到特定区域,并且只能分配给同一区域中的部署。

  6. (可选)您可以声明您的 VPC 端点 ID,以便没有其他组织可以在流量过滤器规则集中使用它。

下一步是将规则集与您的部署相关联

要将私有链接规则集与您的部署关联

  1. 转到该部署。
  2. 安全页面上的流量过滤器下,选择应用过滤器
  3. 选择您要应用的过滤器,然后选择应用过滤器

为了使流量通过 PrivateLink 与部署连接,发出请求的客户端需要位于您创建 VPC 端点的 VPC 中。您还可以设置网络流量从其他地方(例如,您的公司网络中的另一个 VPC 或 VPN)流经原始 VPC。这假设 VPC 端点和 DNS 记录在该上下文中也可用。有关设置说明,请查看您的服务提供商文档。

重要

使用您设置为 CNAME DNS 记录的别名来访问您的部署。

如果您的部署别名为 my-deployment-12ab9b,并且位于 us-east-1 区域,您可以通过以下 URL 访问它

https://my-deployment-12ab9b.es.vpce.us-east-1.aws.elastic-cloud.com

请求

$ curl -u 'username:password' -v https://my-deployment-d53192.es.vpce.us-east-1.aws.elastic-cloud.com

响应

< HTTP/1.1 200 OK
..
注意

如果您将 AWS PrivateLink 与 Fleet 一起使用,并且使用 PrivateLink URL 注册 Elastic Agent,您需要配置 Fleet Server 以使用和传播 PrivateLink URL,方法是更新 Kibana 的Fleet 设置部分中的 Fleet Server hosts 字段。 否则,Elastic Agent 将重置为使用默认地址而不是 PrivateLink URL。 URL 需要遵循以下模式:https://<Fleet 组件 ID/部署别名>.fleet.<私有托管区域域名>:443

同样,需要更新 Elasticsearch 主机以传播 PrivateLink URL。 Elasticsearch URL 需要遵循以下模式:https://<Elasticsearch 集群 ID/部署别名>.es.<私有托管区域域名>:443

在 Kibana 中启用此配置所需的设置 xpack.fleet.agents.fleet_server.hostsxpack.fleet.outputs 目前仅在本地可用,而在 Elastic Cloud 中的 Kibana 设置中不可用。

您可以编辑规则集名称或更改 VPC 端点 ID。

  1. 帐户菜单中,选择流量过滤器
  2. 找到您要编辑的规则集。
  3. 选择编辑图标。

如果您需要删除规则集,您必须首先删除与部署的所有关联。

要删除包含所有规则的规则集

  1. 删除任何部署关联.
  2. 帐户菜单中,选择流量过滤器
  3. 找到您要编辑的规则集。
  4. 选择删除图标。 如果有分配给规则集的部署,则该图标处于非活动状态。

如果您想删除部署中的任何流量限制或删除规则集,您需要首先删除任何规则集关联。 要通过 UI 删除关联

  1. 转到该部署。
  2. 安全页面上的流量过滤器下,选择删除
© . All rights reserved.