Splunkのインデックス基礎 - ログへのアクセス権制御
風邪ひいて更新が滞っていました。今週微妙に暑かったり涼しかったりで夜油断していました。とりあえずパブロン飲みまくって落ち着けたところです。
Splunkバージョン7.1.1です。
検索の世界でよくインデックスという言葉は使われますが、Splunkにおいても基本的には同様です。ただし、SplunkにおけるインデックスはSplunk利用者のログアクセス権限と密接に関係があるので、導入前運用設計として正しく理解しておく必要がありそうです。
インデックスとは
イメージとしてはログを分類するための箱だと思って下さい。注意すべきは、ログを取り込んだ結果インデックス箱に分類されるのではなく、ログ取り込み時にそのログをどのインデックス箱に取り込むのかを指定する必要があるということです。
こんなイメージでしょうか。
Splunkを最小構成で作成した場合です。冗長構成とか色々あるのですがとりあえず本記事対象外とします。
Splunkでデータ入力設定(ログの取り込み)をする時に、以下のように送信先インデックスを指定します。
インデックスを分けてどうするのか
一番大きな活用方法はSplunk利用者ごとにアクセスできるログを制限することだと思います。一人でSplunkを使用する場合はともかく管理者が複数いる場合は管理者の立場に応じてアクセスできるログを変える方が良いでしょう。
SplunkではSplunkにログインするユーザIDにロールを割り当てることができます。ロールにはアクセスできるインデックスを指定します。具体的に画面を見てみましょう。
インデックスの使い分けによるログへのアクセス制御設定
構成は以下の通りです。
- IAPのログをインデックス「main」に、Fortigateのログをインデックス「testindex01」に送る。
- ユーザID「admin」は全てのインデックスにアクセスできるロール「admin」が付与されている。
- ユーザID「testuser01」はtestindex01のみアクセスできるロール「testrole01」が付与されている。
インデックスの作成
新しくインデックスを作成します。ほぼデフォルト設定です。
Fortigate用のデータ入力設定を追加
FortigateのログをSyslog(UDPポート20001)で受信するように設定し、送信先インデックスをtestindex01に指定します。
Fortigate用のインデックス設定は以下の通り。
Splunkでは同一UDPポートでの待受設定を一つしか作成できず、同一待受設定の中で送信元IP単位で送信先インデックスを変えることができないようです。そのため、FortigateからのSyslog受信ポートを変えることで対応しています。うまくやろうとすると事前に何かのサーバで一旦ログを受けてさらにSyslog以外でSplunkに入力するような処理が必要かもしれないですね。後日確認してみます。
ロールの作成
mainにはアクセスできるがtestindex01にはアクセスできないロール「role01」を作成します。ロール作成時に検索できるインデックスをmainのみに限定します。
ユーザIDの作成
作成したロール「role01」を付与するユーザIDを作成します。
実際に検索してみる
adminで検索する
indexにmainを指定して検索するとログが表示されます。
indexにtestindex01を指定して検索するとログが表示されます。
user01で検索する
indexにmainを指定して検索するとログが表示されます。ログ件数が違うのは画像化したタイミングの問題なので気にしないでください。
indexにtestindex01を指定して検索するとログが全く表示されません。
このようにアクセスできるインデックスを指定することで複数の管理者に対して権限委譲の設計ができます。組織でのSplunkの使い方の根幹になる部分なのでよく理解しておく必要があるでしょう。
管理体制とかどうでも良いからとりあえずSplunkにデータを送り込みたい場合
何も考えず、デフォルトのインデックス「main」を使いましょう。全てのログはmainインデックスに蓄積され、検索時に全てのログにアクセスできます。