使用接口端点访问 Amazon OpenSearch 无服务器(Amazon PrivateLink) - Amazon OpenSearch Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用接口端点访问 Amazon OpenSearch 无服务器(Amazon PrivateLink)

您可以使用 Amazon PrivateLink 在您的 VPC 与 Amazon OpenSearch 无服务器之间创建私有连接。您可以像在 VPC 中一样访问 OpenSearch 无服务器,而无需使用互联网网关、NAT 设备、VPN 连接或 Amazon Direct Connect 连接。VPC 中的实例不需要公共 IP 地址即可访问 OpenSearch 无服务器。有关 VPC 网络访问的更多信息,请参阅针对 Amazon OpenSearch 无服务器的网络连接模式

您可以通过创建由 Amazon PrivateLink 提供支持的接口端点来建立此私有连接。我们将在您为接口端点指定的每个子网中创建一个端点网络接口。这些是请求者托管的网络接口,用作发往 OpenSearch 无服务器的流量的入口点。

有关更多信息,请参阅《Amazon PrivateLink 指南》中的通过 Amazon PrivateLink 访问 Amazon Web Services 服务

集合端点 DNS 解析

创建 VPC 端点时,该服务会创建一个新的 Amazon Route 53 私有托管区并将其附加到 VPC。此私有托管区包含一条记录,用于将 OpenSearch 无服务器集合的通配符 DNS 记录 (*.aoss.us-east-1.amazonaws.com) 解析为端点使用的接口地址。只需使用 VPC 中的一个 OpenSearch 无服务器 VPC 端点即可访问每个 Amazon Web Services 区域 的所有集合和控制面板。每个包含 OpenSearch 无服务器端点的 VPC 均有自己的私有托管区。

OpenSearch 无服务器还为区域中的所有集合创建了一条公有 Route 53 通配符 DNS 记录。DNS 名称解析为 OpenSearch 无服务器公有 IP 地址。不含 OpenSearch 无服务器 VPC 端点的 VPC 客户端或公有网络客户端可以使用公有 Route 53 解析器,并可使用这些 IP 地址访问集合和控制面板。VPC 端点的 IP 地址类型(IPv4、IPv6 或双栈)取决于您在为 OpenSearch 无服务器创建接口端点时提供的子网。

注意

OpenSearch 无服务器为 OpenSearch Service 域解析创建额外的 Amazon Route 53 私有托管区(`<region>.opensearch.amazonaws.com`)。您可以通过在 Amazon CLI 中使用中的 update-vpc-endpoint 命令,将现有的 IPv4 VPC 端点更新为双栈端点。

给定 VPC 的 DNS 解析器地址是 VPC CIDR 的辅助 IP 地址。VPC 中的任何客户端均需使用该解析器获取任何集合的 VPC 端点地址。解析器使用由 OpenSearch 无服务器创建的私有托管区。使用该解析器足以处理任何账户中的所有集合。也可以对一些集合端点使用 VPC 解析器,对另一些集合端点使用公有解析器,尽管通常并不需要这样做。

VPC 和网络访问策略

要为集合授予 OpenSearch API 和控制面板网络权限,您可以使用 OpenSearch 无服务器网络访问策略。您可以从 VPC 端点或公有 Internet 控制此网络访问。由于网络策略仅控制流量权限,因此还必须设置数据访问策略,指定对集合及其索引中的数据执行操作的权限。将 OpenSearch 无服务器 VPC 端点视为服务接入点,将网络访问策略视为集合和控制面板的网络级接入点,将数据访问策略视为对集合数据进行任何操作的精细访问控制接入点。

由于您可以在网络策略中指定多个 VPC 端点 ID,因此我们建议您为每个需要访问集合的 VPC 创建一个 VPC 端点。这些 VPC 可以属于其他 Amazon 账户,而不是 OpenSearch 无服务器集合和网络策略所属的账户。我们建议您不要在两个账户之间创建 VPC 到 VPC 对等或其他代理解决方案,这样一个账户的 VPC 可以使用另一个账户的 VPC 端点。相较于每个 VPC 都有自己的端点,这种做法的安全性和成本效益会有所下降。即使其他 VPC 的管理员已在网络策略中设置对第一个 VPC 端点的访问权限,也无法轻易查看第一个 VPC。

VPC 和端点策略

Amazon OpenSearch 无服务器不支持 VPC 的端点策略。端点策略是一种基于 IAM 资源的策略,您可以将其附加到 VPC 端点来控制哪些 Amazon 主体能使用端点访问 Amazon 服务。有关更多信息,请参阅使用端点策略控制对 VPC 端点的访问

要使用端点策略,必须先创建接口端点。您可以使用 OpenSearch 无服务器控制台或 OpenSearch 无服务器 API 创建接口端点。创建接口端点后,您需要将端点策略添加到端点。有关更多信息,请参阅使用接口端点(Amazon PrivateLink)访问 Amazon OpenSearch 无服务器

注意

您无法在 OpenSearch Service 控制台中直接定义端点策略。

端点策略不会覆盖或取代您可能已配置的其他基于身份的策略、基于资源的策略、网络策略或数据访问策略。有关如何更新端点策略的更多信息,请参阅使用端点策略控制对 VPC 端点的访问

