ITの窓辺から

三流IT技術者の日常

Splunkのインデックス基礎 - ログへのアクセス権制御

風邪ひいて更新が滞っていました。今週微妙に暑かったり涼しかったりで夜油断していました。とりあえずパブロン飲みまくって落ち着けたところです。

Splunkバージョン7.1.1です。

検索の世界でよくインデックスという言葉は使われますが、Splunkにおいても基本的には同様です。ただし、SplunkにおけるインデックスはSplunk利用者のログアクセス権限と密接に関係があるので、導入前運用設計として正しく理解しておく必要がありそうです。

インデックスとは

イメージとしてはログを分類するための箱だと思って下さい。注意すべきは、ログを取り込んだ結果インデックス箱に分類されるのではなく、ログ取り込み時にそのログをどのインデックス箱に取り込むのかを指定する必要があるということです。

こんなイメージでしょうか。

f:id:ReaLiZeZNSG:20180623110822p:plain

Splunkを最小構成で作成した場合です。冗長構成とか色々あるのですがとりあえず本記事対象外とします。

Splunkでデータ入力設定(ログの取り込み)をする時に、以下のように送信先インデックスを指定します。

f:id:ReaLiZeZNSG:20180623111239p:plain

インデックスを分けてどうするのか

一番大きな活用方法はSplunk利用者ごとにアクセスできるログを制限することだと思います。一人でSplunkを使用する場合はともかく管理者が複数いる場合は管理者の立場に応じてアクセスできるログを変える方が良いでしょう。

SplunkではSplunkにログインするユーザIDにロールを割り当てることができます。ロールにはアクセスできるインデックスを指定します。具体的に画面を見てみましょう。

インデックスの使い分けによるログへのアクセス制御設定

構成は以下の通りです。

  • IAPのログをインデックス「main」に、Fortigateのログをインデックス「testindex01」に送る。
  • ユーザID「admin」は全てのインデックスにアクセスできるロール「admin」が付与されている。
  • ユーザID「testuser01」はtestindex01のみアクセスできるロール「testrole01」が付与されている。
インデックスの作成

新しくインデックスを作成します。ほぼデフォルト設定です。

f:id:ReaLiZeZNSG:20180623114235p:plain

Fortigate用のデータ入力設定を追加

FortigateのログをSyslog(UDPポート20001)で受信するように設定し、送信先インデックスをtestindex01に指定します。

f:id:ReaLiZeZNSG:20180623121551p:plain

Fortigate用のインデックス設定は以下の通り。

f:id:ReaLiZeZNSG:20180623121622p:plain

Splunkでは同一UDPポートでの待受設定を一つしか作成できず、同一待受設定の中で送信元IP単位で送信先インデックスを変えることができないようです。そのため、FortigateからのSyslog受信ポートを変えることで対応しています。うまくやろうとすると事前に何かのサーバで一旦ログを受けてさらにSyslog以外でSplunkに入力するような処理が必要かもしれないですね。後日確認してみます。

ロールの作成

mainにはアクセスできるがtestindex01にはアクセスできないロール「role01」を作成します。ロール作成時に検索できるインデックスをmainのみに限定します。

f:id:ReaLiZeZNSG:20180623124054p:plain

ユーザIDの作成

作成したロール「role01」を付与するユーザIDを作成します。

f:id:ReaLiZeZNSG:20180623124812p:plain

実際に検索してみる

adminで検索する

indexにmainを指定して検索するとログが表示されます。

f:id:ReaLiZeZNSG:20180623125726p:plain

indexにtestindex01を指定して検索するとログが表示されます。

f:id:ReaLiZeZNSG:20180623125836p:plain

user01で検索する

indexにmainを指定して検索するとログが表示されます。ログ件数が違うのは画像化したタイミングの問題なので気にしないでください。

f:id:ReaLiZeZNSG:20180623125344p:plain

indexにtestindex01を指定して検索するとログが全く表示されません。

f:id:ReaLiZeZNSG:20180623125534p:plain

このようにアクセスできるインデックスを指定することで複数の管理者に対して権限委譲の設計ができます。組織でのSplunkの使い方の根幹になる部分なのでよく理解しておく必要があるでしょう。

管理体制とかどうでも良いからとりあえずSplunkにデータを送り込みたい場合

何も考えず、デフォルトのインデックス「main」を使いましょう。全てのログはmainインデックスに蓄積され、検索時に全てのログにアクセスできます。