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

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

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

Amazon OpenSearch Ingestion 管道需要权限才能写入配置为其接收器的 OpenSearch 无服务器集合。要提供访问权限,您需要为一个 Amazon Identity and Access Management (IAM) 角色配置一个限制性权限策略,该策略限制了对管道向其发送数据的集合的访问权限。 OpenSearch 摄取可以将数据提取到公共集合和 VPC 集合。

在管道配置中指定角色之前,必须使用相应的信任关系对其进行配置,然后为其授予对集合索引的数据访问权限。

限制

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

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

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

步骤 1:创建管道角色

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

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

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:BatchGetCollection" ], "Effect": "Allow", "Resource": "arn:aws:aoss:{region}:{your-account-id}:collection/{collection-id}" }, { "Action": [ "aoss:CreateSecurityPolicy", "aoss:GetSecurityPolicy", "aoss:UpdateSecurityPolicy", "aoss:APIAccessAll" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aoss:collection": "{collection-name}" } } } ] }

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

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

此外,建议您在策略中使用 aws:SourceAccountaws:SourceArn 条件密钥来防止出现混淆代理人问题。源账户是管道所有者。

例如,您可以将以下条件块添加到策略:

"Condition": { "StringEquals": { "aws:SourceAccount": "{your-account-id}" }, "ArnLike": { "aws:SourceArn": "arn:aws:osis:{region}:{your-account-id}:pipeline/*" } }

步骤 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 集合中。如果您使用 VPC 集合,则网络策略必须允许一个或多个 VPC 终端节点访问该集合。例如,您可以添加以下网络策略,允许一个 VPC 终端节点访问集合:

    [ { "Description":"VPC access", "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/{collection-name}" ] } ], "AllowFromPublic": false, "SourceVPCEs":[ "vpce-050f79086ee71ac05" ] } ]
    注意

    此外,您必须在工作流配置的network_policy_name选项中指定网络策略的名称。有关工作流配置示例,请参阅步骤 3。

有关创建收藏夹的说明,请参阅创建集合

步骤 3:创建管道

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

务必执行以下操作:

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

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

  • serverless 选项设置为 true

  • 将该network_policy_name选项设置为附加到集合的网络策略的名称。

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 管道支持的插件和选项