Ariel データベースからのデータの削除
ACP (Ariel Copy) ツールは、Ariel データベースを読み取り、基準を適用してから、フィルターに掛けられたデータを別の場所に再書き込みします。 このツールは、GDPR (汎用データ保護規則) 準拠に役立ちます。 例えば、指定されたユーザー名または送信元 IP アドレスでフラグが立てられたすべてのデータを削除したいとします。
使用法
データベース (イベント | フロー)、フィルタリングする必要のある開始時刻と終了時刻、適用するAQL 照会 (-q) またはキー作成者/値 (-k/-p) の組み合わせ、実行する必要のあるユーザー (-u)、および宛先ディレクトリー (-d) をツールに提供します。
ACP ツールは、指定された時刻に Ariel データベースを読み取り、フィルターを適用し、指定された宛先ディレクトリー内のフィルターに一致するすべてのレコードを配置します。
[root@m5arch06 templates]# /opt/qradar/bin/runjava.sh com.q1labs.ariel.io.ACP
data base name is required
Configured data bases:
flows
hc
simarc
events
simevent
usage: ACP -n events -d /store/new_ariel -b "2013/11/21 1:00:00" -e
"2013/11/21 4:00:00"
ACP -n events -d /store/new_ariel -b "2013/11/21 1:00:00" -e "2013/11/21
4:00:00" -q "username is not null and sourceip = '127.0.0.1'" -u admin
Options:
-n,--name data base name, for example -n events
-b,--begintime begin time, for example -t "2018/08/28 09:04",
optional, by default current system time
-e,--endtime end time, for example -t "2018/08/28 10:04",
optional, by default current system time
-d,--destination Destination directory i.e. /store/filtered_ariel/
-h,--help print this message
-k,--keycreator class for IKeyCreator
-p,--param optional parameter for IKeyCreator
-q,--query AQL 'where clause' to copy records
-u,--user username (default=admin)
-v,--testedvalue value to compare createKey with
[root@m5arch06 templates]#
Ariel ファイル構造体についてのプライマー
これ以上先に進む前に、Ariel データがディスク上のレイアウトのことを確認してください。 Ariel は、時系列ベースのデータベースです。 Ariel は、データが検索されるまでディスク上にあるデータを認識しません。 Ariel データは、何の影響も与えずにシステム間でコピーすることも、Ariel データベースに関する情報を知らなくてもコピーすることもできます。 Ariel データは、以下の例のような形式で、分単位のレコードとして格納されます。
/store/ariel/[events | flows ]/[records | payloads | md]/YYYY/MM/dd/hh/イベントまたはフローは、Ariel データベースの名前です。
- レコードは正規化されたイベント・レコードです。
- ペイロードは、レコードに関連付けられた生ペイロードです。
- md は、Ariel データのハッシュ・シグニチャーまたはメッセージ・ダイジェスト (オプションで HMAC で暗号化されています) です。
一般的に、Ariel データ・ファイルの構造は以下のとおりです。
identifier~Minute#_File#~UUID~UUID~RetentionBucketNumber
- events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0
このレコードは、5th 分および 0th の保存バケット (デフォルト・バケット) の正規化されたイベント・レコードを表します。
- SourceIP~5_0~35c5c6bddcb24578~ad5711e8c1337858~0
5th 分および 0th の保存バケット (デフォルト・バケット) の sourceIP 索引。
payloadsディレクトリーには、以下のファイルのようなファイルが表示されます。
payload_events~5_0~35c5c6bddcb24578~ad5711e8c1337858~05th 分および 0th の保存バケットの生ペイロード (デフォルト・バケット)。
mdディレクトリーには、以下のファイルのようなファイルが表示されます。
- events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0.HMACSHA512
5th 分および 0th の保存バケット用の正規化イベント・レコードの HMAC-SHA512 シグニチャー。
- payload_events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0.HMACSHA512
5th 分および 0th の保存バケットの生ペイロードの HMAC-SHA512 シグニチャー。
注: ACP ツールは、 mdの代わりに hashes というディレクトリーを作成します。 ファイル・ハッシュまたは整合性ハッシュが使用可能になっている場合は、この問題に注意してください。
例 - ユーザー名としてルートがあるイベントの削除
この例では、09:00 から 10:00 までの期間について、ユーザー名が root であるすべてのイベントを Ariel イベント・データベースから削除します。
- まず、削除したいものを検索して表示します。以下の画面キャプチャーは、すべてのイベントを示します。
図 1. すべてのイベント 
- 次に、ACP ツールを実行します。
[root@m5arch06 ~]# /opt/qradar/bin/runjava.sh com.q1labs.ariel.io.ACP -n events -b "2018/08/28 09:00:00" -e "2018/08/28 10:00:00" -q "username not like 'root'" -u admin -d /store/new_ariel AQL criteria: [username not like 'root'] User: admin Copying: [events] to /store/new_ariel Timeline from Tue Aug 28 09:00:00 NDT 2018 to Tue Aug 28 09:59:00 NDT 2018 Trying to copy dir: /store/ariel/events/records/2018/8/28/9[18-08-28,09:00:00] Reader started ... Processing interval /store/ariel/events/records/2018/8/28/9/events~59_0~13e6848042143d0~92f58da705b4b452~0[18-08-28,09:59:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~58_0~23b0a632f1df4d10~bbe50149b34453d8~0[18-08-28,09:58:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~57_0~745684fd0cca424c~a9857807a2952671~0[18-08-28,09:57:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~56_0~89c02507d81940c3~a54edd654c2ce796~0[18-08-28,09:56:00] …. … ... Processing interval /store/ariel/events/records/2018/8/28/9/events~4_0~2c48501471734615~b8ca3cb590a16e05~0[18-08-28,09:04:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~3_0~3e369b679aa64306~a97b95e8528a1a9b~0[18-08-28,09:03:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~2_0~4e370db759d44bd2~81f695b0164b5a66~0[18-08-28,09:02:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~1_0~cdbe9e25b9ee4dbd~982ef0da1ab7e85d~0[18-08-28,09:01:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~0_0~ecd2e4bf6bbb425a~b2acfe04fda202a6~0[18-08-28,09:00:00] Reader stopped. Written 9507759 records, Skipped 2654 records Completed copying dir: /store/ariel/events/records/2018/8/28/9[18-08-28,09:00:00] [root@m5arch06 ~]#以下の画面キャプチャーは、ルート ユーザー名のないすべてのイベントを表示します。図 2. ルート・ユーザー名を持つすべてのイベント
以下の画面キャプチャーは、ルート ユーザー名のないすべてのイベントを表示します。図3: ルート・ユーザー名のないすべてのイベント 
前述のように、ルートの username と一致する 09:00 から 10:00 までのすべてのイベントを削除しました。 そのため、ACP ツールを使用して、 username がルートではないことを基準に指定しました。
また、フィルタリングされたレコードを/store/new_Ariel ディレクトリーに配置しました。
- 古い Ariel データを新しい Ariel データで置き換えます。
/store/new_arielディレクトリー (この例で選択した宛先) を見ると、1 時間分のデータを処理したことが分かります。
[root@m5arch06 new_ariel]# find /store/new_ariel -maxdepth 6 /store/new_ariel /store/new_ariel/events /store/new_ariel/events/hashes /store/new_ariel/events/hashes/2018 /store/new_ariel/events/hashes/2018/8 /store/new_ariel/events/hashes/2018/8/28 /store/new_ariel/events/hashes/2018/8/28/9 /store/new_ariel/events/records /store/new_ariel/events/records/2018 /store/new_ariel/events/records/2018/8 /store/new_ariel/events/records/2018/8/28 /store/new_ariel/events/records/2018/8/28/9 /store/new_ariel/events/payloads /store/new_ariel/events/payloads/2018 /store/new_ariel/events/payloads/2018/8 /store/new_ariel/events/payloads/2018/8/28 /store/new_ariel/events/payloads/2018/8/28/9 [root@m5arch06 new_ariel]#この例では、アーカイブとコピーを容易にするために、データが時間境界に並べるように選択されています (mv コマンドを使用できます)。 データが時間境界に合わない場合は、ファイル単位で移行する必要があります。
- 以下のコマンドを入力して、古いデータをarielディレクトリーからariel_archiveディレクトリーにアーカイブします。
[root@m5arch06 store]# mv /store/ariel/events/records/2018/8/28/9 /store/ariel_archive/events/records/2018/8/28/ [root@m5arch06 store]# mv /store/ariel/events/payloads/2018/8/28/9 /store/ariel_archive/events/payloads/2018/8/28/ [root@m5arch06 store]# mv /store/ariel/events/md/2018/8/28/9 /store/ariel_archive/events/hashes/2018/8/28/ [root@m5arch06 store]#この時点では、その時間のデータは検索できません。 Ariel データベースは、ファイルが Ariel データベース内に存在しなくなったため、このデータベースを検出できません。
- 以下のコマンドを入力して、新規データをnew_arielディレクトリーからarielディレクトリーにコピー (または移動) します。
[root@m5arch06 store]# cp -a /store/new_ariel/events/records/2018/8/28/9 /store/ariel/events/records/2018/8/28 [root@m5arch06 store]# cp -a /store/new_ariel/events/payloads/2018/8/28/9 /store/ariel/events/payloads/2018/8/28 [root@m5arch06 store]# cp -a /store/new_ariel/events/hashes/2018/8/28/9 /store/ariel/events/md/2018/8/28 [root@m5arch06 store]#開始する前にこのデータに対する検索を実行したため、これらの検索を削除して、同一の検索を実行したときにカーソル・キャッシュを取得しないようにします。 「ログ・アクティビティー」タブでの「検索結果の管理」から検索を削除します。
- 09:00 から 10:00 までのすべてのデータの検索を実行します。
図 4. 新規検索 (new search)
注: 結果の合計は、ACP ツールを実行する前の「not」root ユーザー名の結果と同じです。 - ルート・ユーザー名を検索します。
図 5. ルート・ユーザー名の新規検索
注: 一部の索引が再生成されませんでした。 通常の分単位のプロパティー・ベースの索引が作成されますが、スーパー索引は生成されず、フリー・テキスト検索 /Lucene も生成されません。 (既知の問題)。 幸いにも、 /opt/qradar/bin/ariel_offline_indexer.sh ツールが用意されています。
オフライン・インデクサー・スクリプトの使用法
/opt/qradar/bin/ariel_offline_indexer.shを使用して、スーパー索引を生成します。
Usage is:
[root@m5arch06 store]# /opt/qradar/bin/ariel_offline_indexer.sh --help
usage: options
-R,--repair re-build corrupted super indices
-d,--duration time duration to look files for in minutes, for
example -d 5
-n,--name ariel data base name, for example -n events
-t,--endtime end time, for example -t "2018/08/28 11:00",
optional, by default current system time
-F,--renamefrom rename from (internal use)
-L,--light load minimal QRadar frameworks
-T,--renameto rename to (internal use)
-V,--validate validate super indices
-a,--auto backfill all active indexes
-b,--batchmode run in batch mode with options in a file
-f,--fts create free text search indices
-h,--help print this message
-k,--key property java class name
-l,--list list all enabled indices from the configuration
-p,--param optional paramiter for property (key creator
construction)
-r,--remove remove indices for a property
-s,--superindices create super indices from the minute indices
-v,--verbose verbose (optional, default = false)
-w,--threads maximum number of threads to produce minute indices
if requested, default is 48
[root@m5arch06 store]#
[root@m5arch06 store]# /opt/qradar/bin/ariel_offline_indexer.sh -n events -t "2018/08/28 10:00" -d 60 -f -s
2018/08/28 11:04 Running command [-n, events, -t, 2018/08/28 10:00, -d, 60, -f, -s] ...
Trying to index dir: /store/ariel/events/records/2018/8/28/9/lucene[18-08-28,09:00:00]
Completed indexing dir: /store/ariel/events/records/2018/8/28/9/lucene[18-08-28,09:00:00]
All done in 0:02:39.840
[root@m5arch06 store]#
これで、フリー・テキスト索引とスーパー索引が取り込まれます。