Elasticsearch クラスターにアクセスしようとすると、「User: anonymous is not authorized」というエラーが表示されます

最終更新日: 2020 年 6 月 30 日

Amazon Elasticsearch Service (Amazon ES) ドメインまたは Kibana にアクセスしようとすると、「User: anonymous is not authorized」というエラーメッセージを受け取ります。どうすればこのエラーを解決できますか?

簡単な説明

リクエストに署名がなく、アクセスポリシーで許可されていない送信元 IP アドレスから送信された場合にリクエストはこのエラーを返します。リクエストは、アクセスポリシーの構文にエラーがある場合にもこのエラーを返します。

解決方法

リクエストの署名をサポートしていないクライアント (ブラウザなど) を使用している場合は、以下の点を考慮してください。

  • IP ベースのアクセスポリシーを使用します。IP ベースのポリシーは、Amazon ES ドメインへの未署名リクエストを許可しています。
  • アクセスポリシーで指定された IP アドレスが CIDR 表記を使用していることを確認します。アクセスポリシーは、アクセスポリシーに対して IP アドレスを確認するときに CIDR 表記を使用します。
  • アクセスポリシーで指定された IP アドレスが、Elasticsearch クラスターへのアクセスに使用されたものと同じであることを確認します。ローカルコンピュータのパブリック IP アドレスは、 https://checkip.amazonaws.com/ で取得できます。

注意: 認証エラーを受け取った場合は、パブリック IP アドレスとプライベート IP アドレスのどちらを使用しているかを確認してください。IP ベースのアクセスポリシーは、Virtual Private Cloud (VPC) 内に存在する Amazon ES ドメインには適用できません。これは、セキュリティグループがすでに IP ベースのアクセスポリシーを適用しているためです。パブリックアクセスの場合、IP ベースのポリシーは引き続き使用できます。詳細については、「VPC ドメインのアクセスポリシーについて」を参照してください。

リクエスト署名をサポートするクライアントを使用している場合は、以下を確認してください。

  • リクエストが正しく署名されていることを確認します。AWS では、署名バージョン 4 の署名プロセスを使用して、AWS リクエストに認証情報を追加します。署名バージョン 4 と互換性がないクライアントからのリクエストは、「User: anonymous is not authorized」エラーが発生して拒否されます。Amazon ES へ正しく署名されたリクエストを送信する例については、「Amazon ES リクエストの作成と署名」を参照してください。
  • アクセスポリシーで正しい Amazon リソースネーム (ARN) が指定されていることを確認します。

Amazon ES ドメインが VPC 内に存在する場合は、プロキシサーバーの有無にかかわらず、オープンアクセスポリシーを設定します。次に、セキュリティグループを使用してアクセスを制御します。詳細については、「VPC ドメインのアクセスポリシーについて」を参照してください。