ファイルベースのユーザー認証

組み込みの file レルムを使用して、ユーザーを管理および認証できます。file レルムでは、ユーザーはクラスター内の各ノードのローカルファイルに定義されています。

クラスターの管理者として、クラスター内のすべてのノードで同じユーザーが定義されていることを確認する責任があります。Elastic Stack のセキュリティ機能には、これを保証するメカニズムは提供されていません。また、file レルム内でユーザーを追加または管理することはできず、管理 / セキュリティ / ユーザー ページの Kibana でそれらを追加または管理することもできないことに注意してください。

file レルムは、フォールバックまたはリカバリーレルムとして非常に便利です。たとえば、クラスターが応答しない場合やセキュリティインデックスが利用できない場合、または管理ユーザーのパスワードを忘れた場合などです。このようなシナリオでは、file レルムが便利な解決策です。admin ユーザーを file レルムに定義し、それを使用してログインし、他のすべてのユーザーの資格情報をリセットできます。

ユーザーを定義するには、セキュリティ機能が users コマンドラインツールを提供します。このツールを使用すると、ユーザーを追加および削除し、ユーザーの役割を割り当て、ユーザーパスワードを管理できます。

ファイルレルムの構成

明示的に file レルムを構成する必要はありません。file および native レルムはデフォルトでレルムチェーンに追加されます。特に構成されていない限り、file レルムが最初に追加され、その後 native レルムが追加されます。

他のいくつかのレルムの複数のインスタンスを定義することは可能ですが、ノードごとに 1つの file レルムのみを定義できます。

file レルムのユーザーに関するすべてのデータは、クラスター内の各ノードの2つのファイルに保存されます:usersusers_roles。両方のファイルは ES_PATH_CONF にあり、起動時に読み取られます。

users および users_roles ファイルはノードによってローカルに管理され、クラスターによってグローバルに管理されることはありません。これは、典型的なマルチノードクラスターでは、クラスター内のすべてのノードに同じ変更を適用する必要があることを意味します。

より安全なアプローチは、ノードの1つで変更を適用し、ファイルをクラスター内の他のすべてのノードに配布またはコピーすることです(手動または Puppet や Chef などの構成管理システムを使用して)。

  • 1. (オプション) elasticsearch.ymlxpack.security.authc.realms.file 名前空間の下にレルム構成を追加します。最低限、レルムの order 属性を設定する必要があります。
    たとえば、次のスニペットは、order をゼロに設定する file レルム構成を示しています。

Yaml

  1. xpack:
  2. security:
  3. authc:
  4. realms:
  5. file:
  6. file1:
  7. order: 0

Elasticsearch ノードでは、1つのファイルレルムのみを構成できます。

  • 2. Elasticsearch を再起動します。
  • 3. クラスター内の各ノードの ES_PATH_CONF/users ファイルにユーザー情報を追加します。
    users ファイルには、すべてのユーザーとそのパスワードが保存されます。ファイル内の各行は、ユーザー名と ハッシュ化された および ソルトされた パスワードからなる単一のユーザーエントリを表します。

Bash

  1. rdeniro:$2a$10$BBJ/ILiyJ1eBTYoRKxkqbuDEdYECplvxnqQ47uiowE7yGqvCEgj9W
  2. alpacino:$2a$10$cNwHnElYiMYZ/T3K4PvzGeJ1KbpXZp2PfoQD.gfaVdImnHOwIuBKS
  3. jacknich:{PBKDF2}50000$z1CLJt0MEFjkIK5iEfgvfnA6xq7lF25uasspsTKSo5Q=$XxCVLbaKDimOdyWgLCLJiyoiWpA/XDMe/xtVgn1r5Sg=

資格情報の盗難を制限し、資格情報の侵害を軽減するために、ファイルレルムはセキュリティのベストプラクティスに従ってパスワードを保存し、ユーザーの資格情報をキャッシュします。デフォルトでは、ユーザーの資格情報のハッシュ版がメモリに保存され、ソルトされた sha-256 ハッシュアルゴリズムを使用し、パスワードのハッシュ版はディスクに保存され、bcrypt ハッシュアルゴリズムでソルトおよびハッシュ化されます。異なるハッシュアルゴリズムを使用するには、ユーザーキャッシュとパスワードハッシュアルゴリズムを参照してください。
users ファイルを標準のテキストエディタを使用して直接変更することは可能ですが、必要な変更を適用するために elasticsearch-users ツールを使用することを強くお勧めします。
クラスターの管理者として、クラスター内のすべてのノードで同じユーザーが定義されていることを確認する責任があります。Elasticsearch のセキュリティ機能には、これを保証するメカニズムは提供されていません。

  • 4. クラスター内の各ノードの ES_PATH_CONF/users_roles ファイルに役割情報を追加します。
    users_roles ファイルには、ユーザーに関連付けられた役割が保存されます。たとえば:

Shell

  1. admin:rdeniro
  2. power_user:alpacino,jacknich
  3. user:jacknich

各行は、役割をその役割に関連付けられたすべてのユーザーのカンマ区切りリストにマッピングします。
このファイルを更新するには、elasticsearch-users ツールを使用できます。クラスター内のすべてのノードで同じ変更が行われることを確認する必要があります。

  • 5. (オプション) users および users_roles ファイルがチェックされる頻度を変更します。
    デフォルトでは、Elasticsearch はこれらのファイルの変更を5秒ごとにチェックします。このデフォルトの動作は、resource.reload.interval.high 設定を elasticsearch.yml ファイルで変更することによって変更できます(これは Elasticsearch で一般的な設定であるため、その値を変更するとシステム内の他のスケジュールに影響を与える可能性があります)。