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をインターネット経由で安全に公開するための良い方法は何でしょうか。
注意してください、うまくいけば、私が望むメソッドのシムを提供するためのコードを書く必要がないものを探しています(言い換えれば、フォワーダーを書く)。
HTTPトランスポートをJettyの埋め込みインスタンスに置き換えることができるelasticsearchのプラグイン が利用可能になりました。
Jettyを使用してHTTPトランスポートを処理するため、SSL接続を処理できるだけでなく、認証用に構成することもできます。
(以下は、この方法で操作を抽象化することをお勧めするという点で、依然として適切なアドバイスであることに注意してください)
ElasticSearchメーリングリスト で何度も話し合った結果、現在の解決策は、別のアプリケーション層の背後でElasticSearchをホストし、それを保護することであることがわかりましたレイヤー。
推論はしっかりしています。 ElasticSearchはデータベースに似ており、データベースをすべての人に公開することはありません。
私(および他の人)がつまずくのは、ElasticSearchがトランスポートとしてHTTPを使用し、操作の構文としてJSONを使用するため、ElasticSearchは公開されることを意図しているということです。
ただし、現在、基本的な(ダイジェスト)認証に加えて、HTTPSトランスポートサポート(証明書が提供されていることを前提としています)を追加する request があります。
何らかの方法でマシンをファイアウォールで保護し、アプリサーバーからのトラフィックのみを許可する必要があります。 Linuxではiptablesを使用し、Windowsではある種のパーソナルファイアウォールを使用します。
これにより、serverfault.comの領域に移動しますが、これに対するプログラミングソリューションはありません。