雑にAmazon GuardDutyのFindingsを全リージョンにまたがって取得してくるPythonスクリプト書いた

運用でよく使うGuardDutyのスクリプトを書いたので共有します。
2021.12.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、臼田です。

みなさん、GuardDuty運用してますか?(挨拶

今回はパッと思いついてさっと書いた適当スクリプトを共有します。

コンセプト

Amazon GuardDutyをはじめセキュリティ系のサービスを使っているとリージョンをまたがって設定しているので、状態を確認するときにいちいち1つずつ確認するのは面倒ですよね。

というわけでGuardDuty Findingsをバッと全リージョン回して取得したくなりました。

全リージョン回すってシチュエーションはよくあるので昔以下のような記事も書きました。これもよく使うので良かったらどうぞ。

スクリプト

こちらです。Python3で実行してください。

import boto3

ec2 = boto3.client('ec2')
regions = list(map(lambda x: x['RegionName'], ec2.describe_regions()['Regions']))

for region in regions:
    print("## " + region)
    gd = boto3.client('guardduty', region_name=region)
    gid = gd.list_detectors().get('DetectorIds')[0]
    print(gd.list_findings(DetectorId=gid)['FindingIds'])

どっかのリージョンで無効化してたら多分止まります。適当にエラー処理してください。結果は以下のような感じです。

## eu-north-1
[]
## ap-south-1
[]
## eu-west-3
[]
## eu-west-2
[]
## eu-west-1
[]
## ap-northeast-3
[]
## ap-northeast-2
[]
## ap-northeast-1
[]
## sa-east-1
[]
## ca-central-1
[]
## ap-southeast-1
[]
## ap-southeast-2
[]
## eu-central-1
[]
## us-east-1
[]
## us-east-2
[]
## us-west-1
[]
## us-west-2
[]

はい、今回たまたまFindingsが何も出ず健全な環境だったので、アウトプットのレイアウト調整とかやっていません。これもお好きなようにどうぞ。

まとめ

地味によくやる作業なのでスクリプト書きました。

参考にどうぞ。