授予 Amazon OpenSearch Ingestion 管道访问集合的权限 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

授予 Amazon OpenSearch Ingestion 管道访问集合的权限

Amazon OpenSearch Ingestion 管道可以写入 OpenSearch 无服务器公共集合或 VPC 集合。要提供对集合的访问权限,您需要为一个 Amazon Identity and Access Management (IAM) 管道角色配置权限策略,以授予对集合的访问权限。在管道配置中指定角色之前,必须为其配置适当的信任关系,然后通过数据访问策略向其授予数据访问权限。

在创建管道期间, OpenSearch Ingestion 会在管道和 OpenSearch Serverless 集合之间创建 Amazon PrivateLink 连接。来自管道的所有流量都经过此 VPC 终端节点并路由到集合。为了访问集合,必须通过网络访问策略向端点授予访问该集合的权限。

限制

以下限制适用于写入 OpenSearch 无服务器集合的管道:

  • oTel 跟踪组处理器目前不适用于 OpenSearch 无服务器集合接收器。

  • 目前, OpenSearch Ingestion 仅支持旧版_template操作,而 OpenSearch Serverless 支持可组合操作。_index_template因此,如果管道配置包含 index_type 选项,则必须将其设置为 management_disabled

提供对管道的网络访问

您在 OpenSearch Serverless 中创建的每个集合都至少有一个与之关联的网络访问策略。网络访问策略决定了是否可以通过互联网从公共网络访问馆藏,或者是否必须以私密方式访问该馆藏。有关网络策略的更多信息,请参阅Amazon OpenSearch Serverless 的网络访问

在网络访问策略中,您只能指定 OpenSearch 无服务器托管的 VPC 终端节点。有关更多信息,请参阅 使用接口终端节点访问 Amazon OpenSearch Serverless ()Amazon PrivateLink。但是,为了使管道能够写入集合,该策略还必须授予对 OpenSearch Ingestion 在管道和集合之间自动创建的 VPC 终端节点的访问权限。因此,在创建具有 OpenSearch Serverless 集合接收器的管道时,必须使用network_policy_name选项提供关联网络策略的名称。

例如:

... sink: - opensearch: hosts: [ "https://{collection-id}.{region}.aoss.amazonaws.com" ] index: "my-index" aws: serverless: true serverless_options: network_policy_name: "{network-policy-name}"

在创建管道期间, OpenSearch Ingestion 会检查指定的网络策略是否存在。如果它不存在,则 OpenSearch Ingestion 会创建它。如果确实存在, OpenSearch Ingestion 会通过向其添加新规则来对其进行更新。该规则授予对连接管道和集合的 VPC 终端节点的访问权限。

例如:

{ "Rules":[ { "Resource":[ "collection/my-collection" ], "ResourceType":"collection" } ], "SourceVPCEs":[ "vpce-0c510712627e27269" # The ID of the VPC endpoint that OpenSearch Ingestion creates between the pipeline and collection ], "Description":"Created by Data Prepper" }

在控制台中, OpenSearch Ingestion 添加到您的网络策略中的所有规则都命名为 Create b y Data Prepper

注意

通常,为集合指定公共访问权限的规则会优先于指定私有访问权限的规则。因此,如果策略已经配置了公共访问权限,那么 OpenSearch Ingestion 添加的这条新规则实际上并不会改变策略的行为。有关更多信息,请参阅 策略优先顺序

如果您停止或删除管道, OpenSearch Ingestion 会删除管道和集合之间的 VPC 终端节点。它还会修改网络策略,将 VPC 终端节点从允许的终端节点列表中删除。如果您重启管道,它会重新创建 VPC 终端节点,并使用终端节点 ID 重新更新网络策略。

步骤 1:创建管道角色

您在管道配置的 sts_role_arn 参数中指定的角色必须具有允许其向集合接收器发送数据的附加权限策略。它还必须具有允许 OpenSearch Ingestion担任该角色的信任关系。有关如何附加角色策略的说明,请参阅 IAM 用户指南中的添加 IAM 身份权限

以下示例策略演示了您可以在管道配置的 sts_role_arn 角色中为其提供写入集合的最低权限

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "aoss:APIAccessAll", "aoss:BatchGetCollection", "aoss:CreateSecurityPolicy", "aoss:GetSecurityPolicy", "aoss:UpdateSecurityPolicy" ], "Resource": "*" } ] }

该角色必须具有以下信任关系,这允许 OpenSearch Ingestion 担任该角色:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "osis-pipelines.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

步骤 2:创建集合

使用以下设置创建 OpenSearch 无服务器集合。有关创建收藏夹的说明,请参阅创建集合

数据访问政策

为集合创建数据访问策略,向管道角色授予所需权限。例如:

[ { "Rules": [ { "Resource": [ "index/{collection-name}/*" ], "Permission": [ "aoss:CreateIndex", "aoss:UpdateIndex", "aoss:DescribeIndex", "aoss:WriteDocument" ], "ResourceType": "index" } ], "Principal": [ "arn:aws:iam::{account-id}:role/{pipeline-role}" ], "Description": "Pipeline role access" } ]
注意

Principal 元素中,指定您在上一步中创建的管道角色的 Amazon 资源名称 (ARN)。

网络访问策略

为馆藏创建网络访问策略。您可以将数据提取到公共集合或 VPC 集合中。例如,以下策略提供对单个 OpenSearch 无服务器托管的 VPC 终端节点的访问权限:

[ { "Description":"Rule 1", "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/{collection-name}" ] } ], "AllowFromPublic": false, "SourceVPCEs":[ "vpce-050f79086ee71ac05" ] } ]
重要

您必须在管道配置的network_policy_name选项中指定网络策略的名称。在创建管道时, OpenSearch Ingestion 会更新此网络策略以允许访问它在管道和集合之间自动创建的 VPC 终端节点。有关工作流配置示例,请参阅步骤 3。有关更多信息,请参阅 提供对管道的网络访问

步骤 3:创建管道

最后,创建一个管道,在其中指定管道角色和集合详细信息。管道扮演此角色是为了签署对 OpenSearch 无服务器集合接收器的请求。

务必执行以下操作:

  • 对于 hosts 选项,指定您在步骤 2 中创建的集合的端点。

  • 对于 sts_role_arn 选项,指定您在步骤 1 中创建的管道角色的 Amazon 资源名称 (ARN)。

  • serverless 选项设置为 true

  • 将该network_policy_name选项设置为附加到集合的网络策略的名称。 OpenSearch Ingestion 会自动更新此网络策略,以允许从其在管道和集合之间创建的 VPC 进行访问。有关更多信息,请参阅 提供对管道的网络访问

version: "2" log-pipeline: source: http: path: "/log/ingest" processor: - date: from_time_received: true destination: "@timestamp" sink: - opensearch: hosts: [ "https://{collection-id}.{region}.aoss.amazonaws.com" ] index: "my-index" aws: serverless: true serverless_options: network_policy_name: "{network-policy-name}" # If the policy doesn't exist, a new policy is created. region: "us-east-1" sts_role_arn: "arn:aws:iam::{account-id}:role/{pipeline-role}"

有关必要参数和不支持的参数的完整参考,请参阅 Amazon OpenSearch Ingestion 管道支持的插件和选项