ConfigルールはSecurity Hubで見ると便利

2023.02.20

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

こんにちは。たかやまです。

突然ですが、みなさんのConfigルールこんな感じになっていませんか?

Security Hubを利用している環境だとプレフィックスsecurityhub-がついたサービスにリンクされた AWS Config ルール(SLR)が乱立しています。

これはSecurity Hubが利用するConfigルールでユーザ側から変更/削除することはできず、ユーザが作成したConfigルールがある場合非常に探しにくいです。

私の環境ではrestricted-common-portsを展開していますが、Security Hubのルールに埋もれ3ページ目に表示されています。

検索すればいいのではと思ったそこのあなた。Configコンソールではルール名で検索することができません。。

一応フィルターは用意されていますが、フィルター条件は「すべて/準拠/非準拠」のみになります。

Secuirty Hubで見ると便利

ここでタイトル回収になりますが、Security HubはConfigと統合できConfigルールの検出結果はSecurity Hubで見ると便利です。

Security Hubと統合されるConfigルールは以下のメリットがあります。

  • securityhub-がつくSLRは表示されない。
  • 細かいフィルター条件で検索できる。

実際に見ていただくとわかりやすいと思います。

Secuirty Hubの統合 -> AWS Config -> 結果を参照を選択します。

※Configの結果の受け入れをしていない場合は、受け入れをしてください。結果は有効にした後に生成された結果のみ受信します。

統合画面からジャンプするとConfig用のフィルターが入った状態で表示されます。

このフィルターではConfigルールの非準拠となったルールが表示されます。
このときSecurity HubのSLRは表示されないようになっています。

また、Security HubのはタイトルでConfigルールの名前をフィルターすることもでき、Configコンソールより柔軟にフィルタリングすることができます。

注意点

1. 非準拠リソースを削除したとき

非準拠リソースへコンプラインス対応する場合に、リソース自体を削除することがあると思います。
リソースを削除した場合は、Security Hub側の結果がNOT_AVAILABLEとして残ってしまいます。

こうなった場合は、ワークフローのステータスを解決済みとして登録してフィルターから外す対応をしてください。

2. Configルールを削除したとき

非準拠の結果がある状態でConfigルールを削除した場合もSecurity Hubに結果が残った状態になります。
Configルールがない状態で非準拠リソースを修正または削除した場合は、Security Hubには反映されないので、この場合もユーザ側でワークフローのステータスを適宜更新してください。

Configで見る場合

とはいえConfigの設定はConfigコンソールから行う必要があり、Configルール側でフィルタリングしたいニーズもあると思います。

力技ですがCLIを使うことでユーザが作成したConfigルールのみ表示することができます。
CreatedByでSecurity Hub以外が作成しているConfigルールを一覧しています。

aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
| while read region; do
  echo "##### config list in ${region}"
  rule_names=$(aws configservice describe-config-rules \
  --query 'ConfigRules[?CreatedBy!=`securityhub.amazonaws.com`].[ConfigRuleName]' \
  --output text --region ${region})
  for rule_name in ${rule_names[@]}
  do
    echo "https://ap-northeast-1.console.aws.amazon.com/config/home?region=${region}#/rules/details?configRuleName=${rule_name}"
  done
done

結果はURLで返すのでこちらのURLから対象のConfigルールのコンソールに直接ジャンプすることができます。

[cloudshell-user@ip-10-2-58-145 ~]$ aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
> | while read region; do
>   echo "##### config list in ${region}"
>   rule_names=$(aws configservice describe-config-rules \
>   --query 'ConfigRules[?CreatedBy!=`securityhub.amazonaws.com`].[ConfigRuleName]' \
>   --output text --region ${region})
>   for rule_name in ${rule_names[@]}
>   do
>     echo "https://ap-northeast-1.console.aws.amazon.com/config/home?region=${region}#/rules/details?configRuleName=${rule_name}"
>   done
> done
##### config list in ap-south-1
##### config list in eu-north-1
##### config list in eu-west-3
##### config list in eu-west-2
##### config list in eu-west-1
##### config list in ap-northeast-3
##### config list in ap-northeast-2
##### config list in ap-northeast-1
https://ap-northeast-1.console.aws.amazon.com/config/home?region=ap-northeast-1#/rules/details?configRuleName=ec2-security-group-attached-to-eni-periodic
https://ap-northeast-1.console.aws.amazon.com/config/home?region=ap-northeast-1#/rules/details?configRuleName=restricted-common-ports
##### config list in ca-central-1
##### config list in sa-east-1
##### config list in ap-southeast-1
##### config list in ap-southeast-2
##### config list in eu-central-1
##### config list in us-east-1
##### config list in us-east-2
##### config list in us-west-1
##### config list in us-west-2

最後に

Security Hubをデプロイしている環境では、Security HubのSLRでユーザ管理のConfigルールが埋もれてしまいますが、ご紹介したSecurity Hubの統合画面を使うことでConfigルールの視認性をよくすることができます。

今回はシングルアカウントでのご紹介でしたが、マルチアカウントでも同様にConfigルールの結果をSecurity Hubで管理することができます。

マルチアカウントではConfig Aggregatorが選択肢にあがると思いますが、AggregatorもSLRによって表示内容がカオスになるので、ぜひSecurity Hubの統合機能をご活用いただければと思います。

Configルールが見にくいとお悩みの方は、ぜひこちらの機能がお役に立てば幸いです。

以上、たかやま(@nyan_kotaroo)でした。