【セキュアアカウント切り戻し手順】Amazon Detective無効化手順のご案内

クラスメソッドメンバーズご利用のお客様に提供しているセキュアアカウントサービスの設定切り戻し手順をご案内いたします。
2023.06.26

当エントリではクラスメソッドメンバーズが提供しているセキュアアカウントサービスにてAmazon Detective(以降、Detective)無効化の手順についてご案内いたします。

セキュアアカウントとは

クラスメソッドでは、セキュリティに関するベストプラクティスをまるっと施した状態のAWSアカウントをお客様に提供しております。

クラスメソッドメンバーズご利用の全てのお客様がご利用可能ですので、この機会にご検討ください。

セキュアアカウントのアーキテクチャ

セキュアアカウントでは以下の設定が施されています。

各設定の詳細は以下記事や仕様書をご参照ください。

今回の切り戻し対象のサービス

今回はセキュアアカウントにて全リージョンで有効化されているDetectiveの切り戻し手順を紹介いたします。

Amazon Detectiveとは

Detectiveは、NISTのCyber Security Framework(CSF)で定義されている以下5項目のうち、「対応」に位置するサービスです。

  • 識別(Identity)
  • 防御(Protect)
  • 検知(Detect)
  • 対応(Respond)
  • 復旧(Recover)

図:AWS SUMMIT ONLINE 2021 AWS環境における脅威検知と対応(P.7)(引用元)

AWS Security HubやAmazon GuardDutyの検出結果を取り込み、セキュリティに関する検出結果や疑わしいアクティビティの根本原因の分析、調査、および迅速な特定を行います。

このため、AWS Security HubやAmazon GuardDutyの利用が前提となります。

また、Detectiveは継続的に機能アップデートされおり、最近では検出結果の相関を可視化するFinding Group Visualization機能が追加されました。

図:Finding Group Visualizationのサンプル(引用元)

料金について

Detectiveは、以下から取り込まれるログ量に応じて利用料が発生します。

  • AWS CloudTrail
  • VPC Flow Logs
  • Amazon EKSの監査ログ
  • AWS Security Hubの検出結果
  • Amazon GuardDutyの検出結果

東京リージョンで取り込まれたログが100GB/月場合、270USD/月くらいになります。

  100(GB) × 2.70USD(最初の 1,000 GB/アカウント/リージョン/月) = 270USD/月

詳しくは料金ページを確認してください。

前提

オプトイン無効化作業

