授予 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) 角色配置一个限制性权限策略,该策略限制了对管道向其发送数据的域的访问权限。例如,您可能希望将摄取管道限制为仅含支持其用例所需的域和索引。

在管道配置中指定角色之前,必须使用相应的信任关系对其进行配置,然后在域访问策略中授予域访问权限。

步骤 1:创建管道角色

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

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "es:DescribeDomain", "Resource": "arn:aws:es:*:{your-account-id}:domain/*" }, { "Effect": "Allow", "Action": "es:ESHttp*", "Resource": "arn:aws:es:*:{your-account-id}:domain/{domain-namedomain}/*" } ] }

如果计划重用角色写入多个域,则可以将域名替换为通配符 (*) 来扩大策略范围。

该角色必须具有以下信任关系,这允许 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:在域访问策略中添加管道角色

为使管道能够将数据写入域,域必须具有域级访问策略,以允许 sts_role_arn 管道角色访问域。

以下示例域访问策略允许您在上一步中创建的名为 pipeline-role 的管道角色向名为 ingestion-domain 的域写入数据:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{your-account-id}:role/{pipeline-role}" }, "Action": ["es:DescribeDomain", "es:ESHttp*"], "Resource": "arn:aws:es:{region}:{your-account-id}:domain/{domain-name}/*" } ] }

步骤 3:映射管道角色(仅适用于使用精细访问控制的域)

如果您的域使用精细访问控制进行身份验证,则需要采取额外步骤,为管道提供域访问权限。步骤因域配置而异:

场景 1:不同的主角色和管道角色 — 如果您使用 IAM Amazon 资源名称 (ARN) 作为主用户,并且它与管道角色 (sts_role_arn) 不同,则需要将管道角色映射到 OpenSearchall_access后端角色。实际上是将管道角色添加为其他主用户。有关更多信息,请参阅其他主用户

场景 2:内部用户数据库中的主用户-如果您的域使用内部用户数据库中的主用户和 OpenSearch 仪表板的 HTTP 基本身份验证,则无法将主用户名和密码直接传递到工作流配置中。相反,你需要将管道角色 (sts_role_arn) 映射到 OpenSearchall_access后端角色。实际上是将管道角色添加为其他主用户。有关更多信息,请参阅其他主用户

场景 3:主角色与管道角色相同(不常见)– 如果您使用 IAM ARN 作为主用户,且主用户与作为管道角色的 ARN 相同 (sts_role_arn),则无需采取任何进一步的操作。管道具有写入域所需的权限。这种场景并不常见,因为绝大多数环境使用管理员角色或其他角色作为主角色。

下图显示了如何将管道角色映射到后端角色:

步骤 4:在管道配置中指定角色

为成功创建管道,必须在管道配置中将您在步骤 1 中创建的管道角色指定为 sts_role_arn 参数。管道扮演此角色是为了签署对 OpenSearch 服务域接收器的请求。

sts_role_arn 字段中,指定 IAM 管道角色 ARN:

version: "2" log-pipeline: source: http: path: "/${pipelineName}/logs" processor: - grok: match: log: [ "%{COMMONAPACHELOG}" ] sink: - opensearch: hosts: [ "https://search-{domain-name}.us-east-1.es.amazonaws.com" ] index: "my-index" aws: region: "[region}" sts_role_arn: "arn:aws:iam::{your-account-id}:role/{pipeline-role}"

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