使用 IAM 角色(ec2 实例配置文件)访问 VPC 中的 AWS Opensearch

问题描述 投票:0回答:2

我在 VPC 内设置了一个 OpenSearch 域,并且有一个 EC2 实例在同一 VPC 中运行。 EC2 实例在其实例配置文件中附加了一个 IAM 角色,授予访问 OpenSearch 域的完全权限。但是,当尝试从 EC2 实例读取或写入域时,会遇到 401 未经授权错误。

例如

我可以在这个 ec2 上使用 aws cli 对 OpenSearch 域做任何我想做的事情。例如

aws opensearch upgrade-domain --domain-name opensearch-blui --target-version OpenSearch_2.5
可以工作,但是当我尝试在集群中创建索引时,它失败了。
curl -XPUT https://opensearch.lol.net/movies/_doc/1 -d '{"director": "Burton, Tim", "genre": ["Comedy","Sci-Fi"], "year": 1996, "actor": ["Jack Nicholson","Pierce Brosnan","Sarah Jessica Parker"], "title": "Mars Attacks!"}' -H 'Content-Type: application/json'

Unauthorized

是否可以使用 IAM 向 Opensearch 进行身份验证才能实际使用它?

amazon-web-services amazon-iam amazon-opensearch
2个回答
0
投票

一些想法:

  • 检查与 IAM 角色关联的 IAM 策略。它应该具有 OpenSearch 的正确权限。这是一个例子:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "es:*",
      "Resource": "arn:aws:es:REGION:ACCOUNT_ID:domain/DOMAIN_NAME/*"
    }
  ]
}
  • 验证您的 VPC 安全组是否允许 EC2 实例与 OpenSearch 域之间的入站和出站访问。

  • OpenSearch 域的访问策略应配置为允许附加到您的 EC2 实例的 IAM 角色进行访问。

  • 确认您的 EC2 实例确实与 IAM 角色关联。 注意:新权限有时可能需要几分钟才能在整个 AWS 中传播。

  • 向 OpenSearch 域发出请求时,请确保您使用的是 AWS Signature Version 4 签名流程。 AWS OpenSearch Service 要求所有传入请求都使用签名版本 4 进行签名


0
投票

我遇到了同样的问题,找不到任何有关如何使用角色和用户管理 IAM 访问的文档,但找到了一种有效、快速的解决方法。

只需编辑您的域安全配置,然后在

Amazon OpenSearch Service > Domains > your-domain-name > Edit security configuration / Fine-grained access control
下,选择
Set IAM ARN as master user
并提供您的实例角色并保存更改。

保存设置后,如果您使用的是非 IAM ARN 主用户,请返回同一设置面板,选择

Create master user
并恢复主用户的凭证并保存。

请注意,这是有效的,因为这些 IAM 主用户更改纯粹是附加的,如细则中所述:

“创建新的主用户不会删除现有的主用户”

重要的是,请注意,将 IAM ARN 设置为主用户确实会删除您之前拥有的非 IAM ARN 主用户(如果有),因此您确实需要如上所述恢复所述用户/凭证。

另请注意,在 OpenSearch 仪表板本身中,您将看到 iam 角色/用户和索引权限之间某种映射的各种指示,但没有关于如何导航的易于访问的文档(尽管我觉得这很令人惊讶,并希望这是一个主要用例),并且考虑到这无需深入了解 AWS 方面之外的杂草,现在我已经结束了自己对感觉像是“正确的解决方案”的搜索。

© www.soinside.com 2019 - 2024. All rights reserved.