セキュアアカウント設定の切り戻し作業を行う際は、メンバーズポータルサイトのセキュア設定をご確認いただき、オプトインが既に有効の場合は無効化にしていただく必要があります。

  • オプトインが有効化状態では毎週土曜日にてメンテナンスが入り、セキュア設定の状態が維持(上書き)されるため、メンバーズポータルより無効化する必要があります。
  • オプトインが無効化状態では毎週土曜日のメンテナンスが実施されなくなりますが、AWS側の設定自体はそのままとなるため手動切り戻し作業を行う必要があります。
  • メンバーズポータルサイトから対象のアカウントIDを選択します。

    以下画面から、メンバーズサービス設定を選択します。

    新しくタブが開かれるので、セキュリティ設定を選択します。

    セキュア設定項目にて、「Amazon Detective」の項目を無効化して保存します。

    切り戻し作業に必要なIAM権限

    今回の切り戻し作業を行うために、作業者に必要なポリシーは以下となります。

    • AWSCloudShellFullAccess
    • AmazonGuardDutyFullAccess
    • AmazonEC2ReadOnlyAccess
      • CLIを利用してDetectiveを無効化する場合、処理の中で有効リージョンの情報を取得するために必要
      • コンソールを利用して無効化する場合は不要

    無効化手順

    現在のDetectiveのステータスを確認する

    CloudShellを開き以下コマンドを入力してください(CloudShellの使い方はこちら)。

    for REGION in $(aws ec2 describe-regions --query "sort(Regions[].RegionName)" --output text); do
        DETECTIVE_ARN=$(aws detective list-graphs --region "${REGION}" --query "GraphList[].Arn" --output text 2>/dev/null)
        if [ -n "$DETECTIVE_ARN" ]; then
            DETECTIVE_STATUS=$(aws detective list-members --graph-arn "${DETECTIVE_ARN}" --query 'MemberDetails[].Status' --region "${REGION}" --output text 2>/dev/null)
            if [ "$DETECTIVE_STATUS" == "ENABLED" ]; then
                # 有効化中のステータスを表示
                echo "${REGION}: Enabled: ${DETECTIVE_ARN}"
            else
                # 上記以外場合のステータスを表示
                echo "${REGION}: Unknown Status: ${DETECTIVE_ARN}"
            fi
        else
            # 無効化中のステータスを表示
            echo "${REGION}: Disabled: -"
        fi
    done

    Detectiveが有効になっている場合は、以下のような表示結果になります。なお、Detectiveは大阪リージョンをサポートしていないので、大阪リージョン以外で有効になっているはずです。

    ap-northeast-1: Enabled: arn:aws:detective:ap-northeast-1:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    ap-northeast-2: Enabled: arn:aws:detective:ap-northeast-2:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    ap-northeast-3: Disabled: -
    ap-south-1: Enabled: arn:aws:detective:ap-south-1:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    ap-southeast-1: Enabled: arn:aws:detective:ap-southeast-1:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    ap-southeast-2: Enabled: arn:aws:detective:ap-southeast-2:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    ca-central-1: Enabled: arn:aws:detective:ca-central-1:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    eu-central-1: Enabled: arn:aws:detective:eu-central-1:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    eu-north-1: Enabled: arn:aws:detective:eu-north-1:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    eu-west-1: Enabled: arn:aws:detective:eu-west-1:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    eu-west-2: Enabled: arn:aws:detective:eu-west-2:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    eu-west-3: Enabled: arn:aws:detective:eu-west-3:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    sa-east-1: Enabled: arn:aws:detective:sa-east-1:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    us-east-1: Enabled: arn:aws:detective:us-east-1:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    us-east-2: Enabled: arn:aws:detective:us-east-2:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    us-west-1: Enabled: arn:aws:detective:us-west-1:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    us-west-2: Enabled: arn:aws:detective:us-west-2:XXXXXXXXXXXX:graph:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    CloudShellの場合

    全リージョンのDetectiveを一括で操作したい場合はCloudShellを使用することをお勧めします。

    for REGION in $(aws ec2 describe-regions --query "sort(Regions[].RegionName)" --output text); do
        DETECTIVE_ARN=$(aws detective list-graphs --region "${REGION}" --query "GraphList[].Arn" --output text 2>/dev/null)
        if [ -n "$DETECTIVE_ARN" ]; then
            DETECTIVE_STATUS=$(aws detective list-members --graph-arn "${DETECTIVE_ARN}" --query 'MemberDetails[].Status' --region "${REGION}" --output text 2>/dev/null)
            if [ "$DETECTIVE_STATUS" == "ENABLED" ]; then
                # Detectiveを無効化
                aws detective delete-graph --graph-arn "${DETECTIVE_ARN}" --region "${REGION}"
                echo "${REGION}: Disable Successful"
            else
                # 上記以外場合のステータスを表示
                echo "${REGION}: Unknown Status: ${DETECTIVE_ARN}"
            fi
        else
            # 無効化中のステータスを表示
            echo "${REGION}: Disabled"
        fi
    done

    コンソールの場合

    コンソールでDetectiveを無効化する場合、リージョン毎に操作する必要があり手間が掛かる点はご注意ください。操作リージョンが数ヶ所程度の場合であれば、コンソール操作でも良いと思います。

    先に紹介したステータス確認コマンドを実行し、すべてのリージョンでDisabledになっていればOKです。

    【おまけ】再度有効化したい場合

    切り戻したセキュア設定を元に戻したい場合、メンバーズポータルサイトから再度有効化することが可能です。 設定反映は毎週土曜日午前2時ごろから順次開始されます。

    セキュア設定項目にて、「Amazon Detective」の項目を有効化して保存してください。

    おわりに

    本エントリがどなたかのお役に立てれば幸いです。