Elasticsearchのセキュリティ原則

Elasticsearchクラスターとそのデータを保護することは非常に重要です。深層防御戦略を実装することで、システムを保護するための複数のセキュリティ層を提供します。以下の原則は、複数のレベルでシステムへの攻撃を軽減するのに役立つ、安全にElasticsearchを運用するための基盤を提供します。

セキュリティを有効にしてElasticsearchを実行する

セキュリティを有効にせずにElasticsearchクラスターを実行しないでください。この原則は強調しすぎることはありません。セキュリティなしでElasticsearchを実行すると、クラスターはElasticsearchにネットワークトラフィックを送信できる誰にでもさらされ、これによりこれらの個人がクラスター内のデータをダウンロード、変更、または削除することが許可されます。セキュリティを有効にしてElastic Stackを起動するか、手動でセキュリティを構成することで、クラスターへの不正アクセスを防ぎ、ノード間通信が安全であることを確認してください。

専用の非ルートユーザーでElasticsearchを実行する

rootユーザーとしてElasticsearchを実行しようとしないでください。これは防御戦略を無効にし、悪意のあるユーザーがサーバー上で何でも行うことを許可します。Elasticsearchを実行するために、専用の特権のないユーザーを作成する必要があります。デフォルトでは、rpmdebdocker、およびWindowsパッケージのElasticsearchには、この範囲を持つelasticsearchユーザーが含まれています。

Elasticsearchを公共インターネットトラフィックから保護する

セキュリティが有効になっていても、Elasticsearchを公共インターネットトラフィックにさらさないでください。Elasticsearchへのリクエストをサニタイズするアプリケーションを使用しても、悪意のあるユーザーが_searchリクエストを作成し、Elasticsearchクラスターを圧倒してダウンさせるリスクがあります。Elasticsearchはできるだけ孤立させ、できればファイアウォールとVPNの背後に置いてください。インターネットに面したアプリケーションは、事前に用意された集計を実行するか、全く集計を実行しないべきです。

Elasticsearchを直接インターネットにさらすべきではありませんが、ユーザーに直接Elasticsearchをさらすべきでもありません。代わりに、ユーザーの代理としてリクエストを行う中間アプリケーションを使用してください。この実装により、ユーザーの行動を追跡でき、どのユーザーがリクエストを送信できるか、クラスター内のどの特定のノードに送信できるかを把握できます。たとえば、ユーザーから検索用語を受け取り、それをsimple_query_stringクエリを通じて流すアプリケーションを実装できます。

ロールベースのアクセス制御を実装する

ユーザーのためにロールを定義し、適切な権限を割り当てて、ユーザーが必要なリソースにのみアクセスできるようにします。このプロセスは、受信リクエストの背後にいるユーザーがそのリクエストを実行することを許可されているかどうかを決定します。