【Security Hub修復手順】[Config.1] AWS Config を有効にする必要があります

【Security Hub修復手順】[Config.1] AWS Config を有効にする必要があります

AWS SecurityHub 基礎セキュリティのベストプラクティスコントロール修復手順をご紹介します。
Clock Icon2023.01.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!AWS事業本部のおつまみです。

皆さん、お使いのAWS環境のセキュリティチェックはしていますか?

当エントリでは、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介します。

本記事の対象コントロール

[Config.1] AWS Config を有効にする必要があります

[Config.1] AWS Config should be enabled

前提条件

本記事はAWS Security Hubで「AWS基礎セキュリティのベストプラクティススタンダード」を利用されている方向けの内容となります。 AWS Security Hubの詳細についてはこちらのブログをご覧ください。

対象コントロールの説明

2024 年 8 月 15 日に仕様変更がありました。

このコントロールは、以下3つのチェック観点から評価されます。すべての観点が満たされていた場合に成功となります。

  • AWS Config(レコーダー)が有効化されているか
  • 有効化されているすべてのSecurity Hubコントロールに対応するすべてのリソースタイプがConfigレコーダーで記録できているか
  • AWS Configのサービスリンクロール(AWSServiceRoleForConfig)が作成されているか

CMメンバーズに加入している場合、初期設定で AWS Config の IAM ロールにカスタムロール「cm-config-role-all-regions」を設定します。
この IAM ロール「cm-config-role-all-regions」は弊社管理のロールであるため、変更を実施しないようお願いいたします。そしてこの状態だと、コントロールの3つ目のチェック観点に違反してしまうため、このコントロールは常に失敗となります。

回避手段として、2024 年 8 月 15 日に[Config.1]にカスタムパラメーター(includeConfigServiceLinkedRoleCheck)が追加されました。
デフォルト値の true を false に変更することで、3つ目のチェック観点を無効化し、1.および2.のチェック観点のみで[Config.1]を評価できるようになっています。

Configは基本的には必須の設定であるため、参考情報をもとに[Config.1]のカスタムパラメータを変更し、有効化することを検討して下さい。設定方法はこちらのブログをご参考下さい。

【アップデート】Security Hubコントロール [Config.1]のチェック観点から「AWS Configで使用されるIAMロールのチェック」を除外できるようになりました | DevelopersIO

修復手順

Security Hub では、すべてのリージョンで AWS Config を有効にすることを推奨しています。
そのためすべてのリージョンで AWS Config を有効化する方法を2パターンご紹介します。
どちらか実施しやすい方法で設定をしてください。

1. マネジメントコンソールで有効にする場合

  1. AWS Configサービスより「今すぐ始める」を選択します。

  2. [設定]画面にて、下記の通り設定します。設定後、[次へ]をクリックします。

    フィールド名 入力値(設定値) 備考
    記録するリソースタイプ このリージョンでサポートされているすべてのリソースを記録します 記録するリソースを設定する項目です。
    デフォルトのままで問題ありません。
    グローバルリソース( AWS IAMリソースなど)を含める 有効 グローバルリソースを含めるかどうか選択する項目です。

     

    デフォルトでは無効が選択されています。
    ※メインリージョンのみ有効を選択して下さい。

    データ保持期間 AWS Configデータを7年間(2557日)保持する AWS Configのデータ保持期間を設定できます。
    デフォルトのままで問題ありません。
    AWS Configロール AWS Configサービスにリンクされたロールの作成 AWS Configのロールを設定する項目です。
    デフォルトのままで問題ありません。
  3. 同じ[設定]画面にて、下記の通り設定します。

    フィールド名 入力値(設定値) 備考
    Amazon S3バケット 任意 Configログを配信するS3バケットを指定する項目です。

     

    Config用のS3バケットを未作成の場合は、バケットの作成を選択してください。
    既に作成済の場合は、アカウントからバケットを選択もしくは別のアカウントからバケットを選択を選択してください。

    S3バケット名 任意のバケット名もしくは既存のバケット名 ログを保管するS3バケット名を指定する項目です。

     

    Config用のS3バケットを未作成の場合は、任意のバケット名を入力してください。
    既に作成済の場合は、既存のバケット名を選択してください。

    Amazon SNSトピック 無効 ログがバケットに配信されるたびに通知されるようにする設定項目です。
    デフォルトで無効が選択されています。大量に通知が来る可能性があるため、デフォルトのままで問題ありません。
  4. [ルール]画面の設定は不要です。[次へ]をクリックします。

     

  5. [レビュー]画面にて、設定内容に誤りがないか確認します。確認後、[確認]をクリックします。

  6. 1~2分後にAWS Configが有効化されます。ナビゲーションペインから[ダッシュボード]が表示されるようになります。

  7. 同様な手順でアカウント内で有効な全リージョンの設定を行います。画面右上のヘッダーナビゲーションよりリージョンの変更ができます。なおアカウント内で有効な全リージョンの一覧は下記のコマンドで入手できます。

    $ aws ec2 describe-regions --query 'Regions[].[RegionName]' --output text | sort
    ap-northeast-1
    ap-northeast-2
    ap-south-1
    ap-southeast-1
    ap-southeast-2
    ca-central-1
    eu-central-1
    eu-north-1
    eu-west-1
    eu-west-2
    eu-west-3
    sa-east-1
    us-east-1
    us-east-2
    us-west-1
    us-west-2
        

     

  8. 上記に記載の全リージョンでConfigが有効になれば、設定完了です。

2. AWS CLIで有効にする場合

