【SPLK-1003】Splunk Enterprise Certified Admin資格を取得するための勉強メモ

こんばんは。torippy1024です。
今回は、SPLK-1003(Splunk Enterprise Certified Admin試験)の勉強メモを書きます。
必要な人には必要な記事と思います。

## SPLK-1003(Splunk Enterprise Certified Admin)とは

### 公式サイト
試験概要は以下の公式サイトを参照しましょう。英語サイトも参照したほうが吉です。

【重要事項】試験言語は英語のみです。(2024年3月時点)IT業界にいるなら英語くらいできろってことですかそうですか。


概要：
https://www.splunk.com/ja_jp/training/certification-track/splunk-enterprise-certified-admin.html

トラックフローチャート：
https://www.splunk.com/en_us/pdfs/training/splunk-enterprise-certified-admin-track.pdf

blueprint：
https://www.splunk.com/en_us/pdfs/training/splunk-test-blueprint-enterprise-admin.pdf

### 前提条件
Splunk Core Certified User、Splunk Core Certified Power Userは前提条件なしで受験できましたが、
Enterprise Certified Adminからは前提としてSplunk Core Certified Power User資格が必要となります。
先にSPLK-1002を受験しPower User資格を取得しましょう。SPLK-1001は不要です。
https://www.splunk.com/ja_jp/training/certification-track/splunk-core-certified-power-user.html

### 出題分野と割合
出題範囲と割合は上記のblueprintに記載されています。以下の通りです。
- 1.0  Splunk Admin Basics 5%
- 2.0  License Management 5%
- 3.0  Splunk Configuration Files 5%
- 4.0  Splunk Indexes 10%
- 5.0  Splunk User Management 5% 
- 6.0  Splunk Authentication Management 5%
- 7.0  Getting Data In 5%
- 8.0  Distributed Search 10%
- 9.0  Getting Data In – Staging 5%
- 10.0  Configuring Forwarders 5%
- 11.0  Forwarder Management 10%
- 12.0  Monitor Inputs 5%
- 13.0  Network and Scripted Inputs 5%
- 14.0  Agentless Inputs 5%
- 15.0  Fine Tuning Inputs 5%
- 16.0  Parsing Phase and Data 5%
- 17.0  Manipulating Raw Data 5%

Power Userと比較してもさらに学ぶスコープが増えています。
Splunk Enterpriseはオンプレ製品なので、Splunk Platformを構成するコンポーネントの役割や、データ処理の仕組み等がスコープに含まれます。
これを取得できれば控えめに言っても、「Splunk完全に理解した」と言えることは間違いありません。(プログラミングジョーク的な意味で)

### 推奨研修
STEP(Splunk Training and Enablement Platform)から受講可能な研修は以下の2つです。
どちらのコースも有償です。開催日程が限定されていますが日本版もあります！！
受験必須ではないので、資格取得するだけなら無視できますが、出題範囲を網羅している重要な研修なので受講することをお勧めします。

#### Splunk Enterprise Certified Admin Learning Path
- Splunk System Administration
大雑把には、出題分野の1.0  Splunk Admin Basics～8.0  Distributed Searchまでが本研修のスコープと思います。
システム管理について学びます。
具体的には、Splunk Platformを構成するコンポーネントの役割や構成、ライセンス管理、構成ファイル、インデックス、ユーザー管理、認証の仕組み、Forwarder等を利用したデータの取り込み、分散サーチなどを学びます。(出題分野そのまんまですね)

- Splunk Data Administration
大雑把には、出題分野の9.0  Getting Data In – Staging～17.0  Manipulating Raw Dataまでが本研修のスコープと思います。
データ管理について学びます。
具体的には、Splunkのインデックス化プロセス、Forwarderの構成や管理、Monitor Input、Network Input、Agentless Input、Fine tuning Input、処理フェーズにおけるデータの処理、生データの前処理などを学びます。(英語が苦手な私としては、翻訳しているだけでちょっとわかりやすくなった気がしました)

