在 Amazon OpenSearch Ingestion 中设置角色和用户 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Amazon OpenSearch Ingestion 中设置角色和用户

Amazon OpenSearch Ingestion 使用各种权限模型和 IAM 角色,以允许源应用程序写入管道以及允许管道写入接收器。在开始提取数据之前,您需要根据自己的用例创建一个或多个具有具体权限的 IAM 角色。

至少需要以下角色才能成功设置管道。

名称 描述
管道角色

管道角色为管道提供从源读取数据并将数据写入域或集合接收器所需的权限。您可以手动创建管道角色,也可以让 OpenSearch Ingestion 为您创建该角色。

提取角色

提取角色包含对管道资源的 osis:Ingest 权限。此权限允许基于推送的源将数据摄取到管道中。

下图演示了典型的管道设置,其中诸如 Amazon S3 或 Fluent Bit 之类的数据来源使用不同的账户写入管道。在这种情况下,客户端需要担任提取角色才能访问管道。有关更多信息,请参阅 跨账户提取

Cross-account data ingestion pipeline showing client application, roles, and OpenSearch sink.

欲了解简易设置指南,请参阅教程:使用 Amazon Ingestion 将数据摄取到域 OpenSearch

主题

管道角色

管道需要一定的权限才能从其源读取数据并将数据写入其接收器。这些权限取决于客户端应用程序或 Amazon Web Services 服务 正在写入管道的应用程序,以及接收器是 OpenSearch 服务域、 OpenSearch 无服务器集合还是 Amazon S3。此外,管道可能需要权限才能从源应用程序(如果源应用程序是基于拉取的插件)从源应用程序(如果源应用程序是基于拉取的插件)拉取,以及写入 S3 死信队列。

创建管道时,您可以选择指定手动创建的现有 IAM 角色,也可以让 OpenSearch Ingestion 根据您选择的源和接收器自动创建管道角色。下图显示了如何在中指定管道角色 Amazon Web Services Management Console。

自动创建管道角色

你可以选择让 OpenSearch Ingestion 为你创建管道角色。它会根据配置的源和接收器自动识别角色需要哪些权限。它使用您输入的前缀和后缀OpenSearchIngestion-创建一个 IAM 角色。例如,如果您输入PipelineRole作为后缀, OpenSearch Ingestion 会创建一个名为的角色。OpenSearchIngestion-PipelineRole

自动创建管道角色可以简化设置过程并降低出现配置错误的可能性。通过自动创建角色,可以避免手动分配权限,从而确保应用正确的策略而不会出现安全配置错误的风险。这还可以通过实施最佳实践来节省时间并增强安全合规性,同时确保多个管道部署的一致性。

您只能让 OpenSearch Ingestion 在中自动创建管道角色。 Amazon Web Services Management Console如果您使用的是 Amazon CLI、 OpenSearch Ingestion API 或其中一个 SDKs,则必须指定手动创建的管道角色。

要让 OpenSearch Ingestion 为您创建角色,请选择 “创建” 并使用新服务角色。

重要

您仍然需要手动修改域或集合访问策略以授予对管道角色的访问权限。对于使用精细访问控制的域,您还必须将管道角色映射到后端角色。您可以在创建管道之前或之后执行这些步骤。

有关说明,请参阅以下主题:

手动创建管道角色

如果您需要对权限进行更多控制以满足特定的安全或合规性要求,则可能更愿意手动创建管道角色。手动创建允许您定制角色以适应现有基础设施或访问管理策略。您也可以选择手动设置来将该角色与其他角色集成, Amazon Web Services 服务 或者确保其符合您的独特运营需求。

要选择手动创建的管道角色,请选择使用现有 IAM 角色并选择现有角色。该角色必须具有从选定源接收数据并写入所选接收器所需的所有权限。下面部分概述了如何手动创建管道角色。

从来源读取的权限

OpenSearch 摄取管道需要权限才能读取和接收来自指定来源的数据。例如,对于亚马逊 DynamoDB 来源,它需要诸如和之类的权限。dynamodb:DescribeTable dynamodb:DescribeStream有关常见来源(例如 Amazon S3、Fluent Bit 和 Collecto OpenTelemetry r)的管道角色访问策略示例,请参阅将 Amazon OpenSearch Ingestion 管道与其他服务和应用程序集成

域接收器的权限

In OpenSearch gestion 管道需要权限才能写入配置为其接收器的 S OpenSearch ervice 域。这些权限包括能够描述域以及向其发送 HTTP 请求。公有和 VPC VPC 域需要相同的权限。有关创建管道角色并在域访问策略中指定管道角色的说明,请参阅允许管道访问域

写入集合接收器的权限

In OpenSearch gestion 管道需要权限才能写入配置为其接收器的 OpenSearch Serverless 集合。这些权限包括能够描述集合以及向其发送 HTTP 请求。

首先,请确保您的管道角色访问策略授予所需的权限。然后,将此角色包含在数据访问策略中,并为其提供在集合中创建索引、更新索引、描述索引和写入文档的权限。有关完成其中每个步骤的说明,请参阅允许管道访问集合

写入Amazon S3 或死信队列

如果您将 Amazon S3 指定为管道的接收目标,或者启用死信队列 (DLQ),则管道角色必须允许其访问您指定为目标的 S3 存储桶。

将单独的权限策略附加到提供 DLQ 访问权限的管道角色。至少必须向该角色授予对存储桶资源的S3:PutObject操作:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "WriteToS3DLQ", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-dlq-bucket/*" } ] }

提取角色

摄取角色是一个 IAM 角色,它允许外部服务安全地与 OpenSearch 摄取管道交互并向其发送数据。对于基于推送的来源(例如 Amazon Security Lake),此角色必须授予将数据推送到管道的权限,包括osis:Ingest。对于基于拉取的源,例如 Amazon S3,角色必须允许 OpenSearch Ingestion 代入并使用必要的权限访问数据。

基于推送的源的摄取角色

对于基于推送的来源,数据将从其他服务(例如 Amazon Security Lake 或 Amazon DynamoDB)发送或推送到摄取管道。在这种情况下,摄取角色至少需要获得与管道交互的osis:Ingest权限。

以下 IAM 访问策略演示了如何向摄取角色授予此权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "osis:Ingest" ], "Resource": "arn:aws:osis:region:account-id:pipeline/pipeline-name/*" } ] }

对于基于拉取的源而言

对于基于拉取的源, OpenSearch Ingestion 管道会主动从外部来源(例如 Amazon S3)提取或获取数据。在这种情况下,管道必须扮演一个 IAM 管道角色,该角色授予访问数据源的必要权限。在这些场景中,摄取角色与管道角色同义。

该角色必须包括允许 OpenSearch Ingestion 担任该角色的信任关系以及特定于数据源的权限。有关更多信息,请参阅 从来源读取的权限

跨账户提取

您可能需要从其他(例如,应用程序账户)将数据摄取到管道中。 Amazon Web Services 账户要配置跨账户提取,请在与管道相同的账户中定义一个提取角色,并在提取角色和应用程序账户之间建立信任关系:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::external-account-id:root" }, "Action": "sts:AssumeRole" }] }

然后,将您的应用程序配置为担任提取角色。应用程序账户必须向应用程序角色授予管道账户中提取角色的AssumeRole权限。

有关详细步骤和 IAM policy 示例,请参阅提供跨账户摄取访问权限