大輔(442)49この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。はじめに今日はShieldを試してみたいと思います!通常Elasticsearchをそのまま使っている場合、特に認証機構などが無いので、IPアドレスとポートだけ分かっていれば誰でも使えてしまいます。Groupなどを使って、ネットワークレベルのフィルタリングでアクセス制御を行う必要がありました。ShieldはElasticsearchのセキュリティプラグインです。Shieldを使うことで、Elasticsearchへのアクセスに認証と権限制御ができるようになります。通信の暗号化やSSLクライアント認証、IPフィルタリングも可能になります!ユーザ操作の監査証跡もできます。Shiledを使うことで、Elasticsearchをセキュアに使うことが可能になります。これはもう必須プラグインと言っても良いのでは無いでしょうか。Shieldは商用プロダクトであり、インストール後30日間は試用ライセンスで動作しますが、その後はライセンスの購入が必要です。外部からアクセスされるようなシステムでElasticsearchを使う場合には、ライセンスの購入もご検討されてはいかがでしょうか。やってみましょう!やってみたShieldのインストールElasticsearch自体はrpmでインストール済みとします。elasticsearchelasticsearch-1.7.2-1.noarchShieldはPluginとしてインストールできます。商用プロダクトなのでlicenseのインストールが必要になります。elasticsearch/shield/latestPluginをインストールしたら、Elasticsearchを起動します。]Elasticsearch起動時のログ。Shieldのライセンスが読み込まれています。試用ライセンスであり、いつexpireされるのかが出力されていますね。you管理者ユーザーを作るでは、管理者(admin)のロールで、ユーザーを追加します。password:この状態で普通にGETしようとすると...はい、できません。Shieldが入っているので認証なしではデータが取得できなくなっています。[/]]","status":401}では、ユーザーを指定してアクセスしてみましょう。Search"}管理者じゃないユーザーを作る先ほど管理者ユーザーを追加した時、-rで"admin"と指定しました。Shieldでは、デフォルトで複数のロールが用意されています。これは/etc/elasticsearch/shield/roles.ymlに記述されています。read(...以下省略...)では、"user"ロールにユーザーを追加してみましょう。このユーザーはreadの権限しかありません。password:管理者ユーザーでデータをPUTしてみます。'admin':{"_index":"mytest","_type":"test","_id":"1","_version":1,"created":true}次に、readしかできないユーザーでデータをGETしてみます。"daisuke"}}さて、readしかできないユーザーでデータをPUTしてみます。[smokeymonkey]]","status":403}というように、認証と権限制御ができました!監査証跡を有効にするelasticsearch.ymlを編集し、以下行を追加します。trueそしてElasticsearchを再起動します。restartこの状態でElasticsearchにアクセスすると、監査ログが記録されます。Auditingをご覧下さい。smokeymonkey。札幌オフィス勤務のAWSエンジニア兼宴会部長。好きなものは妻と長女と長男と次男と三男(犬)とビールとカレーと愛妻弁当。嫌いなものは甘酒とミルク無しでシュガー入りのコーヒー。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。今日はオフィスに用があるので、通勤ラッシュを避けて出社しました。この子は新メンバーのさめくんです。在宅勤務が推奨されているのでオフィスが閑散としており、すこしさみしそうです。使いたいときの注意点を書きました。本が出ていたので読んでみたところよかったので紹介させていただきます。