Athenaはログを自ら保存しません。S3のCloudTrailやVPC Flow Logs、ロードバランサー、WAFログのようなログファイルを、定義したテーブルを通じてクエリします。通常のクエリ結果は、結果バケットにCSV形式で保存されます。JSONで取得したい場合は、UNLOAD … WITH (format = ‘JSON’) でクエリをラップしてください。Athenaは改行区切りのJSONをS3プレフィックスに書き込みますので、それをダウンロードしてください。
多くのAWSチームは、何ヶ月分ものログをS3に保持し、それらをAthenaでクエリして、すべてをSIEMに送信する代わりにします。Prime Coreには24,000以上のユニークな検出ルールがあり、676のMITRE ATT&CK技術にマッピングされています。以下に、どのように取り出し、サニタイズし、LogTotalで無料で調査できるかを説明します。
始める前に
権限。 Athenaクエリを実行する必要があり(athena:StartQueryExecutionなど)、Glueでテーブル定義を読み、ソースバケットを読み、エクスポートバケットに書き込む必要があります。ログがKMSで暗号化されている場合は、kms:Decryptを追加してください。
テーブルとそのパーティションを知ってください。 CloudTrailテーブルは通常、リージョンと日付でパーティション化されており、パーティションプロジェクションまたは追加したパーティションで管理されています。Athenaはスキャンしたデータ量で課金されるため、毎回パーティションでフィルタする必要があります。それがないクエリは、何年分ものログをスキャンしてしまいます。
ワークグループ。 Athenaは、ワークグループでクエリを実行し、結果の場所を指定します。UNLOADは独自のターゲットに書き込みますが、ワークグループのセットアップは必要です。
UNLOADでエクスポート
UNLOAD (
SELECT *
FROM cloudtrail_logs
WHERE region = 'eu-west-1'
AND day = '2026/10/19'
AND useridentity.arn LIKE '%suspicious-user%'
)
TO 's3://my-athena-exports/ct-1019/'
WITH (format = 'JSON', compression = 'NONE')
パーティション列(region, day)をテーブル定義に合わせて調整してください。ターゲットプレフィックスは空でなければなりません。
コマンドラインから:
QID=$(aws athena start-query-execution –work-group primary
–query-string “$(cat unload.sql)”
–query ‘QueryExecutionId’ –output text)
# SUCCEEDEDになるまで待つ
until [ “$(aws athena get-query-execution –query-execution-id “$QID”
–query ‘QueryExecution.Status.State’ –output text)” = “SUCCEEDED” ]; do sleep 5; done
aws s3 cp s3://my-athena-exports/ct-1019/ ./ct-1019/ –recursive
zcat -f ./ct-1019/* > ct_1019.jsonl
zcat -fは、圧縮および非圧縮出力の両方を処理します。クエリが失敗した場合、待ちループは終了しません。これを定期的にスクリプト化する場合はFAILEDも確認してください。
なぜ get-query-results? これは動作しますが、行を文字列のリストとして1,000行ずつ返し、それをオブジェクトに組み直さなければなりません。UNLOADは、一度でクリーンなJSONを提供します。
LogTotalでのアップロード、サニタイズおよびレビュー
- アップロード。 アクセスする logtotal.com と.jsonlファイルをドロップします。
- サニタイズ。
- レビュー。
問題が発生した場合
| 症状 | 考えられる原因 | Fix |
|---|---|---|
| テラバイトをスキャンするクエリ | パーティションフィルタがない | パーティション列でフィルタする |
| 出力場所についてのエラー | ターゲットプレフィックスが空ではない | 新しいプレフィックスを使用する |
| アクセス拒否 | S3、Glue、またはKMSの権限がない | 各項目を確認する; KMSが通常の原因 |
| 0行 | パーティションがロードされていない、またはパーティション形式が間違っている | パーティションプロジェクションを確認するか、MSCK REPAIR TABLEを実行する |
| 出力ファイルがテキストとして開かない | GZIP圧縮 | zcatを使用するか、圧縮を ‘NONE’ に設定する |
FAQ
これはAmazon Security Lakeと同じですか?
Security LakeもAthenaを使用しますが、独自のOCSFテーブルとLake Formation権限があります。
生のCloudTrailファイルをエクスポートすることはできますか?
はい。もし丸一日分だけ必要なら、S3からファイルをコピーするほうが簡単です。Athenaはフィルタリングが必要なときに役立ちます。