https://www.splunk.com/en_us/training/course-catalog.html?filters=filterGroup1FreeCourses%2CfilterGroup2SplunkEnterpriseCertifiedAdmin

## その他参考になる資料
その他の公式サイトのドキュメントです。(基本は英語です。一部日本語訳されたドキュメントもあります)

英語が苦なく読める方は最初から英語でやった方が用語を二重に覚える必要がないので楽です。
日本語訳されたドキュメントから入る方がいい方は、最初は管理マニュアル(https://docs.splunk.com/images/d/db/Splunk-9.1.0-Admin_ja-JP.pdf )を読むのが良いと思います。

### 公式ドキュメント
https://docs.splunk.com/Documentation/Splunk

### 日本語訳されたドキュメントの一覧
https://docs.splunk.com/Documentation/Splunk/9.1.2/Translated/Japanesemanuals

## 各分野の概要
### 1.0  Splunk Admin Basics
Splunkの基本コンポーネントのおさらいです。
Search Head、Indexer、Forwarder以外に、Deployer、Cluster Manager、Deployment Server、License Manager、Monitoring Consoleなどがあります。それぞれ概要を説明できれば良いです。
(最初のうちはDeployerとDeployment Serverの役割がごっちゃになります。DeployerがSearch Head、Deployment ServerがForwarderを担当するとざっくり理解しておけばよいと思います)

### 2.0  License Management
Splunkのライセンス種別や料金体系について学びます。
Splunk Enterpriseでは、ライセンス種別は以下4つを理解しておけばよいです。
また、ライセンス違反(license violations)はどういった条件で発生するのか、ライセンス違反が発生するとどうなるのか、は覚えておきましょう。

#### Enterpriseライセンス
最も基本のライセンスです。これから更に、一日あたりのインデックス作成量(データ量)に基づくIngest Pricingと、CPU負荷に基づくWorkload Pricingの二種類に分かれます。
試験対策の観点では、ライセンスで定めたデータ量を超過した場合はどんな機能制限が発生するのかなどの問題が出ます。(ライセンス違反が発生すると、index化は継続できるがサーチはできなくなる、等)

#### Enterprise Trialライセンス
トライアルライセンスです。60日間有効で、一日当たりのインデックス作成量が500MBに設定されている以外はEnterpriseと同等の機能が利用可能です。
試験対策の観点では、60日を超えた後はライセンスはどうなるのか(Freeライセンスとして使用可能になる)、などの問題がでます。

#### Freeライセンス
無償ライセンスです。この状態でも使い続けることが可能です。ただしクラスター構成や分散サーチができないなど機能制限が発生します。

#### Forwarderライセンス
これはSplunk Enterprise本体というより、Heavy Forwarderを利用する場合に必要なライセンスです。
Universal Forwarderを利用する場合は不要ですが、取得したログに対するパーシング(前処理)を実施したい時などにHeavy Forwarderを使いたいときはこのライセンスが必要になります。

参考：
https://docs.splunk.com/Documentation/Splunk/latest/Admin/TypesofSplunklicenses

### 3.0  Splunk Configuration Files
Splunkの設定ファイル(拡張子confファイル)や、ディレクトリ構造、複数の設定ファイルの適用優先順位について学びます。
props.conf/inputs.conf/outputs.confなどの設定ファイルについて、どのロールのサーバーにはどの設定ファイルが重要かなどは抑えておいた方が良いです。
etc/system/localディレクトリに配置されている設定ファイルと、etc/apps/App1/localディレクトリに配置されている設定ファイル、どちらの設定が優先されるかなども学びます。
また、ディスク上のコンフィグファイルの中身を参照するbtoolコマンドと、メモリ上の設定を参照するshow configコマンドの違いも抑えておいた方が良いです。
(btoolコマンドはディスク上のコンフィグファイルの中身を書き換えるため、再起動しなければ実機上の設定には反映されない)

参考：
https://docs.splunk.com/Documentation/Splunk/latest/Admin/Aboutconfigurationfiles

### 4.0  Splunk Indexes
Splunkの重要コンポーネントであるIndexについて学びます。
Indexの内部にあるBucketとは何か、どのような種類があるか(Hot/Warm/Cold)、バックアップや削除、凍結(thawed)などについても学びます。

参考：
https://docs.splunk.com/Documentation/Splunk/latest/Indexer/HowSplunkstoresindexes

### 5.0  Splunk User Management
Splunkにおけるユーザーとロールの考え方について学びます。
Splunkにおけるロールの基本的な考えはRBACです。admin/power/userロールの他、can_deleteとsc_adminさえ覚えておけば大体OKと思います。

indexとして取り込んだデータを論理削除するためのdeleteを実行できる権限がcan_deleteで(デフォルトだとadminですらdelete実行権限は持っていません)、Splunk Cloud用のadministrator権限がsc_adminです。(sc_adminはそもそもSplunk Cloud用なのでEnterpriseは関係ないですが)

参考：
https://docs.splunk.com/Documentation/Splunk/latest/Admin/Aboutusersandroles

### 6.0  Splunk Authentication Management
LDAPとの連携(英語の用語をそのまま使うと統合(Integration))、認証(Ahthentication)、二要素認証(2FA)などの仕組みを学びます。
試験対策として、Splunkがサポートしている認証方式にはどのようなものがあるのか(Splunk標準のID/パスワードを使った認証方式であるネイティブ認証、LDAP, SMAL, RADIUS, その他がある)、またLDAP連携する場合、どのような手順を踏む必要があるかなどを覚えておくとよいです。

参考：
https://docs.splunk.com/Documentation/Splunk/latest/Security/Setupbuilt-inauthentication

### 7.0  Getting Data In
Universal　ForwarderおよびHeavy Forwarderからのデータインプットや設定について学びます。
Universal　ForwarderおよびHeavy Forwarderの違い、および中継フォワーダーを使うシーンや仕組みなども学びます。
詳細なデータ処理の流れは9.0  Getting Data In – Stagingにて学ぶことになります。

参考：https://docs.splunk.com/Documentation/Forwarder/latest/Forwarder/Configuretheuniversalforwarder

### 8.0  Distributed Search
分散サーチについて学びます。
分散サーチとは、その名の通りサーチの実行を複数のindexerに分散処理させることです。
サーチのためのSPLクエリを実行するのはSearch Headですが、SPLクエリを受け取り、インデックスを検索し、結果を返すのはIndexerの役割です。
分散サーチを実行した際の処理の流れを理解すれば良いです。公式ドキュメントとしては以下の章です。
https://docs.splunk.com/Documentation/Splunk/latest/DistSearch/Whatisdistributedsearch

余談ですが、英語のドキュメントでよく出てくるsearch peersとは、Search Headのことを指すのではなく、Indexer(Indexing Tier)のことを指します。(https://docs.splunk.com/Splexicon:Searchpeer)
Search TierというのはSearch Headのことを指すのでわかりにくい用語です。

### 9.0  Getting Data In – Staging
章名と内容がちょっと一致しているか疑問があるのですが、blueprint上を読むと、ここでSplunkのインデックス化プロセス(Input Phase/Parsing Phase/Indexing Phase)について学び、インプット方法にはどのような種類があるか(Monitor Inputs/Network Inputs/Scripted Inputs/Agentless Inputs等)を学ぶようです。重要な章です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684500/10673c0d-191e-3215-3121-28436779269f.png)

画像引用元：https://docs.splunk.com/File:Datapipeline1_60.png

Splunk Docの中では以下の章を読み込んでおけば良いと思います。
How data moves through Splunk deployments: The data pipeline
https://docs.splunk.com/Documentation/Splunk/latest/Deploy/Datapipeline
https://docs.splunk.com/Documentation/Splunk/latest/Admin/Configurationparametersandthedatapipeline

### 10.0  Configuring Forwarders
Forwarderの設定について学びます。CLI/configファイルを通した設定方法です。

参考：
https://docs.splunk.com/Documentation/Forwarder/latest/Forwarder/Configuretheuniversalforwarder

### 11.0  Forwarder Management
Deployment Serverを使ったForwarderの管理について学びます。
Deployment Serverは、Forwarderを管理するためのサーバーです。
Forwarderはログの取得対象機器全てに対して導入するため、対象機器が多いと管理が大変になります。設定やAppを配布する作業も大変です。
この問題を解決するのがDeployment Serverであり、Forwarderのdeploymentclient.confに設定を入れることで、Deployment Serverからの指示を受け入れることができるようになります。 

参考：
https://docs.splunk.com/Documentation/Splunk/latest/Updating/Configuredeploymentclients

### 12.0  Monitor Inputs
モニターインプットについて学びます。
モニターインプットは、ファイルやディレクトリを指定してそこに出力されたログを読み取ってSplunkに転送する、最も基本的で重要なデータインプットの方法です。
(これ以外にWeb画面からアップロードしてデータをsplunkに入れる方法も含まれます)

参考：
https://docs.splunk.com/Documentation/SplunkCloud/latest/Data/Monitorfilesanddirectories

### 13.0  Network and Scripted Inputs
ネットワークインプットとスクリプトインプットについて学びます。
Splunkでは、TCP/UDPポートからデータをインプットしたり、スクリプトを実行してその結果をインプットとすることもできます。

参考：
https://docs.splunk.com/Documentation/SplunkCloud/latest/Data/Monitornetworkports

### 14.0  Agentless Inputs
エージェントレスインプットについて学びます。
具体的には、WMI(Windows Management Instrumentation)によるインプットと、HTTP Event Collectorによるインプットです。

参考：
https://docs.splunk.com/Documentation/Splunk/latest/Data/MonitorWMIdata
https://docs.splunk.com/Documentation/Splunk/latest/Data/ShareHECData

### 15.0  Fine Tuning Inputs
インプットのチューニングについて学びます。
Input Phaseで何が行われているのか、またSplunkのパフォーマンスを上げるためにはどのようなチューニングをするのがベストプラクティスかを学びます。

参考：
https://docs.splunk.com/Splexicon:Input
https://docs.splunk.com/Documentation/Splunk/latest/Indexer/Howindexingworks

### 16.0  Parsing Phase and Data
Splunkのインデックス化プロセスの中のParsing/Indexing Phaseについて学びます。
Parsing/Indexing Phaseでは、Forwarderから送信されてきた生データを一つ一つのイベントに改行して分割し、フィールドを抽出したり、メタデータを付与したりします。機密データのマスキングなどもここで実施します。

参考：
https://docs.splunk.com/Splexicon:Parsing
https://docs.splunk.com/Documentation/Splunk/latest/Data/Overviewofeventprocessing

### 17.0  Manipulating Raw Data
Index化する前のデータの操作について学びます。
取り込みアクション(Ingest Action)、props.confおよびtransforms.confを用いた変換(機密データのマスキング)、SEDCMDを用いた変更などがあります。

参考：
https://docs.splunk.com/Documentation/Splunk/latest/Data/DataIngest
https://docs.splunk.com/Documentation/Splunk/latest/Data/Anonymizedata


## 終わりに
Enterprise Adminを取得すれば、Splunkがどのような構成で、どのように動作しているのかがわかるようになります。
Splunkをオンプレで運用するためには必須の資格ではないかと思います。(構築あるいはクラスター環境の場合、更に上のArchitect資格が必要)
また資格名はEnterpriseとなっていますが、Cloud版でも必要な知識をかなりカバーしているように思います。Splunk Cloudを利用する場合でもとりあえずEnterprise Adminまでは取得してもよいとは思いました。(しかし勉強しすぎるとEnterpriseとCloudの仕様がごっちゃになってしまうため悩ましい)

いつも通りですが、上記事でどこか間違っていたら教えてください。