ファイルベースのユーザー認証
組み込みの file
レルムを使用して、ユーザーを管理および認証できます。file
レルムでは、ユーザーはクラスター内の各ノードのローカルファイルに定義されています。
クラスターの管理者として、クラスター内のすべてのノードで同じユーザーが定義されていることを確認する責任があります。Elastic Stack のセキュリティ機能には、これを保証するメカニズムは提供されていません。また、file
レルム内でユーザーを追加または管理することはできず、管理 / セキュリティ / ユーザー ページの Kibana でそれらを追加または管理することもできないことに注意してください。
file
レルムは、フォールバックまたはリカバリーレルムとして非常に便利です。たとえば、クラスターが応答しない場合やセキュリティインデックスが利用できない場合、または管理ユーザーのパスワードを忘れた場合などです。このようなシナリオでは、file
レルムが便利な解決策です。admin
ユーザーを file
レルムに定義し、それを使用してログインし、他のすべてのユーザーの資格情報をリセットできます。
ユーザーを定義するには、セキュリティ機能が users コマンドラインツールを提供します。このツールを使用すると、ユーザーを追加および削除し、ユーザーの役割を割り当て、ユーザーパスワードを管理できます。
ファイルレルムの構成
明示的に file
レルムを構成する必要はありません。file
および native
レルムはデフォルトでレルムチェーンに追加されます。特に構成されていない限り、file
レルムが最初に追加され、その後 native
レルムが追加されます。
他のいくつかのレルムの複数のインスタンスを定義することは可能ですが、ノードごとに 1つの file
レルムのみを定義できます。
file
レルムのユーザーに関するすべてのデータは、クラスター内の各ノードの2つのファイルに保存されます:users
と users_roles
。両方のファイルは ES_PATH_CONF
にあり、起動時に読み取られます。
users
および users_roles
ファイルはノードによってローカルに管理され、クラスターによってグローバルに管理されることはありません。これは、典型的なマルチノードクラスターでは、クラスター内のすべてのノードに同じ変更を適用する必要があることを意味します。
より安全なアプローチは、ノードの1つで変更を適用し、ファイルをクラスター内の他のすべてのノードに配布またはコピーすることです(手動または Puppet や Chef などの構成管理システムを使用して)。
- 1. (オプション)
elasticsearch.yml
のxpack.security.authc.realms.file
名前空間の下にレルム構成を追加します。最低限、レルムのorder
属性を設定する必要があります。
たとえば、次のスニペットは、order
をゼロに設定するfile
レルム構成を示しています。
Yaml
xpack:
security:
authc:
realms:
file:
file1:
order: 0
Elasticsearch ノードでは、1つのファイルレルムのみを構成できます。
- 2. Elasticsearch を再起動します。
- 3. クラスター内の各ノードの
ES_PATH_CONF/users
ファイルにユーザー情報を追加します。users
ファイルには、すべてのユーザーとそのパスワードが保存されます。ファイル内の各行は、ユーザー名と ハッシュ化された および ソルトされた パスワードからなる単一のユーザーエントリを表します。
Bash
rdeniro:$2a$10$BBJ/ILiyJ1eBTYoRKxkqbuDEdYECplvxnqQ47uiowE7yGqvCEgj9W
alpacino:$2a$10$cNwHnElYiMYZ/T3K4PvzGeJ1KbpXZp2PfoQD.gfaVdImnHOwIuBKS
jacknich:{PBKDF2}50000$z1CLJt0MEFjkIK5iEfgvfnA6xq7lF25uasspsTKSo5Q=$XxCVLbaKDimOdyWgLCLJiyoiWpA/XDMe/xtVgn1r5Sg=
資格情報の盗難を制限し、資格情報の侵害を軽減するために、ファイルレルムはセキュリティのベストプラクティスに従ってパスワードを保存し、ユーザーの資格情報をキャッシュします。デフォルトでは、ユーザーの資格情報のハッシュ版がメモリに保存され、ソルトされた sha-256
ハッシュアルゴリズムを使用し、パスワードのハッシュ版はディスクに保存され、bcrypt
ハッシュアルゴリズムでソルトおよびハッシュ化されます。異なるハッシュアルゴリズムを使用するには、ユーザーキャッシュとパスワードハッシュアルゴリズムを参照してください。users
ファイルを標準のテキストエディタを使用して直接変更することは可能ですが、必要な変更を適用するために elasticsearch-users ツールを使用することを強くお勧めします。
クラスターの管理者として、クラスター内のすべてのノードで同じユーザーが定義されていることを確認する責任があります。Elasticsearch のセキュリティ機能には、これを保証するメカニズムは提供されていません。
- 4. クラスター内の各ノードの
ES_PATH_CONF/users_roles
ファイルに役割情報を追加します。users_roles
ファイルには、ユーザーに関連付けられた役割が保存されます。たとえば:
Shell
admin:rdeniro
power_user:alpacino,jacknich
user:jacknich
各行は、役割をその役割に関連付けられたすべてのユーザーのカンマ区切りリストにマッピングします。
このファイルを更新するには、elasticsearch-users ツールを使用できます。クラスター内のすべてのノードで同じ変更が行われることを確認する必要があります。
- 5. (オプション)
users
およびusers_roles
ファイルがチェックされる頻度を変更します。
デフォルトでは、Elasticsearch はこれらのファイルの変更を5秒ごとにチェックします。このデフォルトの動作は、resource.reload.interval.high
設定をelasticsearch.yml
ファイルで変更することによって変更できます(これは Elasticsearch で一般的な設定であるため、その値を変更するとシステム内の他のスケジュールに影響を与える可能性があります)。