🍷

AWS Security HubのFindingsの結果をCSVに出力する

2022/08/12に公開

目的

AWS Security HubのFindingsの結果があまりにも膨大なので、マネジメントコンソールから確認することを諦め、CSVに出力してみることにしてみました。CSVの出力結果は、AWS利用部門等と連携し、セキュリティ状態可視化、修復処置のインプットに利用する想定です。

前提

  • aws cli

出力項目

Findigs画面に出力されているような項目を出力する。

  • 重要度
  • AWSアカウントID
  • ワークフローのステータス
  • レコードの状態
  • プロダクト名
  • タイトル
  • 内容
  • 対応方法
  • 対応方法URL
  • リソースタイプ
  • リソースID
  • リージョン

json出力

aws cliを使っても直接CSV出力できないので、まずは、json出力します。
aws securityhub get-findingsを使います。
filtersには、AWSアカウントID、ワークフローステータス、レコードの状態、製品名を指定しています。

aws securityhub get-findings \
--filters '{"AwsAccountId":[{"Value": "123456789012","Comparison":"EQUALS"}],"WorkflowStatus":[{"Value": "NEW","Comparison":"EQUALS"}],"RecordState":[{"Value": "ACTIVE","Comparison":"EQUALS"}],"ProductName":[{"Value": "Security Hub","Comparison":"EQUALS"}]}' \
--query 'Findings[].{SeverityLabel:Severity.Label,AwsAccountId:AwsAccountId,WorkflowStatus:Workflow.Status,RecordState:RecordState,ProductName:ProductName,Title:Title,Description:Description,RecommendationText:Remediation.Recommendation.Text,RecommendationUrl:Remediation.Recommendation.Url,Resources:Resources[0].{Type:Type,Id:Id,Region:Region}}' \
--output json

CSV出力

jsonの出力結果を適当なファイル名(例 sample.json)で保存しておいいて、jqコマンドでCSVに変換します。

cat sample.json | jq -r '(.[0]|to_entries|map(.key)),(.[] | [.SeverityLabel, .AwsAccountId, .WorkflowStatus, .RecordState, .ProductName, .Title, .Description, .RecommendationText, .RecommendationUrl, .Resources.Type, .Resources.Id, .Resources.Region]) | @csv' > sample.csv

まとめ

  • Security HubのFindings結果をCSVに出力できました。
  • Security Hub上で修復処理が簡単にできるようになるといいんだけどなぁ。。。

Discussion