Elasticsearchのインストール及び設定 その5 ビルトインアカウントのパスワード変更
はじめに
前回でElasticsearchの起動ができたので、これからビルトインアカウントのパスワードを変更します。
作業のポイント
- この手順は 「クラスタで1回」 だけ実施すれば良いです。
- 事前にElasticsearchを起動しておく必要があります。
- Configの「xpack.security.elabled」が「true」で無ければ設定ができません
- 実行するコマンドがデフォルトのポート(9200)に対してAPIを裏で発行しているようです。
そのため、RHEL#3で作業を実施します。
実施手順
以下のコマンドを実行します。
各パスワードは任意のものを設定してください。
logstash を使用していませんが、気にせずパスワードを設定して大丈夫です。
# /usr/share/elasticsearch/bin/x-pack/setup-passwords interactive Initiating the setup of passwords for reserved users elastic,kibana,logstash_system. You will be prompted to enter passwords as the process progresses. Please confirm that you would like to continue [y/N] y Enter password for [elastic]:パスワードを入力 Reenter password for [elastic]:パスワードを入力 Enter password for [kibana]:パスワードを入力 Reenter password for [kibana]:パスワードを入力 Enter password for [logstash_system]:パスワードを入力 Reenter password for [logstash_system]:パスワードを入力 Changed password for user [kibana] Changed password for user [logstash_system] Changed password for user [elastic]
確認方法(クラスタの状態確認をするAPIを発行)
セキュリティが有効の場合は、Elasticsearchに対してAPIを発行する際にID/PASを入力必要があります。
上述の手順でパスワードの設定をしましたので、APIを発行してみます。
設定と同様にRHEL#3に対してAPIを発行します。(#4、#5でも大丈夫です)
「-u」オプションの後にユーザを指定します。
curl -XGET -u elastic http://192.168.0.3:9200/_cluster/health?pretty <<パスワードを求められたら入力>> { "cluster_name" : "クラスタ名", <===== 設定したクラスタ名か確認します "status" : "green", <============= 「green」が正常です。それ以外は何かがおかしいので要調査です "timed_out" : false, "number_of_nodes" : 8, <========== Master及びDataノードの総数のはずです(手元に環境が無く自信なし) "number_of_data_nodes" : 5, <====== データノードが設定した数かどうかを確認します。 "active_primary_shards" : 5, <======= データを投入すると数が変わるので、あまり気にしていないです "active_shards" : 10, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, <========= shardのデータが破損した時の数です。 "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 }
「.security」について
下記のAPIを発行するとインデックスの一覧が表示されます。
現段階だと「.security」というインデックスがあるはずです。
こちらに上記で設定したビルトインアカウントのパスワードが入っているようです。
なので、全インデックスの削除コマンドを実行すると.securityも削除され、APIの認証が通らなくなります。
(筆者が実際にやってしまった)
誤って消してしまった場合も、上記の手順で再度パスワードの設定ができます。(検証済)
また、Configの「action.destructive_requires_name」に「true」を設定することで、インデックス名を指定しないと削除ができなくなりますので、この定義は設定した方が良いです。
curl -XGET -u elastic http://192.168.0.3:9200/_aliases?pretty <<パスワードを求められたら入力>> ~実行結果は手元にないです・・・~