趣旨
https://docs.splunk.com/Documentation/Splunk/latest/Data/Anonymizedata
に書いているとおり、個人情報が記録されているログはそのままの値をSplunkでも表示したく無い時がある。
その場合のやり方について
設定
props.conf
props.conf
[anony_json]
INDEXED_EXTRACTIONS = json
KV_MODE = none
TRANSFORMS-anony = anony, anony_raw
TRUNCATE = 0
TIME_PREFIX = timestamp\":\"
SHOULD_LINEMERGE = false
transforms.conf
[anony]
INGEST_EVAL = d:=md5(d)
WRITE_META = true
[anony_raw]
REGEX = (?m)(.*\"d\":\s*\"\d{4})\d+\"(.*)
FORMAT = $1XXXXXX"$2
DEST_KEY =_raw
解説
-
props.confについては大したことをやっていない。今回はJSONのログだったので
INDEXED_EXTRACTIONS
を指定した -
transforms.confは_props.conf_で抽出したフィールドを
INGEST_EVAL
で変更している。 -
:=
を使用しているのは、元の値を上書きするため -
[anony_raw]
は参照元の通り - 注意点としては
_raw
全体を範囲とする正規表現にしないといけない
まとめ
ログ自体の修正については、_raw
の変更はtransforms.conf
や props.conf
のSEDCMD
で修正できる。
フィールドの値の変更についてはINGEST_EVAL
が適当
ただログの量においてはINDEXERの負荷が大変そうなので、それはモニタリングコンソールの結果と相談してください