web-dev-qa-db-ja.com

共有ホスティング環境でインターネットに面したElasticSearchの実装を保護するにはどうすればよいですか?

Elastic Search のドキュメントを調べてきましたが、私はbigファンであり、使用したいと思います。 ASP.NETMVCアプリの検索を処理します。

しかし、それはいくつかの興味深いねじれをもたらします。 ASP.NET MVCアプリケーションが専用マシン上にある場合、Elastic Searchのインスタンスをスプールし、 TCP Transport を使用してローカルに接続するのは簡単です。

ただし、私はASP.NET MVCアプリケーション専用のマシンを使用していません。また、近いうちに1台に移行する予定もありません。

そのため、Elastic Searchを別のマシン(* NIXの世界)でホストすることになり、おそらくそこで共有ホスティングを使用します。

ただし、Elastic Searchに欠けている最大の点の1つは、HTTPSと基本認証をすぐにサポートしていないという事実です。もしそうなら、この質問は存在しません。どこかでホストし、非常に安全なパスワードとHTTPSが有効になっていることを確認します(おそらく自己署名証明書を使用します)。

しかし、そうではありません。

それでは、ElasticSearchをインターネット経由で安全に公開するための良い方法は何でしょうか。

注意してください、うまくいけば、私が望むメソッドのシムを提供するためのコードを書く必要がないものを探しています(言い換えれば、フォワーダーを書く)。

26
casperOne

HTTPトランスポートをJettyの埋め込みインスタンスに置き換えることができるelasticsearchのプラグイン が利用可能になりました。

Jettyを使用してHTTPトランスポートを処理するため、SSL接続を処理できるだけでなく、認証用に構成することもできます。


(以下は、この方法で操作を抽象化することをお勧めするという点で、依然として適切なアドバイスであることに注意してください)

ElasticSearchメーリングリスト で何度も話し合った結果、現在の解決策は、別のアプリケーション層の背後でElasticSearchをホストし、それを保護することであることがわかりましたレイヤー。

推論はしっかりしています。 ElasticSearchはデータベースに似ており、データベースをすべての人に公開することはありません。

私(および他の人)がつまずくのは、ElasticSearchがトランスポートとしてHTTPを使用し、操作の構文としてJSONを使用するため、ElasticSearchは公開されることを意図しているということです。

ただし、現在、基本的な(ダイジェスト)認証に加えて、HTTPSトランスポートサポート(証明書が提供されていることを前提としています)を追加する request があります。

24
casperOne

何らかの方法でマシンをファイアウォールで保護し、アプリサーバーからのトラフィックのみを許可する必要があります。 Linuxではiptablesを使用し、Windowsではある種のパーソナルファイアウォールを使用します。

これにより、serverfault.comの領域に移動しますが、これに対するプログラミングソリューションはありません。

7
skaffman