4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

splunkに作ったナレッジオブジェクトの権限をrestコマンドでまとめて確認する

Last updated at Posted at 2018-11-27

はじめに

splunkで作ったナレッジオブジェクトの権限をwebブラウザで一個ずつ確認するのが煩雑だなあと考えていた結果、restコマンドで一覧形式で確認することができるサーチコマンドを作ったので情報共有いたします。

ナレッジオブジェクトってなに

Splunk社公式ドキュメント(日本語版)によるとナレッジについて以下のように記述されています。

Splunk ソフトウェアはお客様の IT データ (イベント、フィールド、タイムスタンプなど) からさまざまな知識(ナレッジ) を抽出して、より理解、把握しやすく、有益な情報を導き出せるようにします。このような情報の⼀部は、Splunk ソフトウェアが IT データのインデックスを作成する時 (インデックス時) に抽出されます。しかし、この情報の⼤半は「サーチ時」に Splunk ソフトウェアとユーザーの両⽅により作成されます。あらかじめ抽出する情報を決めるまたは分析しておく、データベースまたはスキーマベースの分析ツールと違い、Splunk ソフトウェアでは raw データから必要に応じて動的にナレッジを抽出することができます。
Splunk ソフトウェアを使⽤すると、イベントタイプ、タグ、ルックアップ、フィールド抽出、ワークフローアクション、保存済みサーチなどの、さまざまな Splunk ソフトウェアナレッジオブジェクトが作成されていきます。

長くてちょっと何言ってるかわからないですね。
要は、サーチ時のフィールド抽出や、保存したサーチ、ダッシュボード、ルックアップなど「サーチ結果の分析を手助けするための各種設定≒ナレッジオブジェクト」と考えていただければと思います。
このナレッジオブジェクトはAppに予め設定されていたり、ユーザ自身の手で作ったりできます。

restコマンドってなに

splunkが提供しているrestエンドポイントを読み取るサーチコマンドです。
これだけだとまたちょっと何言ってるかわかんないですが、
今回はsplunkの各種設定を通常のサーチと同じような方法でサーチできるコマンドと考えてもらえればよいです。

ですので実行時は通常のサーチと同じようにサーチバーで以下のように入力します。

restコマンドの文法
| rest <エンドポイントURL>

最低限エンドポイントだけ指定すれば実行できますが、オプションを指定することもできます。オプションについては公式ドキュメントを参考にしてみてください。

restコマンドを実行するための前提条件

  • restコマンドを実行するにはユーザに権限(rest_properties_get)が必要です。
    ※splunkデフォルトのロール(user,power,admin)にはこの権限が付与されています。

  • 分散環境でサーチピアにrestコマンドを実行したい場合は権限dispatch_rest_to_indexersが必要です。
    ※splunkデフォルトではadminロールにのみ権限が付与されています。

restコマンドを使ったサーチ文例

ここで、例としてrestコマンドで"search"Appのルックアップテーブルファイルの権限を確認するサーチ文についてご紹介します。

restコマンドの例・・・searchアプリのルックアップテーブルファイルの権限を確認するサーチ文
| rest /servicesNS/-/-/data/lookup-table-files
| search eai:acl.app=search 
| table eai:acl.app,title,author,eai:acl.owner,eai:acl.sharing,eai:acl.perms.read,eai:acl.perms.write,eai*

※コマンドの仕様上、必ずサーチの先頭に入力します。また行頭の|は必須です。

restコマンド実行結果の主な表示項目について

restコマンドを実行すると、色んなフィールドを含んだ結果が返ってきます。
ここでは、権限を確認するために必要な項目についてご紹介します。
公式ドキュメントに説明が見当たらなかったので、ID名,サーチ結果,splunkwebの内容から作っています。
(訂正)ここに書いてありました。

フィールドID 説明
eai:acl.app ナレッジオブジェクトを持つApp
title ナレッジオブジェクト名
author 作成者
eai:acl.owner 所有者
eai:acl.sharing 共有範囲※app,global,user
eai:acl.perms.read 読み取り可能ユーザ※
eai:acl.perms.write 書き込み可能ユーザ※
eai:acl.can_change_perms (ナレッジオブジェクトの)権限の編集が可能か
eai:acl.can_list リスト表示可能か
eai:acl.can_share_app App共有に設定可能か
eai:acl.can_share_global グローバル共有に設定可能か
eai:acl.can_share_user プライベート共有に設定可能か
eai:acl.can_write 書き込み可能か
eai:acl.modifable 変更可能か
eai:acl.removable 削除可能か

※eai:acl.sharingがuser(プライベート)の場合nullになるようです

サーチ文サンプル

ここでは、よく使うと思われるナレッジオブジェクトの権限をrestコマンドを使って確認するサーチ文についてご紹介していきます。

※サーチ文2行目の<AppName>にはナレッジオブジェクトが保存されているApp名を指定します。
この行を省略すると、restを実行したユーザが参照可能なすべてのAppの情報を表示します。

カスタムフィールド(props)