默认情况下,端点策略授予对 VPC 端点的完全访问权限。

{ "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*" } ] }

尽管默认 VPC 端点策略授予端点完全访问权限,但您可以配置 VPC 端点策略以允许访问特定角色和用户。为此,请参阅以下示例:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "123456789012", "987654321098" ] }, "Action": "*", "Resource": "*" } ] }

您可以指定 OpenSearch 无服务器集合作为条件元素包含在 VPC 端点策略中。为此,请参阅以下示例:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "aoss:collection": [ "coll-abc" ] } } } ] }

支持对 aoss:CollectionId 的支持。

Condition": { "StringEquals": { "aoss:CollectionId": "collection-id" } }

您可以在 VPC 端点策略中使用 SAML 身份来确定 VPC 端点访问权限。您必须在 VPC 端点策略的主体部分使用通配符 (*)。为此,请参阅以下示例:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "saml:cn": [ "saml/111122223333/idp123/group/football", "saml/111122223333/idp123/group/soccer", "saml/111122223333/idp123/group/cricket" ] } } } ] }

此外,您可以将端点策略配置为包含特定的 SAML 主体策略。为此,请参阅以下内容:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalTag/Department": [ "Engineering"] } } } ] }

有关将 SAML 身份验证与 Amazon OpenSearch Serverless 结合使用的更多信息,请参阅适用于 Amazon OpenSearch 无服务器的 SAML 身份验证

您还可以在同一 VPC 端点策略中包含 IAM 和 SAML 用户。为此,请参阅以下示例:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "saml:cn": [ "saml/111122223333/idp123/group/football", "saml/111122223333/idp123/group/soccer", "saml/111122223333/idp123/group/cricket" ] } } }, { "Effect": "Allow", "Principal": { "AWS": [ "111122223333" ] }, "Action": "*", "Resource": "*" } ] }

您还可以通过接口 VPC 端点从 Amazon EC2 访问 Amazon OpenSearch 无服务器集合。有关更多信息,请参阅从 Amazon EC2(通过接口 VPC 端点)访问 OpenSearch 无服务器集合

注意事项

在为 OpenSearch 无服务器设置接口端点之前,请考虑以下事项:

  • OpenSearch 无服务器支持通过接口端点调用所有受支持的 OpenSearch API 操作(而非配置 API 操作)。

  • 在为 OpenSearch 无服务器创建接口端点后,仍然需要将其包含在网络访问策略中,以便它访问无服务器集合。

  • 默认情况下,允许通过接口端点对 OpenSearch 无服务器进行完全访问。您可以将安全组与端点网络接口关联起来,以控制通过接口端点流向 OpenSearch 无服务器的流量。

  • 单个 Amazon Web Services 账户可以拥有最多 50 个 OpenSearch 无服务器 VPC 端点。

  • 如果网络策略启用通过公有 Internet 访问集合 API 或控制面板,则任何 VPC 和公有 Internet 均可访问您的集合。

  • 如果您在本地且位于 VPC 外部,则不能直接使用 DNS 解析程序进行 OpenSearch 无服务器 VPC 端点解析。如果需要 VPN 访问权限,则 VPC 需要 DNS 代理解析程序供外部客户端使用。Route 53 提供入站端点选项,您可以使用此选项解析从本地网络或其他 VPC 对您的 VPC 执行的 DNS 查询。

  • OpenSearch 无服务器创建并挂载到 VPC 的私有托管区由服务托管,但会在您的 Amazon Route 53 资源中显示并向您的账户计费。

  • 有关其他注意事项,请参阅 Amazon PrivateLink 指南中的注意事项

所需权限

针对 OpenSearch 无服务器的 VPC 访问使用以下 Amazon Identity and Access Management(IAM)权限。您可以指定 IAM 条件,以将用户限制到特定集合。

  • aoss:CreateVpcEndpoint:创建 VPC 端点。

  • aoss:ListVpcEndpoints:列出所有 VPC 端点。

  • aoss:BatchGetVpcEndpoint:查看有关 VPC 端点子集的详细信息。

  • aoss:UpdateVpcEndpoint:修改 VPC 端点。

  • aoss:DeleteVpcEndpoint:删除 VPC 端点。

此外,您需要以下 Amazon EC2 和 Route 53 权限才能创建 VPC 端点。

  • ec2:CreateTags

  • ec2:CreateVpcEndpoint

  • ec2:DeleteVpcEndPoints

  • ec2:DescribeSecurityGroups

  • ec2:DescribeSubnets

  • ec2:DescribeVpcEndpoints

  • ec2:DescribeVpcs

  • ec2:ModifyVpcEndPoint

  • route53:AssociateVPCWithHostedZone

  • route53:ChangeResourceRecordSets

  • route53:CreateHostedZone

  • route53:DeleteHostedZone

  • route53:GetChange

  • route53:GetHostedZone

  • route53:ListHostedZonesByName

  • route53:ListHostedZonesByVPC

  • route53:ListResourceRecordSets

为 OpenSearch 无服务器创建接口端点

