Amazon GuardDutyを全リージョンで無効化してみた
こんにちは!丸屋 正志(Maruya Masashi) です。
今日もブロックを掘ったり積み上げたり匠に壊されたりしていますか?
困っていたこと
既存AWSアカウントを AWS Control Tower 管理下に移動するにあたり、既に設定している Amazon GuardDutyを全リージョンから無効化したいです。
ついでに、全リージョンから検出結果を取得(エクスポート)したいです。
このブログで実現できること
- Amazon GuardDuty の検出結果を全リージョンから取得
- Amazon GuardDuty を全リージョンから無効化
1, 検出結果をエクスポート
CLI : 全リージョン 一括取得の場合
以下のシェルスクリプトを AWS CloudShell 上にアップロードし、ファイルを実行すると全リージョンのAmazon GuardDuty の検出結果を取得することができます。
- ファイル一覧
- 実行ファイル名 :
GuardDuty-Export.sh
- 取得ファイル名 :
Guardduty_Findings.json
- 実行ファイル名 :
#!/bin/bash outfile="Guardduty_Findings.json" # ファイルの内容をクリア echo "" > $outfile aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \ | while read region; do echo "##### Fetching GuardDuty findings in ${region}" detector_id=$(aws --region ${region} guardduty list-detectors --query "DetectorIds[0]" --output text) if [ "$detector_id" != "None" ]; then # 検出結果IDのリストを取得します finding_ids=$(aws --region ${region} guardduty list-findings --detector-id $detector_id --query 'FindingIds[]' --output json) if [ "$finding_ids" != "[]" ]; then # 検出結果の詳細をJSON形式で取得し、結果をファイルに追記します echo "##### Findings for ${region}" >> $outfile aws --region ${region} guardduty get-findings --detector-id $detector_id --finding-ids "$finding_ids" >> $outfile else echo -e "No findings detected in ${region} \n" fi else echo -e "No GuardDuty detector found in ${region} \n" fi done
コンソール : 単一リージョンの個別取得の場合
Amazon GuardDuty コンソールでエクスポートする場合には、検出結果を選択し右上の【検出結果 ID】をクリックしてダウンロードします。
2, Amazon GuardDutyの無効化
CloudShellもしくは、お手元のローカルPCから接続できる環境にて、下記のスクリプトを貼り付けて全リージョンのAmazon GuardDutyを一括で無効化を実施します。
aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \ | while read region; do echo "##### Disabling GuardDuty in ${region}" detector_id=$(aws --region ${region} guardduty list-detectors --query "DetectorIds[0]" --output text) if [ "$detector_id" != "None" ]; then aws --region ${region} guardduty delete-detector --detector-id $detector_id echo "GuardDuty has been disabled in ${region}" else echo -e "No GuardDuty detector found in ${region} \n" fi done
さいごに
今回は、Amazon GuardDuty を全リージョンから検出結果を取得と無効化する方法でした。
このブログが誰かの解決になれば幸いです。