【Splunkラボ】中継Forwarderを使ってログの機密情報をマスキングする手順

こんにちは。torippy1024です。
本日は、中継Forwarderを使用してログ内部に含まれる機密情報(パスワードなど)をマスキングするための設定を実機で試してみます。

Splunk Cloudを使用する上では、機密情報はどうしてもマスキングしなければならないという要件が発生することも多いです。

Splunkでは、これはHeay Forwarderを中継Forwarderとして利用することで実現できます。

### 【1】構成図

構成は以下の通りです。
中継ForwarderとしてHeavy Forwarderを使用します。
Heavy Forwarderの中のprops.confという設定ファイル内に、SEDCMDというLinuxのsedコマンドに近い動きをさせる設定を追加することできます。
このSEDCMDを使って、ログ取得対象サーバー内に含まれるパスワードをマスキングするのが今回の手順の目的です。

![スクリーンショット 2025-06-06 1.49.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684500/158b04e6-01f3-4d6d-aba0-feb17e9c19a4.png)


### 【2】Splunk Cloudトライアル環境の申し込みと設定

他の記事でも解説しているので、説明は省略します。
以下の記事にある【3】Splunk Cloudトライアル環境の設定とまったく同じ作業を実施してください。
https://qiita.com/torippy1024/items/1c125ab08967c11f1889#3splunk-cloud%E3%83%88%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%AB%E7%92%B0%E5%A2%83%E3%81%AE%E8%A8%AD%E5%AE%9A
今回Add-onはインストール不要です。

### 【3】中継Forwarder(Heavy Forwarder)の初期設定
次に、中継Forwarder(Heavy Forwarder)を構築しますが、こちらも説明は省略します。
こちらの初期構築手順としては、以下の記事にあるDeployment Server初期設定とほぼ同じ手順になります。
https://qiita.com/torippy1024/items/fec7d22d7b6b593ea92a#5deployment-server%E3%81%AE%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A
上記のリンク先で実行している手順は、実質はSplunk Enterpriseを初期インストールする手順です。
Heavy Forwarderも実体はSplunk Enterpriseであるため、Heavy Forwarderの初期設定手順は、実はSplunk Enterpriseの初期設定手順と同じ手順が含まれす。

しかし二点、追加で作業しなければならないことがあります。

一点目は、Splunk Cloudからクレデンシャルをダウンロードしてインストールする作業です。こちらは、中継ForwarderがログをSplunk Cloudに転送するため必要となります。
この手順は、以下の記事の(3)Splunk Cloudから取得したクレデンシャルのインストールと同じ作業です
https://qiita.com/torippy1024/items/1c125ab08967c11f1889#3splunk-cloud%E3%81%8B%E3%82%89%E5%8F%96%E5%BE%97%E3%81%97%E3%81%9F%E3%82%AF%E3%83%AC%E3%83%87%E3%83%B3%E3%82%B7%E3%83%A3%E3%83%AB%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

二点目は、末端のForwarderからのログ転送を受け付けるためのリスニングポートの解放です。
これは以下のコマンドを実行することで完了します。
```
sudo /opt/splunk/bin/splunk enable listen 9997
sudo /opt/splunk/bin/splunk display listen
```

### 【4】Forwarderの初期設定
次に、末端のForwarderを構築しますが、こちらも説明は省略します。
以下の記事にある【6】ログ対象サーバーの設定(Ubuntu)と同じ作業です。
https://qiita.com/torippy1024/items/1c125ab08967c11f1889#6%E3%83%AD%E3%82%B0%E5%AF%BE%E8%B1%A1%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E8%A8%AD%E5%AE%9Aubuntu
こちらについても、今回はAdd-onはインストール不要です。

上記の記事の中で、Oneshotコマンドを使ったテストログイベント転送まで実施していますので、その作業も実施して、末端のForwarderからSplunk Cloudへログ転送できることまで確認してください。

### 【5】マスキング処理の設定

末端のForwarder(Universal Forwarder)と中継Forwarder(Heavy Forwarder)の初期設定が終わったら、いよいよマスキング処理の設定です。
具体的には、中継Forwarder上のsystem/local/props.confに対し、SEDスクリプトを使ってマスキングの設定をします。
(今回は検証なので全体影響があるsystem/local/配下のprops.confを編集していますが、実際の環境に適用する場合は、適切なAppフォルダ配下のprops.confを編集しましょう)

中継Forwarder(Heavy Forwarder)にログインして作業
```
ssh torippy1024@yy.yy.yy.yy
sudo cp -R /opt/splunk/etc/system/default/props.conf /opt/splunk/etc/system/local/props.conf
sudo cp -R /opt/splunk/etc/system/default/transforms.conf /opt/splunk/etc/system/local/transforms.conf
sudo vi /opt/splunk/etc/system/local/props.conf
(〜以下の通り編集〜)
```

props.confへの編集内容(今回はソースタイプを「test-masking」としています)
```
~(末尾に追記)~
[test-masking]
SEDCMD-mask_password = s/(Password:)\S+/Password:xxxxxxxx/
```

終わったら、設定を確認して再起動します。
```
sudo cat /opt/splunk/etc/apps/search/local/props.conf
sudo /opt/splunk/bin/splunk restart
```


### 【6】動作確認/参考情報
動作確認をしてみます。末端のForwarder上で、以下コマンドを実行してみます。

```
echo "2025/6/5 23:00:00 User:admin Password:abcd1234 Login Successful" > /tmp/test_masking.log
sudo /opt/splunkforwarder/bin/splunk add oneshot /tmp/test_masking.log -sourcetype test-masking -auth admin:password
```

サーチを実行し、Splunk上でログデータがマスキングされていることが確認できたら成功です。

![スクリーンショット 2025-06-06 1.12.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684500/5f7d817d-615c-4313-97c2-0b37adfa0740.png)


参考資料は以下です。
Anonymize data with a sed script
https://docs.splunk.com/Documentation/Splunk/latest/Data/Anonymizedata#Anonymize_data_with_a_sed_script
props.conf
https://docs.splunk.com/Documentation/Splunk/Latest/Admin/Propsconf

以上です。