我在尝试访问 Elasticsearch 集群时收到错误“用户:未授权匿名”

上次更新时间:2020 年 6 月 30 日

当我尝试访问我的 Amazon Elasticsearch Service (Amazon ES) 域或 Kibana 时,收到了以下错误消息:“用户:未授权匿名”。如何解决此错误?

简短描述

请求未签名且来自访问策略中不允许的源 IP 地址时返回此错误。访问策略的语法中出现错误时,请求也会返回此错误。

解决方法

如果您使用的客户端不支持请求签名(例如,浏览器),请考虑以下事项:

  • 使用基于 IP 的访问策略。基于 IP 的策略允许对 Amazon ES 域发起未签名请求。
  • 请确保访问策略中指定的 IP 地址使用 CIDR 表示法。对照访问策略检查 IP 地址时,访问策略使用 CIDR 表示法。
  • 验证访问策略中指定的 IP 地址与访问您的 Elasticsearch 集群时使用的相同。您可以从以下网址获得本地计算机的公有 IP 地址:https://checkip.amazonaws.com/

注意:如果您收到授权错误,请检查您使用的是公有还是私有 IP 地址。基于 IP 的访问策略无法应用于驻留在 Virtual Private Cloud (VPC) 中的 Amazon ES 域。这是因为安全组已强制执行基于 IP 的访问策略。对于公有访问,基于 IP 的策略仍然可用。有关更多信息,请参阅关于 VPC 域上的访问策略

如果您使用的客户端支持请求签名,请检查以下各项:

  • 请确保您的请求已正确签名。AWS 使用签名版本 4 签名流程向 AWS 请求添加身份验证信息。来自与请求签名版本 4 不兼容的的客户端的请求将被拒绝,并收到“用户:未授权匿名”错误。如需获得向 Amazon ES 发送的正确签名的请求示例,请参阅 Amazon ES 请求的创建和签名
  • 验证已在访问策略中指定了正确的 Amazon 资源名称 (ARN)

如果您的 Amazon ES 域驻留在 VPC 内,配置一个使用或不使用代理服务器的开放访问策略。然后,使用安全组来控制访问。有关更多信息,请参阅关于 VPC 域上的访问策略