0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Splunk】SplunkのCIM(Common Information Model)とデータモデルについて理解する

0
Last updated at Posted at 2026-03-29

こんばんは。torippy1024です。
今日はSplunkのCIM(Common Information Model)とデータモデルについてまとめたことを書きます。
CIMは、Splunkを活用する上で非常に重要な概念であるにもかかわらず、あまり分かりやすくまとめられている資料はありません。

そこで、この記事では、「CIMが結局なんだかわからん!」となってしまた初学者向けに、公式ドキュメントからCIMに関する記事などをいろいろ引用した上で、個人的なCIMに関する理解をまとめることにします。

CIM(Common Information Model)に関する説明が記載された資料

では、公式ドキュメント上のCIMの定義を探してみます。
公式ドキュメント上で、CIMの定義やCIMによって解決できる課題などの情報が細かく書かれているのはlanternの以下と思われます。

Complying with the Splunk Common Information model
https://lantern.splunk.com/Splunk_Platform/Product_Tips/Data_Management/Complying_with_the_Splunk_Common_Information_model

The Splunk Common Information Model (CIM) serves as a key element for unifying data from disparate sources. It is a standardized model that defines a consistent structure and naming convention for data, making it possible to draw parallels across varied datasets within the Splunk platform.
(機械翻訳)Splunk共通情報モデル(CIM)は、様々なソースからのデータを統合するための重要な要素です。これは、データの一貫した構造と命名規則を定義する標準化されたモデルであり、Splunkプラットフォーム内の多様なデータセット間で類似性を見出すことを可能にします。

はっきり言ってこれだけだとよくわかりません。ただその下に、Benefits of the CIM(CIMのメリット), Challenges faced without the CIM(CIMなしで直面する課題)という段落があり、そちらをよく読むとCIMが解決しようとしている課題と解決策がなんとなくわかるようになります。

CIMによって解決される一番の課題は以下と思われます。

1.Inconsistent Data Fields:
Problem: Different systems or data sources might represent similar information with varied terminologies. For instance, while one system might refer to a user's IP address as user_ip, another might simply call it IP. Such inconsistencies can make data indexing and searching cumbersome.
Impact: Analysts spend unnecessary time figuring out the correct fields or writing complex queries to ensure no data is missed. This can slow down analysis and, in worst cases, even lead to missing critical information.
(機械翻訳)1.データフィールドの不整合:
問題点:異なるシステムやデータソースでは、類似した情報でも異なる用語が用いられる場合があります。例えば、あるシステムではユーザーのIPアドレスをuser_ipと表記するのに対し、別のシステムでは単にIPと表記する場合があります。このような不整合は、データのインデックス作成や検索を煩雑にする原因となります。
影響:アナリストは、データの漏れがないように正しいフィールドを特定したり、複雑なクエリを作成したりするのに不必要な時間を費やすことになります。これは分析速度を低下させ、最悪の場合、重要な情報の見落としにつながる可能性もあります。

要するに、同じユーザーのIPアドレスを示すフィールドなのに、ある製品Aのログではuser_ip、製品BのログではIPというフィールドを使われていると、サーチのときに両方を指定しないと横断的なサーチができなくて不便、と言うことを言っているわけですね。

これを解決するのがCIMです。
具体的には、user_ipとIPを、CIM上のsrc_ipというフィールドにマッピングさせることにより、サーチが以下のようになります。

CIM導入前

user_ip=192.168.10.10 OR IP=192.168.10.10

CIM導入後

| datamodel Network_Traffic All_Traffic search
| search All_Traffic.src_ip=192.168.10.10

上記は、Network_Trafficデータモデルを構成するAll_Trafficデータセットの中に含まれるsrc_ipフィールドに対し、user_ipやIPといったフィールドをマッピングさせることでサーチ文を標準化した例です。
(標準化できたのはいいがその代わりにサーチが複雑になってしまったんじゃない?というツッコミはさておき)

Fields for Network Traffic event datasets
https://help.splunk.com/en/data-management/common-information-model/6.4/data-models/network-traffic#ariaid-title4

残念ながらというか、Splunk公式サイトよりも、Splunkパートナー企業が書いているブログの方がCIMの概念や考え方を分かりやすく説明しているように思います。
以下の記事なども参考にしてください。

また、CIMは、実体としてはSplunk Add-onとしてインストールして利用します。以下よりダウンロードが可能です。
Splunk Common Information Model (CIM)
https://splunkbase.splunk.com/app/1621

CIMの実体であるデータモデルとは何か

さて、先ほどちらっとデータモデルという用語を出してしまいました。
CIMの実体はデータモデルです。

では、データモデルとは何だったっけ?という疑問が次に浮かぶと思います。こちらもわかりにくい点ですので調べていきます。

What is a data model?
https://help.splunk.com/en/splunk-enterprise/manage-knowledge-objects/knowledge-management-manual/10.2/build-a-data-model/about-data-models#ariaid-title2

A data model is a hierarchically structured search-time mapping of semantic knowledge about one or more datasets. It encodes the domain knowledge necessary to build a variety of specialized searches of those datasets.
(機械翻訳)データモデルとは、1つまたは複数のデータセットに関する意味的知識を階層的に構造化した検索時マッピングです。これは、それらのデータセットに対する様々な特殊な検索を構築するために必要なドメイン知識を符号化します。

data model dataset
https://docs.splunk.com/Splexicon:Datamodeldataset

