ElasticsearchとセキュアなOracle NoSQL Database
ここまでで、前の各項で示したすべての情報と例で、Oracle NoSQL DatabaseとElasticsearchの間の通信がセキュアではない場合に、Oracle NoSQL Database表に保存されているデータがElasticsearchでどのように索引付けされるかについて説明しました。この項では、セキュアな通信チャネルを介してElasticsearchクラスタにデータを送信する方法について説明します。
前述のように、索引付けのためにElasticsearchに送信されるデータは、Oracle NoSQLストアのレプリケーション・グループ(シャード)のマスター・レプリケーション・ノードで実行されるプロセスによって送信されます。システムのセキュリティが構成されていない場合、レプリケーション・ノードはHTTPを介してElasticsearchと通信します。レプリケーション・ノードで、セキュアな通信チャネルでElasticsearchにデータを送信するには、NoSQLストアがセキュアに実行されるように構成されている必要があります。セキュリティ・ガイドのOracle NoSQL Databaseセキュリティの概要を参照してください。セキュアな通信が構成されている場合、レプリケーション・ノードは、暗号化された形式でHTTPSを介してElasticsearchにデータを送信します。これは、セキュアなOracle NoSQLストアから受信したデータに索引付けする前に、必要な認証と復号化を実行するようにElastisticsearchを構成する必要があることを意味します。
Elasticsearchバージョン2では、前述の方法でセキュアなチャネルを介してクライアントと通信するための即時利用可能な完全統合オプションは提供されていません。Elasticsearchとのセキュアな通信を実現するために、ユーザーによっては、セキュアなWebサーバーの背後で(または内部でラップして) Elasticsearchデプロイメントを実行します。この目的でTLS (SSL)をサポートする、商用のプラグインのいずれかを使用する場合もあります。Oracle NoSQL Databaseでは、後者のモデルをサポートするよう選択されています。
Elasticsearchクラスタとセキュアに通信するために、Oracle NoSQL Databaseでは、ElasticsearchクラスタのクライアントがHTTPSを介して接続してセキュアに通信できるポートを提供するために、Shield独自のプラグインを使用することをお薦めします。
注意:
現行のOracle NoSQL Database実装とElasticsearchバージョン2の間のセキュアな通信をテストする際にShieldプラグインが使用されていますが、NoSQLの実装には、そのような他のElasticsearchセキュリティ・プラグインの使用を妨げるものはありません。プラグインがHTTPSをサポートするかぎり、Oracle NoSQL Database認証スキームをサポートするように構成できます。前述したセキュアでないケースと比較して、セキュアなケースで作業するときは、追加のステップを実行する必要があります。セキュアなケースでは、Oracle NoSQLストアが同じサンプル・プログラムのセキュア・モードを使用して移入され、索引付けされたデータは、セキュアでないケースと同様の問合せを使用して問い合せられます。唯一の違いは、Oracle NoSQLストアとElasticsearchクラスタがそれぞれセキュアに通信するようにデプロイされ、Elasticsearchクラスタで必要な鍵と証明書が問合せで指定されることです。
セキュアなOracle NoSQLストアおよびElasticsearchクラスタをデプロイして、相互にセキュアに通信できるように構成するには、セキュアでないケースよりもさらに多くのステップを必要とします。付録Sheildを使用したセキュアなElasticsearch、セキュアなOracle NoSQLストアのデプロイおよび構成およびElasticsearchへの全文検索公開証明書のインストールには、そのようなシステムのデプロイに必要なすべてのステップの詳細な説明が記載されています。また、セキュアなOracle NoSQLストアとセキュアなElasticsearchクラスタを正常にデプロイし、ストアとクラスタが通信するために必要なアーティファクト(証明書)をインストールした場合、セキュアでないケースとセキュアなケースの前述のコマンドと問合せの違いは、ごくわずかです。
注意する主要な違いの1つは、Elasticsearchで索引付けするデータをNoSQLストアに移入するためにLoadJsonExample
プログラムを実行する場合は、security
パラメータに、Oracle NoSQL Databaseセキュリティで必要なログイン・プロパティを含むファイルへの絶対パスを指定する必要があります(詳細は、セキュアなOracle NoSQLストアのデプロイおよび構成を参照)。次に例を示します。
java –classpath /opt/ondb/kv/lib/kvstore.jar:src es.table.LoadJsonExample
–store kvstore
–host localhost
–port 5000
–file ~/examples/es/docs/senator-info.json
-table exampleJsonTable
-security /tmp/FTS-client.login
次に、register-es
コマンドを実行してNoSQLストアをセキュアなElasticsearchクラスタに登録する場合に、そのコマンドのsecure
パラメータにtrueを指定する必要があります。次に例を示します。
kv-> plan register-es
–clustername escluster
–host eshost1
–port 29100
–secure true
-wait
最後に、セキュアなElasticsearchクラスタによって索引付けされたデータを問い合せるときに、curl
コマンドに、リクエストの認証のために、クラスタで要求されるOpenSSL公開証明書と秘密鍵を含める必要があります。Sheildを使用したセキュアなElasticsearchを参照してください。次に例を示します。
curl –k -E /tmp/elasticsearch-eshost1.pem
--key /tmp/elasticsearch-eshost1.pkey
–X GET 'http://eshost1:29100/ondb.kvstore.jsontable.jsontxtindex/_search?pretty'
'-d {query":{"bool":{
"must":{"match":{"jsonField.party":"Democrat"}},
"must":{"match":"jsonField.current":"true"}},
"must":{"range":{"jsonField.contrib":{"gte":"1000000.00","lte":20000000.00"}}},
"must":"match":{"jsonField.duties.committe":"Judiciary Apropriations"}}}}}'
このドキュメントに記載されているセキュアな全文検索とコマンドの例に関しては、Sheildを使用したセキュアなElasticsearch、セキュアなOracle NoSQLストアのデプロイおよび構成およびElasticsearchへの全文検索公開証明書のインストールの付録に示されている指示に従っていることが前提となります。明確性と利便性のため、セキュアなElasticsearchとOracle NoSQLシステムを構成してデプロイするためのステップは、個別の独立した項に編成されています。
Sheildを使用したセキュアなElasticsearchには、セキュリティを確保するようにElasticsearchを構成するための必要なステップを示します。これらのステップは、ElasticsearchクラスタがセキュアなOracle NoSQLストアと通信するか、Oracle NoSQLとは無関係な他のなんらかのサービスまたはクライアントと通信するかに関係なく実行する必要があります。
セキュアなOracle NoSQLストアのデプロイおよび構成では、セキュアなOracle NoSQLストアをデプロイして、Sheildを使用したセキュアなElasticsearchで説明されているElasticsearchクラスタとセキュアに通信するように構成する方法について説明します。
セキュアなOracle NoSQLおよびElasticsearchシステムのデプロイメントを完了するために必要な最後のステップは、Elasticsearchへの全文検索公開証明書のインストールに示されています。これらのステップは、Sheildを使用したセキュアなElasticsearchからのElasticsearchクラスタのセキュリティ構成を完了し、さらに、セキュアなOracle NoSQLストアのデプロイおよび構成からのセキュアなOracle NoSQLストアとの通信のためにクラスタのノードで必要です。Elasticsearchへの全文検索公開証明書のインストールに示されているステップは、Sheildを使用したセキュアなElasticsearchとセキュアなOracle NoSQLストアのデプロイおよび構成のステップを実行した後でのみ実行する必要があります。
Sheildを使用したセキュアなElasticsearch、セキュアなOracle NoSQLストアのデプロイおよび構成およびElasticsearchへの全文検索公開証明書のインストールの付録に示されているステップを完了したら、サンプル・プログラムLoadJsonExample
を実行して、セキュアなOracle NoSQLストアのデプロイおよび構成でデプロイされたセキュアなOracle NoSQLストアの表にデータを移入し、Sheildを使用したセキュアなElasticsearchおよびElasticsearchへの全文検索公開証明書のインストールからのセキュアなElasticsearchクラスタのその表のデータに索引付けして、最後に、索引付けされたデータに対してセキュアな問合せを実行できるようになります。便宜上、実行できるコマンドの例のセキュアなバージョンは、セキュア・モードでの例の実行に示されています。
注意:
前述のセキュアでない例でKVLiteを使用して単一ノードにOracle NoSQLストアをデプロイしていることとは異なり、付録Sheildを使用したセキュアなElasticsearch、セキュアなOracle NoSQLストアのデプロイおよび構成、Elasticsearchへの全文検索公開証明書のインストールおよびセキュア・モードでの例の実行では、セキュアなOracle NoSQLストアおよびElasticsearchクラスタ(両方が単一ノードではなく3つのノードで構成される)を使用する方法を示しています。これは、より現実的な例を提示し、本番環境で一般的にどのようなことが発生する可能性があるかを示すこと目的としています。