フィールドエイリアスのアクセス権限を確認する
| rest /servicesNS/-/-/data/props/fieldaliases
| search eai:acl.app=<AppName> 
| table eai:acl.app,title,author,eai:acl.owner,eai:acl.sharing,eai:acl.perms.read,eai:acl.perms.write,eai*
計算済みフィールドのアクセス権限を確認する
| rest /servicesNS/-/-/data/props/calcfields 
| search eai:acl.app=<AppName> 
| table eai:acl.app,title,author,eai:acl.owner,eai:acl.sharing,eai:acl.perms.read,eai:acl.perms.write,eai*
フィールド抽出のアクセス権限を確認する
| rest /servicesNS/-/-/data/props/extractions 
| search eai:acl.app=<AppName> 
| table eai:acl.app,title,author,eai:acl.owner,eai:acl.sharing,eai:acl.perms.read,eai:acl.perms.write,eai*

カスタムフィールド(transforms)

フィールド変換(transforms)のアクセス権限を確認する
| rest /servicesNS/-/-/data/transforms/extractions
| search eai:acl.app=<AppName> 
| table eai:acl.app,title,author,eai:acl.owner,eai:acl.sharing,eai:acl.perms.read,eai:acl.perms.write,eai*

ルックアップ

ルックアップテーブルファイルのアクセス権限を確認する
| rest /servicesNS/-/-/data/lookup-table-files
| search eai:acl.app=<AppName> 
| table eai:acl.app,title,author,eai:acl.owner,eai:acl.sharing,eai:acl.perms.read,eai:acl.perms.write,eai*
ルックアップテーブルのアクセス権限を確認する
| rest /servicesNS/-/-/data/transforms/lookups
| search eai:acl.app=<AppName> 
| table eai:acl.app,title,author,eai:acl.owner,eai:acl.sharing,eai:acl.perms.read,eai:acl.perms.write,eai*

ダッシュボード

ダッシュボードのアクセス権限を確認する
| rest /servicesNS/-/-/data/ui/views
| search eai:acl.app=<AppName> 
| table eai:acl.app,title,author,eai:acl.owner,eai:acl.sharing,eai:acl.perms.read,eai:acl.perms.write,eai*

アラート(保存済みサーチ)

保存済みサーチのアクセス権限を確認する
| rest /servicesNS/-/-/saved/searches 
| search eai:acl.app=<AppName> 
| table eai:acl.app,title,author,eai:acl.owner,eai:acl.sharing,eai:acl.perms.read,eai:acl.perms.write,eai*

アラートアクション

アラートアクション設定のアクセス権限を確認する
| rest /servicesNS/-/-/admin/alert_actions 
| search eai:acl.app=<AppName> 
| table eai:acl.app,title,author,eai:acl.owner,eai:acl.sharing,eai:acl.perms.read,eai:acl.perms.write,eai*

マクロ

マクロのアクセス権限を確認する
| rest /servicesNS/-/-/admin/macros 
| search eai:acl.app=<AppName> 
| table eai:acl.app,title,author,eai:acl.owner,eai:acl.sharing,eai:acl.perms.read,eai:acl.perms.write,eai*

上記の確認を一気に行う

ここまでご紹介したサーチを一気に行うサーチです。

ナレッジオブジェクト設定をまとめて確認
| makeresults 
| append 
    [| rest /servicesNS/-/-/data/props/fieldaliases 
    | eval type="field-aliases"] 
| append 
    [| rest /servicesNS/-/-/data/props/calcfields
    | eval type="field-calcfields"] 
| append 
    [| rest /servicesNS/-/-/data/props/extractions 
    | eval type="field-extractions-props"] 
| append 
    [| rest /servicesNS/-/-/data/transforms/extractions 
    | eval type="field-extractions-transforms"] 
| append 
    [| rest /servicesNS/-/-/data/lookup-table-files 
    | eval type="lookup-table-files"] 
| append 
    [| rest /servicesNS/-/-/data/transforms/lookups 
    | eval type="lookups"] 
| append 
    [| rest /servicesNS/-/-/data/ui/views 
    | eval type="dashboard"] 
| append 
    [| rest /servicesNS/-/-/saved/searches 
    | eval type="savedsearches" ] 
| append 
    [| rest /servicesNS/-/-/admin/alert_actions 
    | eval type="alert_actions"] 
| append 
    [| rest /servicesNS/-/-/admin/macros 
    | eval type="macros"] 
| search eai:acl.app=<AppName> 
| table type,eai:acl.app,title,author,eai:acl.owner,eai:acl.sharing,eai:acl.perms.read,eai:acl.perms.write

おまけ(ロールの設定を色々確認する)

restコマンドを使うと、splunk webの設定画面をみなくとも各種設定が確認できます。
ここでは、ナレッジオブジェクトではないロールのデフォルトAppや参照可能インデックスといった
設定を確認するサーチコマンドについてご紹介します。

ロールの設定を確認
| rest /services/authorization/roles
| table title,defaultApp,imported_roles,srchIndexesAllowed,imported_capabilities,eai:acl.owner,author,*

おわりに

今回はナレッジオブジェクトの中でも私が比較的よく使っているものを代表してご紹介しました。
他のナレッジオブジェクトの権限についてもendpointを変更することで取得できると思いますので
ご紹介したサーチコマンドを参考に色々試してみてください。

参考文献

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?