エンジニアリング

Elasticsearchサーバー侵害を防ぐ方法

テクノロジーの分野に身を置いている方は、「サーバー侵害」というフレーズを、どこかで見聞きしているのではないでしょうか。テクノロジー以外の分野であっても、サーバー侵害やデータ侵害、セキュリティの不備が原因で、私用データや個人データが悪意のある者の手に渡っている事実は、認識しているかと思います。こうしたデータは、信用情報や社会保障番号などの、他人に知られたり、ダークウェブ上に公開されたりすると都合が悪い情報である場合もあります。

あらゆるソフトウェアが、侵害や攻撃の可能性に対処する必要があります。その点では、Elasticが開発したオープンソースソフトウェアプロジェクト、Elasticsearchも例外ではありません。これまでに、安全ではない方法でElasticsearchに格納したデータが漏洩したり、失われたり、盗難されたりした事例が報告されています。

Elasticsearchサーバー侵害を防ぐ方法

この記事では、データ侵害がどのように発生するのか、またElasticsearchのユーザーがどのように対処すれば、その脅威からデータを最適に保護できるのかを、わかりやすく説明します。まずは少し初歩的なことから説明していきますが、基本事項は飛ばして、 Elasticsearchを安全に保つには、どうすればよいですか?のセクションをご覧いただくこともできます。

Elasticsearchについて

Elasticsearchは、オープンソースの検索および分析エンジンであり、データストアでもあります。何億回にもわたってダウンロードされている、非常に人気のある製品です。スピード、スケール、検索関連性の高さを売りにしていますが、使いやすく、あらゆる種類のデータ(テキスト、数値、地理空間など)を処理でき、堅牢な機能セットを備えているほか、(オープンソースであるため)すべてのユーザーがバグ修正案の提出や改善提案を行える点も、この製品の幅広い利用を促進している大きな要因です。

これらの技術用語がわかりにくければ、数十億もの行に含まれるあらゆるデータを瞬時に見つけたり、計算したりできるスプレッドシートを想像してみてください。Elasticsearchはそのような製品であり、本当に優れた機能を備えているので、数多くの組織がElasticsearchを利用して、自社のEコマースサイトでの検索機能の強化火星探査機から送信されたデータの分析ライドシェアでの時間どおりの配車など、あらゆることを実現しています。

Elasticとはどのような企業ですか?顧客のデータは保有していますか?

Elasticは、Elasticsearchや、Elastic Stackのその他の製品(Kibana、Beats、Logstashなど)を開発している会社です。Elasticsearchは、検索オブザーバビリティセキュリティなど、さまざまなソリューションの主軸となる製品です。

また、データの保有について簡単にお答えすると、お客様のデータは保有していません。ElasticではElasticsearchの開発を行い、それが他の企業のローカル環境やクラウドインフラストラクチャー内で運用されます。 

もう少し詳しくお答えすると、場合によっては保有することもあります。企業によっては、ElasticのElasticsearchマネージドサービス、Elastic Cloudを利用している場合があります。Elasticには、お客様がElastic Cloudに投入するすべてのデータを保守する責任があり、そのデータを安全な状態に保つことも責任の一部です。そのような理由から、ElasticのすべてのElasticsearch Serviceデプロイに、デフォルトでセキュリティ機能が用意されています

Elasticsearchのデータはどこに保持されますか?

Elasticsearchはオープンソース(つまり、誰でも無料でダウンロードとインストールが可能)なので、ほとんどどこにでもインストールできます。企業によっては独自の社内サーバーにダウンロードおよびインストールする場合もあれば、(任意のプロバイダーの)クラウド上にダウンロードおよびインストールする場合もあります。また、マネージドバージョンのElasticsearchを提供しているクラウドサービス企業もあります。つまり、その企業がお客様のElasticsearchクラスター(Elasticでの呼び方)をホストおよび管理します。 

実際、Elasticでも独自のマネージドElasticsearch ServiceをElastic Cloudで提供しています。Elasticのサービスでは、(デフォルトのセキュリティを含む)幅広い管理サービスが提供されるほか、いくつかのクラウドプロバイダーからインフラストラクチャーを自由に選択できます。

Elasticsearchサーバーの侵害はどのような方法で行われますか?

データストアの侵害には、盗難されたパスワードを使ったものから、ハッカーによるもの、不満を持つ従業員によるものまで、さまざまなパターンがあります。Elasticsearchの場合、最もよくある種類の侵害は、インターネット上での安全性を確保せずに放置されているクラスターによるもので、そのようなクラスターは、ユーザー名やパスワードなしで誰でも接続でき、データにアクセスできる状態になっています。こういった安全に問題があるクラスターはセキュリティ研究者によって発見されることが多く、その結果が公表されることで、そうしたインターネット上に放置されているデータの存在が世界に知られることになります。

