Organizationsメンバーに追加したGuardDutyとSecurity Hubの関連付けを解除するスクリプト
はじめに
GuardDutyとSecurity HubはOrganizationsと連携することで、組織内のメンバーアカウントを管理することができます。これらのアカウントを組織から独立させたい、もしくは別の組織に移行したい時にはそれぞれのサービスで関連付けを解除する必要が出てきます。もし複数リージョンで利用していると、1リージョンごとに解除する必要があるためコンソールで操作となると大変です。
そんなときにサクッとコピペで使えるシェルスクリプトを作ってみました。
作成したスクリプト
作成したスクリプトはGuardDuty、Security Hubの管理アカウント上で実行してください。またmember_account_id
はダミーのアカウントIDのため、実行前に関連付けを解除したいメンバーアカウントIDに差し替えてください。
GuardDutyの関連付けを解除するスクリプト
member_account_id="123456789012" for region in $(aws ec2 describe-regions --output text --query 'Regions[].{Name:RegionName}') do detectors=$(aws guardduty list-detectors --region $region --query 'DetectorIds[*]' --output text ) echo "Processing region ${region}..." for detector_id in $detectors do echo " Disassociating member account ${member_account_id} from detector ${detector_id} in region ${region}." aws guardduty disassociate-members --detector-id $detector_id --account-ids $member_account_id --region $region done done
GuardDutyが有効化されていないリージョンはProcessing region ${region}...
のみ出力されます。
Security Hubの関連付けを解除するスクリプト
member_account_id="123456789012" for region in $(aws ec2 describe-regions --output text --query 'Regions[].{Name:RegionName}') do echo "Processing region ${region}..." result=$(aws securityhub disassociate-members --account-ids $member_account_id --region $region 2>&1) if [[ $result != *"The request is rejected since no such resource found."* ]]; then echo " Disassociating member account ${member_account_id} in region ${region}." fi done
有効化されていないリージョンに実行すると、以下のBadRequestException
のエラーが発生してしまうのがノイズになるのでそこだけハンドリングしてます。
An error occurred (BadRequestException) when calling the DisassociateMembers operation: The request is rejected since no such resource found.
スクリプトの実行方法
特に明記するほどでもないですが、一応書いておきます。
GuardDuty、Security Hubの管理アカウントにログインしてCloudShellを開きます。(Auditアカウント等に委任している場合は委任先)
GuardDutyの関連付けを解除するスクリプトを貼り付けてみます。
Enterを押すと実行されます。以下は東京リージョンのみ有効化していたため、レスポンスがap-northeast-1
でのみ返ってきています。
Security Hubのスクリプト実行方法も同様です。
おわりに
繰り返し発生する作業はスクリプトにしておきましょう。この記事が少しでも誰かの作業を楽にできれば幸いです。