Help us understand the problem. What is going on with this article?

Slack メッセージを Splunkに取り込んで分析してみた

はじめに

Slack + Splunk 連携については、過去こちらにまとめてきたので、今回は第3弾としてSlack Web APIを利用して Slackのデータを Splunkに取り込んでやってみたいと思います。

過去記事
Splunk Alert を Slack に飛ばしてみる
Slack で Splunk SPLを使えるようにする (Lunaのご紹介)

今回使う Splunkアプリは、「 Slack App for Splunk 」を利用します。

Slack 側の API利用の制限が厳しくなっており色々とはまったので、その点を中心に書いておきたいと思います。

どんなユースケースがあるか?

個人的に考えたところでは、こんなケースで利用できるのではと思います。
・どんなメッセージがやりとりされているかを分析することができる。(おそらく機械分析なども可)
・だれが活発に利用しているかなどの利用分析
・不審なアクセスがないかなどのセキュリティー対策
・「いいね」数の多いメッセージやユーザーをランキング
・ナレッジを slackに溜めている場合、過去の検索などが簡単になる。(slackの場合検索がいまいちだったりする)

利用できるまでの、おおまかな流れ

  1. Slack アプリを作成して、token を取得する
  2. Splunkに "Slack App for Splunk" を追加する
  3. Slack Token を Splunk Appに設定する。

以上

1. Slack アプリを作成し、Tokenを取得する

Slack API Token について

"Slack App for Splunk" のアプリの中には Readmeファイルがあり、Tokenの取得URLとかあるのですが、こちらの tokenはすでにレガシーとなっており、今はまだ使えるのですがいずれなくなるよ。という非推奨のメッセージがでてきます。

今は、Slack apps を作成し、scope設定して利用するのを推奨としているようなので、今回はその推奨構成をチャレンジしてみたいと思います。

image.png

Slack Apps の作成

https://api.slack.com/slack-apps
こちらから、 "create a slack apps" で作成し始めます。

App Name には適当に自分がわかるアプリ名と
Development Slack Workspace にはアプリを適用する slack workspaceを選択してください。
image.png

Functionality には、Botsを選択。(すると Permissionsもチェックが自動的につきます)
image.png

Scope 決め

作成したSlack apps に権限を与える必要があります。主に access logを取得するための admin 権限と、メッセージ内容を取得するための read権限です。READMEも古いレガシー Tokenを参照しているため、どの権限がいいか明記されておらず苦労しましたが、ログから下記の権限が必要と判明しました。合っているかわからないので、エラーメッセージと共に、設定した scopeを記載します。

エラーログメッセージ(slack_logins.py)
logs: {u'needed': u'admin', u'ok': False, u'error': u'missing_scope', u'provided': u'identify,bot,channels:read,team:read,users:read,usergroups:read,chat:write:user'}
今回設定したscope
admin
channels:read
channels:write
chat:write:user
bot
usergroups:read
users:read
team:read

Tokenの取得

OAuth & Permissions の項目あるいは、アプリの下の方に行くと、OAuth Access Token が取得できます。
image.png

2. Splunkに "Slack App for Splunk" を追加する

https://splunkbase.splunk.com/app/3542/
こちらのアプリを Splunkにインストールする。

TA-slack というアプリがインストールされます。

このアプリで取得できることは、以下の2つです。
1. アクセス情報
2. メッセージ情報

3. Splunkのデータ入力の設定

「設定」 --> 「データ入力」 
image.png

それぞれ 取得したTokenを設定していきます。
設定できる項目はこちらです。

image.png

分析開始

しばらくすると、データが取得し始めます。取得するタイミングは loginデータは 3600秒。 messagesデータは 600秒の interval になります。(変更可能)

アプリで、Fieldsなども定義されているので、取り込んだらすぐに分析できます。
image.png

試しにこんなダッシュボードを作ってみました。
image.png

問題発生

messageデータは取得できたのですが、login データがちっとも取得できませんでした。
アプリが実行している、splunk_logins.py のログを、Splunkの _internal indexからみていると、以下のようなメッセージが。

image.png

paid_only??
調べてみると、無償版の slackでは利用できない APIのようです。
ということで、セキュリティ強化のためアクセス分析やアラートをあげたい場合には、Slackの有償版をご利用ください。。

最後に

最近、APIの利用に色々と制限がかかってきているので、既存のドキュメントでは書いてないことなど多くありました。少しでも構築時のヘルプになれれば幸いです。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away