🍷
AWS Security HubのFindingsの結果をCSVに出力する
目的
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