概要
やりたいこと
GuardDuty 委任管理者(マスターアカウント)から、以下を行う。
- 指定したアカウントのみ
- 全リージョン
- GuardDuty 有効化
- マルチアカウント連携
GuardDuty 委任管理者が、メンバーアカウントの GuardDuty を有効化する方法には、コンソールからの操作と CLI で API を呼び出す方法がある。
CLI はディテクター ID、アカウント ID、E メールが必要なのでめんどくさいと以前書いた。しかし、この方法が楽な場合もある。
GuardDuty CLI
Organizations 配下のアカウントの GuardDuty を有効化し、メンバーに追加する。
AWS CLI の create-members コマンドでメンバーを追加できる。
追加する場合のコマンド例。detectorId, AccountId, Email が必要。
aws guardduty create-members \ --detector-id 12abc34d567e8fa901bc2d34e56789f0 \ --account-details AccountId=123456789012,[email protected] \ --region us-east-1
detectorId は、アカウントの GuardDuty を一意に識別できるID。
下記のコマンドで取得できる。
aws guardduty list-detectors \ --region us-east-1
GuardDuty コンソール →「設定」→「探知機 ID」から確認できる。リージョンごとに値が違う。
AWS CLI
シェルで複数アカウント全リージョン
追加したいアカウントを CSV 形式で作成する。
vi targets.csv
111122223333,[email protected]
444455556666,[email protected]
全リージョンにコマンドを発行するシェル。detectorId は環境に合わせて修正。
#!/bin/bash
while read row; do
column1=`echo ${row} | cut -d , -f 1`
column2=`echo ${row} | cut -d , -f 2`
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id aaaaaaa --account-details AccountId=${column1},Email=${column2} --region us-east-1
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id bbbbbbb --account-details AccountId=${column1},Email=${column2} --region us-east-2
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id ccccccc --account-details AccountId=${column1},Email=${column2} --region us-west-1
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id ddddddd --account-details AccountId=${column1},Email=${column2} --region us-west-2
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id eeeeeee --account-details AccountId=${column1},Email=${column2} --region ap-south-1
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id fffffff --account-details AccountId=${column1},Email=${column2} --region ap-northeast-2
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id ggggggg --account-details AccountId=${column1},Email=${column2} --region ap-southeast-1
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id hhhhhhh --account-details AccountId=${column1},Email=${column2} --region ap-southeast-2
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id iiiiiii --account-details AccountId=${column1},Email=${column2} --region ap-northeast-1
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id jjjjjjj --account-details AccountId=${column1},Email=${column2} --region ca-central-1
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id kkkkkkk --account-details AccountId=${column1},Email=${column2} --region eu-central-1
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id lllllll --account-details AccountId=${column1},Email=${column2} --region eu-west-1
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id mmmmmmm --account-details AccountId=${column1},Email=${column2} --region eu-west-2
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id nnnnnnn --account-details AccountId=${column1},Email=${column2} --region eu-west-3
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id ooooooo --account-details AccountId=${column1},Email=${column2} --region eu-north-1
aws guardduty create-members --profile SecurityMonitor-IaC --detector-id ppppppp --account-details AccountId=${column1},Email=${column2} --region sa-east-1
done < targets.csv
シェルを実行。アカウント数×リージョン数分のコマンドが実行される。
sh guradduty_enable.sh
全リージョンで指定したアカウントのステータスが有効になっていれば OK。
今後は CSV を更新し、再度シェルを実行すればいい。
コメント