やさぐれSEの技術メモ

皆が辛い思いをしないようにハマったポイントなどを書きます

Elasticsearchのインストール及び設定 その5 ビルトインアカウントのパスワード変更

はじめに

前回でElasticsearchの起動ができたので、これからビルトインアカウントのパスワードを変更します。

f:id:gitya107:20180519141408p:plain

作業のポイント

  • この手順は 「クラスタで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
<<パスワードを求められたら入力>>
~実行結果は手元にないです・・・~