DBAtlas · データベース運用アトラス

Elasticsearch セキュリティ強化 (security、TLS、ロール、audit)

Elasticsearchレベル: 上級所要時間: 10 分 (監査) – 2 時間 (全面的な強化)

インストールや日常運用のガイドではありません。稼働中の Elasticsearch クラスタを強化するためのシナリオ別 runbook です。読み取り専用のセキュリティ監査、無効な security を transport TLS とともに有効化 (クラスタ全体の再起動)、HTTP TLS への rolling 移行、DBA/アプリケーション用ロール、有効期限付き API キー、緊急用 file realm ユーザー、elastic を日常業務から外す、anonymous アクセスの無効化、network.host と IP フィルタリング、audit logging (ライセンス確認付き)、スナップショットリポジトリへのアクセス、Kibana の service account トークンを扱い、最後に監査を再実行してリスクが解消したことを確認します。8.x/9.x の RPM/DEB インストールでは security と TLS は最初から有効です。監査から始め、RISK/WARNING が出たシナリオだけを実施してください。シャード、ディスク、ノードの作業は運用ガイド、バックアップはスナップショットガイドにあります。

構成: ノード 1~12 台の Elasticsearch クラスタ (+ Kibana)

シナリオ

  • セキュリティ状態の監査 (読み取り専用) — 何も変更しません。security が有効か、認証なしアクセス、HTTP/transport TLS、anonymous アクセス、ユーザーと elastic の使用状況、有効期限のない API キー、audit logging、IP フィルタリング、リッスンアドレス、ライセンス状態を OK / WARNING / RISK で報告します。どこから始めればよいかわからない場合はこれを選んでください。
  • 全面的な強化 (すべてを順に) — 監査 → security + transport/HTTP TLS (無効な場合。クラスタ全体の再起動) → ユーザー/ロール/API キー、anonymous の無効化、elastic を日常業務から外す → ネットワークと IP フィルタリング → audit logging (ライセンスが許す場合) → スナップショットリポジトリへのアクセス → Kibana 接続 → 最終監査。
  • Security が無効: セキュリティと transport TLS を有効化する — xpack.security.enabled: false、または 7.x からアップグレードされ、認証なしでアクセスされているクラスタ。証明書を生成し、transport (および必要に応じて HTTP) TLS とともに security を有効化します。クラスタ全体の再起動が必要です (停止を伴います)。ノード間で TLS 接続と非 TLS 接続は共存できません。
  • HTTP (REST) トラフィックを TLS に移行する — Security は有効ですが、9200 番ポートが平文 HTTP のためパスワードをネットワーク上で読み取れます。HTTP 証明書を配布し、ノードを 1 台ずつ再起動します。クライアントは https:// に切り替えます。
  • ユーザー、ロール、API キー、elastic と anonymous アクセス — アプリケーションが elastic スーパーユーザーで接続している、anonymous アクセスが有効、または有効期限のない API キーがある場合。DBA とアプリケーションに別々のロール/ユーザー、アプリケーションには有効期限付き API キー、緊急用 (file realm) ユーザーを用意し、elastic のパスワードを変更して日常業務から外します。
  • Audit logging を有効化する — 誰がどのインデックスにアクセスしたか、失敗したログイン試行、認可拒否、セキュリティ設定の変更を記録する必要があります。xpack.security.audit.enabled (静的設定、rolling 再起動) — ライセンスが必要です (ステップ内でライセンスを確認します)。
  • ネットワークアクセスと IP フィルタリング — 9200/9300 がすべてのインターフェースでリッスンしている、または誰でもアクセスできる場合。network.host を内部 IP に限定し、firewall と Elasticsearch の IP フィルタリングでノード、Kibana、アプリケーションネットワークだけを許可します。
  • スナップショットリポジトリへのアクセスを保護する — スナップショットディレクトリを誰でも読める、リポジトリの管理権限が広すぎる、またはクラウドのアクセスキーが elasticsearch.yml に書かれている場合。ディレクトリのパーミッション、スナップショットオペレーター用ロール、keystore、2 つ目のクラスタでの読み取り専用リポジトリ登録を扱います。
  • Kibana の接続を保護する — Kibana が elastic ユーザーまたは暗号化なしで接続しており、パスワードが kibana.yml に平文で書かれている場合。Service account トークン、CA 検証、keystore、暗号化キーを扱います。

開始前の確認

  • 全ノードで root/sudo。最初のノードから他のノードへの SSH (証明書の配布)。
  • クラスタが green であること。正常でないクラスタでは rolling 作業を行いません。
  • python3 (JSON の解析)、openssl、unzip がインストール済みであること。
  • Security (transport TLS) の有効化にはクラスタ全体の再起動が必要です。メンテナンスウィンドウと事前に取得したスナップショットを用意してください。
  • クライアントの棚卸し (Kibana、Logstash、Beats、アプリケーション): HTTP TLS と認証を有効にすると、それぞれを https + CA + ユーザー/API キーで更新する必要があります。
  • Audit logging と IP フィルタリングは有償ライセンスの機能です (Gold 以上: Gold、Platinum、Enterprise、または 30 日間の trial。新規の self-managed サブスクリプションでは Platinum/Enterprise)。Basic ライセンスではどちらも機能しません。設定は受け付けられますが、audit レコードは生成されず、IP フィルタはどの接続もブロックしません。ライセンスの確認: GET _license。

ガイドのフェーズ

  • 準備: セーフティネットと補助ツール — 構成ファイル、keystore、証明書のバックアップ: … · スナップショットを取得する (推奨) · PyYAML とツール: … · 構成ファイルのパーミッション: … · 管理者の認証情報を netrc ファイルに書き込む
  • 状態の監査 (読み取り専用) — セキュリティレポート: … · 検出結果をシナリオに対応付ける
  • Security の有効化: 診断と証明書 — 診断: security は本当に無効か · CA とノード証明書を生成する · 証明書をノードに配布する · 証明書のパーミッション: … · elasticsearch.yml: security と TLS の設定: … · シャードの割り当てを停止して flush する
  • Security の有効化: クラスタ全体の再起動 — 停止: … · 起動: … · elastic のパスワードを設定する · 管理者の認証情報を netrc ファイルに書き込む (elastic) · シャードの割り当てを再開し、正常化を待つ · kibana_system のパスワード …
  • HTTP TLS: 証明書 — 現在の状態 · HTTP 証明書を生成する · 配布とパーミッション: …
  • ユーザー、ロール、API キー — 既存のユーザー、ロール、API キー · DBA 管理ユーザー (…) · 緊急用ユーザー (file realm): … · アプリケーションのロールとユーザー (…) · アプリケーション用の有効期限付き API キー · 最小権限を検証する (…) …
  • ネットワークアクセスと IP フィルタリング — Firewall: … · network.host は内部 IP か: … · Elasticsearch の IP フィルタリング
  • Audit logging: ライセンスと設定 — ライセンスで audit logging を使用できるか
  • Audit logging: イベントの選択と検証 — 記録するイベント · Audit レコードが生成されるか: …
  • スナップショットリポジトリへのアクセス — スナップショットディレクトリのパーミッション: … · リポジトリ一覧、クラウドのキー、スナップショットオペレーター用ロール
  • Kibana の接続 — Kibana の service account トークン · kibana.yml と keystore · Kibana の接続を検証する
  • 最終監査 (強化後) — セキュリティレポート: … (最終状態)
  • 後片付けとその後の作業 — 一時的な認証情報ファイルを削除する: … · その後の作業
環境に合わせた手順プランを開く →