こんばんは。torippy2024です。
本日は、splunkのユーザーとロールについて学びます。
そこまで一般的な製品の概念と異なることはないのですが、どのような機能があって、どのような機能がないと、設計時に困る場合があると思います。
特に、ロールに付与するアクセス権限はインデックス単位となることに注意しておかないと、利用を開始してからアクセス権を思った通りにできない、といった事態に陥る可能性もあるので、注意が必要かもしれません。
Splunkにおけるユーザーとロールとは
Splunkにおいて、ユーザーとロールの概念は以下のようになります。
ユーザーが、ログインをするためのアカウントとなります。
ロールは、そのユーザーに対してSplunkの機能へのアクセス権を定めるものとなります。
一つのユーザーは、複数のロールを持つことができます。ロールに付与されるアクセス権はallow list方式となります。(ロールによるアクセス許可は、必要な権限を許可していくように設定され、特定の権限を拒否するような設定はできません)
少し専門的な表現をすると、ユーザーは認証(Authentication)を実現するための機能を持ち、ロールは認可(Authorization)を実現するための機能を備えている、ということになります。
ユーザーが持つ属性
Splunkを利用する上では、利用者はユーザーアカウントを使ってログインを行います。
しかしながら、実はユーザー自身が持っている属性はあまり多くありません。
名前(name)、パスワード(password)、ロールの割り当て(Assign roles)が最も重要な属性です。
上記において、タイムゾーン(Time zone)も重要な属性になるのですが、タイムゾーンはユーザーがログイン後自分自身で変更できるため、設計時点で考慮しなければならない事項ではないと思われます。
ロールとは
ロールは、ユーザーに対するアクセス権を決定するものです。このアクセス権に関する属性は以下の
5つがあります。(資格試験でも出題されることがあるので覚えておいても良いかもしれません)
- 1.継承(Inheritance)
- 2.権限(Capabilities)
- 3.インデックス(Indexes)
- 4.制限(Restrictions)
- 5.リソース(Resources)
最初に設計すべき属性は1-3です。4,5は必要な時に設定する属性で、初期設計時は必要な要件がないのであれば何も設定せずに良いと思います。
重要な属性が2.権限(Capabilities)と3.インデックス(Indexes)です。
2.権限(Capabilities)を効率的に設定するために1.継承(Inheritance)を使います。
2.権限(Capabilities)は、Splunkで使用可能な機能を定める属性です。以下に項目の一覧が記載されています。ただ項目が非常に多く、ゼロから設計するのは非常に大変なので、このために1.継承(Inheritance)を使って、既存のロール(powerやuserなど)を使ってベースラインとなる権限を継承した上で、必要な機能を付与するように設計するのがよいと思います。
Define roles on the Splunk platform with capabilities
https://docs.splunk.com/Documentation/Splunk/latest/Security/Rolesandcapabilities
3.インデックス(Indexes)は、インデックスに対するアクセス権を定める属性です。
新しくインデックスを作成しただけだと、他のロールがそのインデックスに対してアクセス権を持たない可能性があり、ここで忘れずに必要なロールに対するアクセス権を設定する必要があります。
また、ユーザー/ロールを設計する段階の知識があれば言うまでもないことかもしれませんが、Splunkにおいて、データをアクセスする権限を分割したい場合は、インデックスを分けた上で、そのインデックスにアクセスできるロールを別に作成する必要があります。
同じインデックスに格納されているデータは同じロールで参照できてしまうことには注意が必要です。
公式ドキュメント
Splunkの公式ドキュメントのリンクは以下です。
Manage Splunk platform users and roles
https://docs.splunk.com/Documentation/Splunk/latest/Security/UseaccesscontroltosecureSplunkdata