您可以使用控制台或 OpenSearch 无服务器 API 为 OpenSearch 无服务器创建接口端点。

为 OpenSearch 无服务器集合创建接口端点
  1. https://console.aws.amazon.com/aos/home 打开 Amazon OpenSearch Service 控制台。

  2. 在左侧导航窗格中,展开 Serverless(无服务器),然后选择 VPC endpoints(VPC 端点)。

  3. 选择 Create VPC endpoint(创建 VPC 端点)。

  4. 为端点提供名称。

  5. 对于 VPC,选择您要从中访问 OpenSearch 无服务器的 VPC。

  6. 对于 Subnets(子网),选择一个您要从中访问 OpenSearch 无服务器的子网。

    • 端点的 IP 地址和 DNS 类型取决于子网类型

      • 双栈:所有子网都具有 IPv4 和 IPv6 地址范围

      • IPv6:所有子网均为仅 IPv6 子网

      • IPv4:所有子网都具有 IPv4 地址范围

  7. 对于安全组,选择要与端点网络接口关联的安全组。这是一个关键步骤,您可以在该步骤中限制您授权进入端点的入站流量的端口、协议和源。确保安全组规则允许将使用 VPC 端点与 OpenSearch 无服务器通信的资源与端点网络接口通信。

  8. 选择创建端点

要使用 OpenSearch 无服务器 API 创建 VPC 端点,请使用 CreateVpcEndpoint 命令。

注意

在创建端点后,记下其 ID(例如,vpce-abc123def4EXAMPLE)。为给端点提供针对集合的访问权限,您必须将此 ID 包含在一个或多个网络访问策略中。

在创建接口端点后,必须通过网络访问策略为其提供针对集合的访问权限。有关更多信息,请参阅 针对 Amazon OpenSearch 无服务器的网络访问权限

Amazon OpenSearch 无服务器的共享 VPC 设置

您可以使用 Amazon Virtual Private Cloud(VPC),与组织中的其他 Amazon Web Services 账户 共享 VPC 子网,同时在多个 Amazon Web Services 账户 的资源之间共享 VPN 等网络基础设施。

目前,Amazon OpenSearch 无服务器不支持创建与共享 VPC 的 Amazon PrivateLink 连接,除非您是该 VPC 的所有者。Amazon PrivateLink 也不支持在 Amazon Web Services 账户 之间共享连接。

然而,基于OpenSearch 无服务器灵活且模块化的架构,您仍可设置共享 VPC。这是因为 OpenSearch 无服务器网络基础设施与单个集合(OpenSearch Service)基础设施是分开的。因此,您可以在共享 VPC 所在的账户中创建 Amazon PrivateLink VPCe 端点,然后在其他账户的网络策略中使用该 VPCe ID,将流量限制为仅来自该共享 VPC。

以下过程涉及所有者账户消费者账户

所有者账户充当通用网络账户,您可以在其中设置 VPC 并与其他账户共享。消费者账户是指在所有者账户共享的 VPC 中创建并维护其 OpenSearch 无服务器集合的账户。

先决条件

设置共享 VPC 之前,确保满足以下要求:

  • 目标所有者账户必须已在 Amazon Virtual Private Cloud 中设置好 VPC、子网、路由表及其他所需资源。有关更多信息,请参阅 Amazon VPC 用户指南

  • 目标所有者账户和消费者账户必须属于 Amazon Organizations 中的同一组织。有关更多信息,请参阅 Amazon Organizations 用户指南https://docs.amazonaws.cn/organizations/latest/userguide/

在所有者账户/通用网络账户中设置共享 VPC。
  1. 登录到位于 https://console.aws.amazon.com/aos/home 的 Amazon OpenSearch Service 控制台。

  2. 按照 为 OpenSearch 无服务器创建接口端点 中的步骤操作。操作时,选择以下选项:

    • 选择与组织中消费者账户共享的 VPC 和子网。

  3. 创建端点后,记下生成的 VPCe ID,并将其提供给要在消费者账户中执行设置任务的管理员。

    VPCe ID 的格式为 vpce-abc123def4EXAMPLE

在消费者账户中设置共享 VPC
  1. 登录到位于 https://console.aws.amazon.com/aos/home 的 Amazon OpenSearch Service 控制台。

  2. 如果您还没有集合,使用 管理 Amazon OpenSearch 无服务器集合 中的信息进行创建。

  3. 使用 创建网络策略(控制台) 中的信息创建网络策略。操作时,选择以下选项。

    注意

    您也可以为此目的更新现有的网络策略。

    1. 对于访问类型,选择 VPC(推荐)

    2. 对于用于访问的 VPC 端点,选择所有者账户提供的 VPCe ID,格式为 vpce-abc123def4EXAMPLE

    3. 资源类型区域中,执行以下操作:

      • 选中启用对 OpenSearch 端点的访问复选框,然后选择要使用的集合名称或集合模式,以便从该共享 VPC 启用访问权限。

      • 选中启用对 OpenSearch 控制面板的访问复选框,然后选择要使用的集合名称或集合模式,以便从该共享 VPC 启用访问权限。

  4. 对于新策略,选择创建。对于现有策略,选择更新