如何排查 Amazon OpenSearch Service 集群中的精细访问控制错误?

上次更新日期:2022 年 5 月 13 日

我在 Amazon OpenSearch Service 集群中遇到了访问控制错误。如何排查并解决访问控制错误?

简短描述

您可能会在 OpenSearch Service 集群中遇到以下精细访问控制错误之一:

  • "security_exception","reason":"no permissions" 403 错误
  • "User: anonymous is not authorized to perform: iam:PassRole"
  • “无法找到任何 Elasticsearch 数据”
  • 401 未授权错误

除了这些错误的排查之外,本文还将向您展示如何使用 OpenSearch Service 完成以下任务:

  • 在激活字段粒度的访问控制后,将其他 AWS 服务与 OpenSearch Service 集成
  • 使用精细访问控制允许匿名访问
  • 根据用户租赁提供对特定索引、控制面板和可视化的精细访问
  • 使用字段级别的精细访问控制

解决方法

"security_exception","reason":"no permissions" 403 错误

要解决此错误,首先检查 OpenSearch Service 集群中的用户或后端角色是否具有所需的权限。然后,将用户或后端角色映射到角色

"User: anonymous is not authorized to perform: iam:PassRole"

尝试注册手动快照时,可能会收到此错误。除了用于注册手动快照的 Amazon Identity and Access Management (IAM) 角色所需的正常权限外,您还必须将 manage_snapshots 角色映射到 IAM 角色。然后,使用该 IAM 角色向域发送已签名的请求。

“无法找到任何 Elasticsearch 数据”

升级到 OpenSearch Service 7.9 版后,当您尝试创建索引模式时,可能会收到此错误。在激活 FGAC 的集群中创建索引模式时,使用 resolve(解析)API 将 "indices:admin/resolve/index" 添加到所有索引和别名。当缺少此权限时,OpenSearch Service 会抛出 403 错误状态代码。该代码反过来又映射到来自 OpenSearch 控制面板的 500 错误状态代码。因此,这些索引没有列出。

401 未授权错误

当您在主凭证中使用“$”或“!”字符并使用 curl -u “user:password” 时,您可能会收到 401 未授权错误。请务必将凭证放在单引号中,如以下示例所示:

curl -u <DOMAIN-ENDPOINT>

在激活字段粒度的访问控制后,将其他 AWS 服务与 OpenSearch Service 集成

要在激活字段粒度访问控制时将另一项 AWS 服务与 OpenSearch Service 集成,您必须为这些服务的 IAM 角色授予适当的权限。有关详细信息,请参阅以下有关使用具有精细访问控制的 Integrations(集成)的文档。

使用精细访问控制允许匿名访问

由于 OpenSearch Service 的托管性质,目前不支持匿名访问。

根据用户租赁提供对特定索引、控制面板和可视化的精细访问

要提供对特定索引或控制面板的 FGAC 访问,将用户映射到对租户 Kibana 索引拥有权限的角色:

.kibana_<hash>_<tenant_name>

有关更多信息,请参阅 OpenDistro 网站上的 Manage Kibana indices(管理 Kibana 索引)。

使用字段级别的精细访问控制

要在字段级别使用精细访问控制,请设置具有所需字段级别安全性的角色。然后,将用户映射到您创建的角色。

Amazon OpenSearch Service 是 Amazon Elasticsearch Service 的后继者。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?