Splunk: 取り込みデータ加工/マスキング処理(Ingest Actions)


# はじめに
Splunkへデータを取り込む際、様々なデータ加工を実現することが可能です。
その1つとしてマスキング処理がありますが、2022/6にリリースされたSplunk Enterprise v9.0では、新たに機能追加されたIngest Actions機能を利用した設定が可能となりました。
https://docs.splunk.com/Documentation/Splunk/9.0.0/ReleaseNotes/MeetSplunk#What.27s_New_in_9.0

:::note info
マスキング処理自体は以前のバージョンにおいても実現可能です。
:::

本稿では、Ingest Actions機能を利用したマスキング処理設定についてご紹介します。
また、設定比較として、以前のバージョンにおける設定例についてもご紹介します。

# 前提
* Splunk Enterpriseバージョン
  * v9.0.0, v8.2.2
* Splunk構成
  * Standalone構成
* 使用するサンプルログ
  * [Splunk Tutorial Data](https://docs.splunk.com/Documentation/Splunk/9.0.0/SearchTutorial/Aboutthetutorialdata)   

# データ取り込み時のマスキング処理設定 
## Ingest Action機能によるマスキング処理設定(Splunk Enterprise v9.0)
Ingest Action機能を利用したマスキング処理の設定方法を記載します。
設定例として、ログに含まれるAcctID値を、下4桁を除いてマスキング(xに置換)するという処理を実現します。
> [04/Jul/2022:18:24:02] VendorID=5036 Code=B AcctID=1534236453231575
### 設定例
① Splunk Web：設定 > データ：取り込みアクション(Ingest Actions) をクリック
<img width="600" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609667/0e5eba05-0168-4fb6-209e-24f7c3556801.png">

② RuleSetsタブを選択し、"New Ruleset"をクリック
<img width="600" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609667/9bc2424d-65aa-a1d1-6cd8-f334981460c1.png">

③ ルールセット編集画面にて、ルール名設定及びプレビュー対象とするイベントを選択
※以下例では"Sample File"を選択し、適用するソースタイプの選択とログファイルをアップロードします。
<img width="800" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609667/9ab05cda-8653-ee7d-a353-69894b858c8e.png">

④ ルールセット編集画面にて、規則の追加 > Mask with Regular Expressionを選択
<img width="250" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609667/8cd1e110-396b-ce16-604c-dfae9dd9b61a.png">

⑤ ルールセット編集画面にて、マスキング処理ルールを設定
　ルールを入力すると、画面右側のサンプルデータ上に処理結果が随時反映されます。
　・Match Regular Expression：(AcctID=)\d{12}(\d{4})
　・Replace Expression：\1xxxxxxxxxxxx\2
　　※Match Regular Expressionにおいて、(括弧)で括った範囲を左から順に\1, \2, …と指定することで参照します。
<img width="800" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609667/765e6784-09b5-dabc-1efa-10f0b461c43c.png">

⑥ ルールセットを保存します。
<img width="800" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609667/6465a167-8188-ba77-5c08-6d9338da3fc3.png">

⑦ 実際にファイルをSplunkへ取り込み、設定に従いデータがマスキングされていることを確認します。
<img width="700" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609667/c87e8f58-119d-ff19-6be4-fa97d29e33fe.png">

※補足
ルールセット編集画面において、画面右上の"Preview Config"をクリックすると、設定ファイルに追加される設定値を確認可能です。
<img width="800" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609667/784d2d18-5611-e5a5-1e10-37c8407db462.png">

### 参照
* [Use ingest actions to improve the data input process - Splunk Documentation](https://docs.splunk.com/Documentation/Splunk/9.0.0/Data/DataIngest)

## 比較：props.conf/transforms.confによる従来のマスキング処理設定
設定比較として、同様の処理をSplunk Enterprise v8.2で実現する場合の設定例を以下に記載します。
設定方法は、設定ファイルであるprops.conf及びtransforms.confに直接追記する形となります。
### 設定例
* props.conf ※関連設定のみ記載
  ```
  [vendor_sales]
  TRANSFORMS = acctid_mask
  ```

* transforms.conf
  ```
  [acctid_mask]
  REGEX = (.*AcctID=)¥d{12}(¥d{4}.*)
  DEST_KEY = _raw
  FORMAT = $1xxxxxxxxxxxx$2
  ```
### 参照
* [Anonymize data with a regular expression transform - Splunk Documentation](https://docs.splunk.com/Documentation/Splunk/8.2.2/Data/Anonymizedata#Anonymize_data_with_a_regular_expression_transform)