The building block of a data model. Each data model is composed of one or more data model datasets. Each dataset within a data model defines a subset of the dataset represented by the data model as a whole.
Data model datasets have a hierarchical relationship with each other, meaning they have parent-child relationships. Data models can contain multiple dataset hierarchies. There are three types of dataset hierarchies: event, search, and transaction.
(機械翻訳)データモデルの構成要素。各データモデルは、1つ以上のデータモデルデータセットで構成されます。データモデル内の各データセットは、データモデル全体に​​よって表されるデータセットのサブセットを定義します。
データモデルのデータセットは階層構造を持ち、親子関係を形成します。データモデルには複数のデータセット階層を含めることができます。データセット階層には、イベント、サーチ、トランザクションの3種類があります。

これまた非常にわかりづらいです。とりあえず、データモデルはカテゴリー毎に定義されており、データセットと呼ばれる階層構造を持つことはわかります。

実際にSplunkの画面からデータモデルやデータセットの定義を参照してみましょう。こちらは、インストールしたCIMに含まれるNetwork Trafficデータモデルの画面です。この画面をよく見ていくと、データセットの実体は、サーチから構成される制約(Constraints)と、制約によって得られたイベント結果から、そのデータセットに含まれるフィールドの二つである と言うことがわかると思います。

Network Trafficデータモデル内のAll Trafficデータセットの定義:
スクリーンショット 2026-03-29 1.42.49.png

上記によると、(`cim_Network_Traffic_indexes`) tag=network tag=communicateが制約で、その下にある「抽出済み」および「計算済み」配下のフィールドがこのデータセットに含まれるフィールドということになります。

`cim_Network_Traffic_indexes`は、マクロであるためにバックティックで囲まれていることにも注意してください。なんでマクロ?と不思議に思う人もいるかもしれませんが、このマクロは、実際のマクロ定義を確かめてみるとわかるのですが単にインデックスを指定するために使っています。指定するインデックスをマクロを使って定義することにより、インデックスを限定したい場合でもこの制約を変更するのではなく、マクロを変更するだけで済むということがメリットのようです。

また、tag=network tag=communicateのタグ指定は、CIMが、Network Trafficデータモデルにはこれらのタグを使う、と定義しているために制約として実装されているようです。
https://help.splunk.com/en/data-management/common-information-model/6.4/data-models/network-traffic#ariaid-title3

参考:
How to use the CIM data model reference tables
https://help.splunk.com/en/data-management/common-information-model/6.4/data-models/how-to-use-the-cim-data-model-reference-tables

初見の初学者だとなかなかすぐに理解できない点もあるかと思いますが、ものすごくざっくりと説明すると、データモデルとは制約として定義したサーチを実行し、それらの結果から指定したフィールドを抽出/計算してデータ構造体(モデル)にマッピングしておく機能と理解しておけば良いと思います。

このようにしてマッピングされたフィールドを含む複数のデータモデルを、Splunk自身が共通化・標準化し、まとめたものがCIMである、というのが私個人の解釈です。
(そして、データモデルの制約で幅広いインデックスを対象にしてしまうと、せっかくフィールドを共通化しても、代償としてサーチが遅くなってしまうというデメリットが発生してしまいます。これを防ぐためにSplunkの研修ではデータモデルアクセラレーションという機能が合わせて紹介されることもあるのですが、これが初学者を余計に混乱させる理由だとも思っています・・・・・・)

まとめ

まとめです。なんとなく理解した気になるだけだったら以下でよいかと思います。

  • CIMは、異なる製品/サービスのログに含まれるフィールドを共通化するための機能。CIMの実体はデータモデル。(Splunk Add-onとして配布される)
  • データモデルは、Splunkがデータをカテゴリー毎に集約・整理して扱うための機能。データモデルの実体は制約(対象を絞っているサーチ)とその中に含まれるフィールド。

なんとなくではなく、しっかり理解したい方は、実際に実機を触り、データモデルを使ったサーチの実行や、データモデルに対するフィールドマッピングまで試すと理解が深まると思います。(おそらくだいたいの人はここで心が折れる)

加えて、CIMの実装や使い方を詳しく勉強していくと、マクロ、ルックアップ、データモデルアクセラレーション、tstatsコマンドなどといったSplunkの総合的な知識が必要になってきます。CIMをしっかりと理解することができたなら、Splunk初学者からは卒業と言っていいと思います。

個人的な見解

最後に、これは本当に個人的な見解なのですが、なんとなく、CIMは、SplunkがPremium App(特にEnterprise Security)を提供する上で、収集したデータを標準的な形で扱う必要があったために開発したものに感じています。(CIMで定義されているデータモデルを見ても、ややセキュリティ寄りのカテゴリーのものが多いように感じます)
このため、Enterprise Securityをしっかりと使っており、ESのセキュリティフレームワークなどに沿った形でアラートを検知したい場合は、CIMの仕組みを理解し、実装できる必要があるように思います。(逆に言えば、そうではない場合だと、フィールド名が製品によって異なっていても、両方のフィールドをSPLで指定してしまったほうが手間がかからないと感じるシーンもあるかもしれません)

参考資料

Splunk Common Information Model (CIM) (splunkbase上からダウンロードできるCIMの実体)
https://splunkbase.splunk.com/app/1621

About data models
https://help.splunk.com/en/splunk-enterprise/manage-knowledge-objects/knowledge-management-manual/10.2/build-a-data-model/about-data-models

Overview of the Splunk Common Information Model
https://help.splunk.com/en/data-management/common-information-model/6.4/introduction/overview-of-the-splunk-common-information-model

CIM fields per associated data model(※CIMによってマッピングされるフィールドの一覧が記載されています。非常に重要なページだと思います)
https://help.splunk.com/en/data-management/common-information-model/6.4/data-models/cim-fields-per-associated-data-model

CIMで広げるSplunk Cloudのログ活用|共通フィールド設計の基本(Youtube動画)
https://youtu.be/MvXYKv7feqk

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?