前提条件として、Amazon S3 バケット、ポリシーが添付された IAM ロールを作成する必要があります。作成方法はこちらの公式ドキュメントを参考にして下さい。

  1. AWS マネージメントコンソールを開きます。
  2. 画面右上のヘッダーナビゲーションより「CloudShell」のアイコンを選択します。

  3. 1〜2分すると、CloudShellの実行画面が表示されます。

  4. 設定を有効化するために、下記のシェルスクリプトをCloudShellで実行します。
    IAM Role ARN for AWS CONFIGS3 Bucket Nameは作成済のものに置き換えて下さい。全リージョン共通のものとなります。
    ※グローバルリソースを記録するメインリージョンをap-northeast-1(東京リージョン)とします。

    role_arn_for_aws_config=<IAM Role ARN for AWS CONFIG>
    s3_bucket_name=<S3 Bucket Name>
    main_region=ap-northeast-1
    
    REGIONS=( \
    ap-northeast-1 \
    ap-northeast-2 \
    ap-south-1 \
    ap-southeast-1 \
    ap-southeast-2 \
    ca-central-1 \
    eu-central-1 \
    eu-north-1 \
    eu-west-1 \
    eu-west-2 \
    eu-west-3 \
    sa-east-1 \
    us-east-1 \
    us-east-2 \
    us-west-1 \
    us-west-2 \
    )
    
    # サポートされているすべてのサービスにつき記録を有効化(allSupported=true)
    # IAMなどのグローバルリソースはメインのリージョンにおいてのみ有効化(includeGlobalResourceType=true)
    for region in ${REGIONS[@]}; do
        echo "Processing ${region} configuration for recorder..."
        if [ ${region} = ${main_region} ]; then
            aws configservice put-configuration-recorder --region ${region} --configuration-recorder name=default,roleARN=${role_arn_for_aws_config} --recording-group allSupported=true,includeGlobalResourceTypes=true
        else
            aws configservice put-configuration-recorder --region ${region} --configuration-recorder name=default,roleARN=${role_arn_for_aws_config} --recording-group allSupported=true,includeGlobalResourceTypes=false
        fi
    done
     
    # 記録先バケットの設定
    for region in ${REGIONS[@]}; do
        echo "Processing ${region} configuration for delivery channels..."
        aws configservice put-delivery-channel --region ${region} --delivery-channel name=default,s3BucketName=${s3_bucket_name}
    done
        

     

  5. 設定確認のために、下記のシェルスクリプトをCloudShellで実行します。

    REGIONS=( \
    ap-northeast-1 \
    ap-northeast-2 \
    ap-south-1 \
    ap-southeast-1 \
    ap-southeast-2 \
    ca-central-1 \
    eu-central-1 \
    eu-north-1 \
    eu-west-1 \
    eu-west-2 \
    eu-west-3 \
    sa-east-1 \
    us-east-1 \
    us-east-2 \
    us-west-1 \
    us-west-2 \
    )
    
    # 記録有効化のチェック
    echo 'region allSupported includeGlobalResourceTypes'
    for region in ${REGIONS[@]}; do
        echo ${region} $(aws configservice describe-configuration-recorders --region ${region} --query 'ConfigurationRecorders[*].recordingGroup.[allSupported,includeGlobalResourceTypes]' --output text)
    done
    
    # バケット設定のチェック
    echo -e 'region s3BucketName'
    for region in ${REGIONS[@]}; do
        echo ${region} $(aws configservice describe-delivery-channels --region ${region} --query 'DeliveryChannels[*].s3BucketName' --output text)
    done
        

     

  6. 下記の通り出力されていれば、Configは有効化されています。設定は完了です。
    S3 Bucket Nameは設定したバケット名です。

    # 記録有効化のチェック
    ap-northeast-1 True True
    ap-northeast-2 True False
    ap-south-1 True False
    ap-southeast-1 True False
    ap-southeast-2 True False
    ca-central-1 True False
    eu-central-1 True False
    eu-north-1 True False
    eu-west-1 True False
    eu-west-2 True False
    eu-west-3 True False
    sa-east-1 True False
    us-east-1 True False
    us-east-2 True False
    us-west-1 True False
    us-west-2 True False
    
    # バケット設定のチェック
    ap-northeast-1 <S3 Bucket Name>
    ap-northeast-2 <S3 Bucket Name>
    ap-south-1 <S3 Bucket Name>
    ap-southeast-1 <S3 Bucket Name>
    ap-southeast-2 <S3 Bucket Name>
    ca-central-1 <S3 Bucket Name>
    eu-central-1 <S3 Bucket Name>
    eu-north-1 <S3 Bucket Name>
    eu-west-1 <S3 Bucket Name>
    eu-west-2 <S3 Bucket Name>
    eu-west-3 <S3 Bucket Name>
    sa-east-1 <S3 Bucket Name>
    us-east-1 <S3 Bucket Name>
    us-east-2 <S3 Bucket Name>
    us-west-1 <S3 Bucket Name>
    us-west-2 <S3 Bucket Name>
        

     

クラスメソッドメンバーズのお客様はメンバーズサービス設定画面の[セキュリティ設定]→[AWS Config(セキュア設定)]のオプトインをオンにすることで、今回ご紹介した手順を実施せずに簡単に設定を有効化することができます。(ただしリソースの変更が多い環境では利用費にご注意ください。)

最後に

今回は、AWS Security HubによるAWS環境のセキュリティ状況スコアリングに該当する項目についての修正手順をご紹介しました。

コントロールを修正して、お使いのAWS環境のセキュリティをパワーアップさせましょう!

最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。

以上、おつまみ(@AWS11077)でした!

参考

AWS Configのすべてのリソース記録を全リージョンで有効化するシェルスクリプト書いた | DevelopersIO

AWS CLI を利用して、AWS Config の記録される対象リソースタイプをリージョン毎で確認する方法を教えてください

CloudFormation で特定リージョンの Config のみ有効化する方法を考えてみた | DevelopersIO

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.