適切に安全対策が講じられていれば、Elasticsearchクラスターは、他のどのようなデータベースよりも侵害にさらされるリスクが小さくなります。また、Elastic Stackをダウンロードして利用するユーザーにとってElasticsearchクラスターを安全に保つために必要な機能を、Elasticが(無料かつデフォルトで)提供しているのは、このような理由からです。これについて、Elasticsearchの機能を使用し、クラスターを安全に保つためにできることを、いくつか見ていきましょう。

Elasticsearchを安全に保つには、どうすればよいですか?

Elasticでは、Elasticsearchセキュリティ機能を無料かつデフォルト(ベーシックプラン)の配布パッケージに含めているので、すべてのユーザーがElasticsearchクラスターのセキュリティを構成し、予期しないデータ漏洩を防止することができます。ただし、それらの機能の使用方法に目を向ける前に、まずはクラスターがすでに安全な状態に保たれているかどうかを判別する方法について見ていきましょう。

安全に保たれていないElasticsearchクラスターがあるかどうかを見分けるには、どうすればよいですか?

Elasticsearchのユーザーまたは管理者には、セキュリティが有効化され、機能しているかどうかを確認できる簡単な方法がいくつかあります。 

セキュリティが有効化され、機能しているかどうかを判別するのに最適な方法は、設定APIのクエリを実行することです。このクエリを発行するには、次のようにします。

GET _xpack/usage?filter_path=security

セキュリティが無効になっている場合は、次のような結果が表示されます。

{ 
  "security" : { 
    "available" : true,
    "enabled" : false, // セキュリティがオフの場合は、これが「false」に設定されている 
    "ssl" : { 
      "http" : { 
        "enabled" : false 
      },
      "transport" : { 
        "enabled" : false 
      } 
    } 
  } 
}

また、セキュリティが想定どおりに機能している場合は、次のような結果になります。

{ 
  "security" : { 
    "available" : true,
    "enabled" : true, // セキュリティがオンの場合は、これが「true」に設定されている
    "realms" : { ... },
    "roles" : { ... },
    "role_mapping" : { ... },
    "ssl" : { 
      "http" : { 
        "enabled" : true 
      },
      "transport" : { 
        "enabled" : true 
      } 
  },
  "token_service" : { ... },
  "api_key_service" : { ... },
  "audit" : { ... },
  "ipfilter" : { ... },
  "anonymous" : { ... } 
  } 
}

結果に大きな違いがあるのがわかります。デプロイしたバージョンとライセンスレベルによっても、結果がわずかに異なるものになる場合があります。

Elasticsearchクラスターが安全に保たれていることを確認するには、どうすればよいですか?

部外者がElasticsearchクラスターにアクセスできないようにする最も簡単な方法が、以下の2つです。

  1. 認証を有効化して、Elasticsearchにログインしない限り誰もアクセスできないようにする。
  2. TLSを有効化して、自分のネットワークを介して送受信されるElasticsearchデータが誰にも傍受されないようにする。

上記2つの推奨手法を簡単に実装する方法など、Elasticsearchを安全に保つ方法を解説する優れたリソースが、数多く提供されています(ページ下部の一覧を参照)。ただし、安全を確保するための最短経路は、ブログ記事の「Elasticsearch Securityを使いはじめる」(TLSとRBAC)と、それに付随する次のビデオ(7分でElasticsearchを安全に保つ)をご覧いただくことです。

Elastic Cloud上のElasticsearch Serviceには、このすべてを簡単に実行できるボタンもあります。Elasticsearch Serviceを利用すれば、すべてのクラスターに対して自動的に構成されるセキュリティが必ず付属します。

セキュリティに欠かせないチームワーク

ご質問がございましたら、いつでもお気軽にお問い合わせください。Elasticでは、フォーラム、地域イベント、(上記のリンク先よりもはるかに)多くのドキュメントなど、Elasticコミュニティに参加していただく手段として、さまざまなものを用意しています。また、これまでになく簡単な方法でElasticsearchを安全に保つための日々の取り組みも行っています。最新情報や、この分野での今後の取り組みについてお知らせしますので、Elasticのブログ記事を見逃さないようご注意ください。スパイダーマンのファンにはお馴染みの、「大いなる力には、大いなる責任が伴う」という台詞をご存知でしょうか。これは、Elasticと、Elasticsearchをデータの保存に利用しているユーザーの皆様にも当てはまる言葉です。

Elasticsearchを安全に保つ上で役立つその他のリソース

ブログ記事

ビデオ

ドキュメント

トレーニングコース