本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
向 Amazon OpenSearch Ingestion 管道授予访问域的权限
Amazon OpenSearch Ingestion 管道需要权限才能写入配置为其接收器的 OpenSearch Service 域。要提供访问权限,您需要为 AWS 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-name
/*" } ] }
如果计划重用角色写入多个域,则可以将域名替换为通配符 (*
) 来扩大策略范围。
角色必须具有以下信任关系,从而允许 OpenSearch Ingestion 担任管道角色:
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"osis-pipelines.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
此外,建议您在策略中使用 aws:SourceAccount
和 aws: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
),则需要将管道角色映射到 OpenSearch all_access
后端角色。实际上是将管道角色添加为其他主用户。有关更多信息,请参阅其他主用户。
场景 2:内部用户数据库中的主用户 – 如果您的域使用内部用户数据库的主用户和 OpenSearch 控制面板的 HTTP 基本身份验证,则无法将主用户名和密码直接传递到管道配置。相反,您需要将管道角色 (sts_role_arn
) 映射到 OpenSearch all_access
后端角色。实际上是将管道角色添加为其他主用户。有关更多信息,请参阅其他主用户。
场景 3:主角色与管道角色相同(不常见)– 如果您使用 IAM ARN 作为主用户,且主用户与作为管道角色的 ARN 相同 (sts_role_arn
),则无需采取任何进一步的操作。管道具有写入域所需的权限。这种场景并不常见,因为绝大多数环境使用管理员角色或其他角色作为主角色。
下图显示了如何将管道角色映射到后端角色:
步骤 4:在管道配置中指定角色
为成功创建管道,必须在管道配置中将您在步骤 1 中创建的管道角色指定为 sts_role_arn 参数。管道担任此角色,以便签署对 OpenSearch Service 域接收器的请求。
在 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 管道支持的插件和选项。