【セキュアアカウント切り戻し手順】Amazon GuardDuty停止・無効化手順のご案内
当エントリではクラスメソッドメンバーズが提供しているセキュアアカウントサービスにてAmazon GuardDuty停止・無効化の手順についてご案内いたします。
セキュアアカウントとは
クラスメソッドでは、セキュリティに関するベストプラクティスをまるっと施した状態のAWSアカウントをお客様に提供しております。
クラスメソッドメンバーズご利用の全てのお客様がご利用可能ですので、この機会にご検討ください。
セキュアアカウントのアーキテクチャ
セキュアアカウントでは下記の設定が施されています。
各設定の詳細は下記記事や仕様書をご参照ください。
今回の切り戻し対象のサービス
今回はセキュアアカウントにて全リージョン有効化されているGuardDutyの切り戻し手順を紹介いたします。
Amazon GuardDutyとは
不正アクセスなど自社のAWS環境への攻撃・脅威をいち早く検知し、セキュリティを担保するために有効なサービスです。
例えばGuardDutyを有効化していないと、下記のようにログインパスワードが漏洩し自社のAWS環境へ不正アクセスされている場合にその事実に気づくことができません。
しかしGuardDutyを有効化していると不正アクセスの可能性をすぐに検知してくれるため、素早く対応に移り結果として被害を抑えられる可能性が高くなります。
GuardDutyさんすげぇ、、、
料金について
よくGuardDutyの設定を無効化したい理由として、料金が高い(費用対効果に見合っていない)という意見が挙げられます。
GuardDutyのコスパは非常に良いです!下記記事にて詳細に説明されているので是非一度ご参照ください。
前提
オプトイン無効化作業
セキュアアカウント設定の切り戻し作業を行う際は、メンバーズポータルサイトのセキュア設定をご確認いただき、オプトインが有効化の場合は無効化にしていただく必要があります。
メンバーズポータルサイトから対象のアカウントIDを選択します。
下記画面から、メンバーズサービス設定を選択します。
新しくタブが開かれるので、セキュリティ設定を選択します。
セキュア設定項目にて、「Amazon GuardDuty」の項目を無効化にて保存します。
切り戻し作業者に必要なIAM権限
今回の切り戻し作業を行うために、作業者に必要なポリシーは以下となります。
- AWSCloudShellFullAccess
- AmazonGuardDutyFullAccess
- AmazonEC2ReadOnlyAccess
停止・無効化手順
停止と無効化のどちらがいいのか
特別な理由がない限り、GuardDutyは無効化ではなく停止させておきましょう!
- 停止中でも料金はかからず、既存の検出結果をそのまま保持できます。
- 無効にすると、既存の検出結果とGuardDutyの設定は失われ、復旧できなくなります。
現在のGuardDutyのステータスを確認する
CloudShellを開き以下コマンドを入力してください(CloudShellの使い方はこちら)。
GuardDutyのステータス確認コマンド
for REGION in $(aws ec2 describe-regions --query "sort(Regions[].RegionName)" --output text); do DETECTOR_ID=$(aws guardduty list-detectors --region "${REGION}" --query DetectorIds --output text 2>/dev/null) if [ -n "$DETECTOR_ID" ]; then DETECTOR_STATUS=$(aws guardduty get-detector --detector-id "${DETECTOR_ID}" --query 'Status' --region "${REGION}" --output text 2>/dev/null) if [ "$DETECTOR_STATUS" == "DISABLED" ]; then # 停止済みのステータスを表示 echo "${REGION}: Stopped: ${DETECTOR_ID}" elif [ "$DETECTOR_STATUS" == "ENABLED" ]; then # 有効化中のステータスを表示 echo "${REGION}: Enabled: ${DETECTOR_ID}" else # 上記以外場合のステータスを表示 echo "${REGION}: Unknown Status: ${DETECTOR_ID}" fi else # 無効化中のステータスを表示 echo "${REGION}: Disabled: -" fi done
全てのリージョンてGuardDutyが有効化になっている場合は、下記のような表示結果になると思います。
ap-northeast-1: Enabled: {GuardDutyのディテクターID} ap-northeast-2: Enabled: {GuardDutyのディテクターID} ap-northeast-3: Enabled: {GuardDutyのディテクターID} ap-south-1: Enabled: {GuardDutyのディテクターID} ap-southeast-1: Enabled: {GuardDutyのディテクターID} ap-southeast-2: Enabled: {GuardDutyのディテクターID} ca-central-1: Enabled: {GuardDutyのディテクターID} eu-central-1: Enabled: {GuardDutyのディテクターID} eu-north-1: Enabled: {GuardDutyのディテクターID} eu-west-1: Enabled: {GuardDutyのディテクターID} eu-west-2: Enabled: {GuardDutyのディテクターID} eu-west-3: Enabled: {GuardDutyのディテクターID} sa-east-1: Enabled: {GuardDutyのディテクターID} us-east-1: Enabled: {GuardDutyのディテクターID} us-east-2: Enabled: {GuardDutyのディテクターID} us-west-1: Enabled: {GuardDutyのディテクターID} us-west-2: Enabled: {GuardDutyのディテクターID}
表示ステータス | 説明 |
---|---|
Enabled | 有効化状態 |
Stopped | 停止状態 |
Disabled | 無効化状態(非推奨) |
実際にCloudShellで実行した時の様子です。
CloudShellの場合
全リージョンを一括で操作したい場合はCloudShellを使用することをお勧めします。
停止手順
全リージョン一括停止コマンド
aws ec2 describe-regions --query Regions[*].RegionName \ | jq -r '.[]' \ | while read -r REGION do # guardduty no-enable aws --region "${REGION}" guardduty list-detectors --query DetectorIds[*] | jq -r '.[]' \ | while read -r DETECTORID do aws --region "${REGION}" guardduty update-detector --detector-id "${DETECTORID}" --no-enable echo "${REGION} Stopped" done done
特定のリージョン以外を一括で停止したい場合(例:東京、バージニア北部以外のリージョンを一括停止)
※リージョンカスタマイズ可能です
aws ec2 describe-regions --query Regions[*].RegionName \ | jq -r '.[]' \ | grep -v -e 'ap-northeast-1' -e 'us-east-1' \ | while read -r REGION do # guardduty no-enable aws --region "${REGION}" guardduty list-detectors --query DetectorIds[*] | jq -r '.[]' \ | while read -r DETECTORID do aws --region "${REGION}" guardduty update-detector --detector-id "${DETECTORID}" --no-enable echo "${REGION} Stopped" done done
無効化手順
全リージョン一括無効化コマンド
特別な理由がない限り、GuardDutyは無効化ではなく停止をさせておきましょう!
aws ec2 describe-regions --query Regions[*].RegionName \ | jq -r '.[]' \ | while read -r REGION do # guardduty disable aws --region "${REGION}" guardduty list-detectors --query DetectorIds[*] | jq -r '.[]' \ | while read -r DETECTORID do aws --region "${REGION}" guardduty delete-detector --detector-id "${DETECTORID}" echo "${REGION} Disabled" done done
特定のリージョン以外を一括で無効化したい場合(例:東京、バージニア北部以外のリージョンを一括無効化)
※リージョンカスタマイズ可能です
aws ec2 describe-regions --query Regions[*].RegionName \ | jq -r '.[]' \ | grep -v -e 'ap-northeast-1' -e 'us-east-1' \ | while read -r REGION do # guardduty disable aws --region "${REGION}" guardduty list-detectors --query DetectorIds[*] | jq -r '.[]' \ | while read -r DETECTORID do aws --region "${REGION}" guardduty delete-detector --detector-id "${DETECTORID}" echo "${REGION} Disabled" done done
コンソールの場合
コンソールにてGuardDutyを停止・無効化する場合、リージョン毎に操作する必要があるので手間がかかります。 操作リージョンが数ヶ所程度の場合にコンソールで操作することをお勧めします。
停止手順
まずはコンソール画面よりGuardDutyを開き、メニューより「設定」を選択してください。
設定画面より、下記の「GuardDutyを一時停止」より「停止」を押します。
ポップアップが出てくるので「停止」を押します。
設定画面に戻り、「GuardDutyを再度有効にする」となっていれば停止状態になっています。
一連の流れを対象リージョンにて実行します。
無効化手順
設定画面より、下記の「GuardDutyを無効にする」より「を無効にする」を押します。
ポップアップが出てくるので「を無効にする」を押します。
GuardDutyの初期画面に戻るので、下記のような表示になれば無効化完了です。
一連の流れを対象リージョンにて実行します。
ステータスを確認する
全リージョンのGuardDutyステータス確認コマンド
for REGION in $(aws ec2 describe-regions --query "sort(Regions[].RegionName)" --output text); do DETECTOR_ID=$(aws guardduty list-detectors --region "${REGION}" --query DetectorIds --output text 2>/dev/null) if [ -n "$DETECTOR_ID" ]; then DETECTOR_STATUS=$(aws guardduty get-detector --detector-id "${DETECTOR_ID}" --query 'Status' --region "${REGION}" --output text 2>/dev/null) if [ "$DETECTOR_STATUS" == "DISABLED" ]; then # 停止済みのステータスを表示 echo "${REGION}: Stopped: ${DETECTOR_ID}" elif [ "$DETECTOR_STATUS" == "ENABLED" ]; then # 有効化中のステータスを表示 echo "${REGION}: Enabled: ${DETECTOR_ID}" else # 上記以外場合のステータスを表示 echo "${REGION}: Unknown Status: ${DETECTOR_ID}" fi else # 無効化中のステータスを表示 echo "${REGION}: Disabled: -" fi done
全て停止状態の時はこのように表示されます。
ap-northeast-1: Stopped: {GuardDutyのディテクターID} ap-northeast-2: Stopped: {GuardDutyのディテクターID} ap-northeast-3: Stopped: {GuardDutyのディテクターID} ap-south-1: Stopped: {GuardDutyのディテクターID} ap-southeast-1: Stopped: {GuardDutyのディテクターID} ap-southeast-2: Stopped: {GuardDutyのディテクターID} ca-central-1: Stopped: {GuardDutyのディテクターID} eu-central-1: Stopped: {GuardDutyのディテクターID} eu-north-1: Stopped: {GuardDutyのディテクターID} eu-west-1: Stopped: {GuardDutyのディテクターID} eu-west-2: Stopped: {GuardDutyのディテクターID} eu-west-3: Stopped: {GuardDutyのディテクターID} sa-east-1: Stopped: {GuardDutyのディテクターID} us-east-1: Stopped: {GuardDutyのディテクターID} us-east-2: Stopped: {GuardDutyのディテクターID} us-west-1: Stopped: {GuardDutyのディテクターID} us-west-2: Stopped: {GuardDutyのディテクターID}
表示ステータス | 説明 |
---|---|
Enabled | 有効化状態 |
Stopped | 停止状態 |
Disabled | 無効化状態(非推奨) |
【おまけ】再度有効化したい場合
切り戻したセキュア設定を元に戻したい場合、メンバーズポータルサイトから再有効化することが可能です。
設定反映は毎週土曜日午前2時ごろから順次開始されます。
メンバーズポータルサイトから対象のアカウントIDを選択します。
下記画面から、メンバーズサービス設定を選択します。
新しくタブが開かれるので、セキュリティ設定を選択します。
セキュア設定項目にて、「Amazon GuardDuty」の項目を有効化にて保存します。