AWS Configにおける設定変更監視について

このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、「どうやって直すのか?」 という具体的な修復手順(コンソール、AWS CLI、Terraformなど)まで、分かりやすく解説します。
この記事では、CloudTrailによって記録されたAWS Configの設定変更を監視するためのメトリクスフィルターが設定されていない状態について、リスクと対策を解説します。

リスク
AWS Config Serviceは、AWSリソースの構成変更を記録し、セキュリティとコンプライアンスの監視に不可欠なサービスです。そのConfig自体の設定が意図せず変更された場合、アカウント全体の監視・監査体制に深刻な影響を及ぼす可能性があります。CloudTrailによって記録されたConfigの設定変更が適切に監視されていない場合、以下のようなリスクが発生します。
- 監視機能の停止または劣化: Configの設定が変更されると、特定のリソースタイプの記録が停止したり、Configルールが無効化されたりする可能性があります。これにより、構成変更の可視性が失われ、セキュリティインシデントの早期検知が困難になります。
- セキュリティリスクの増大: 悪意のある第三者や誤った操作によってConfigの設定が変更され、重要な監視やルールが無効化された場合、その間に不正な活動を見逃す可能性が高まります。
- コンプライアンス違反: リソース構成の変更履歴の追跡や監査ログの保持は、多くの規制やコンプライアンス基準で求められています。Configの設定変更を見落とすことは、これらの要件を満たせないことにつながります。
- インシデント対応の遅延: Config設定の改ざんが検知されないと、問題の発見が遅れ、原因究明や影響範囲の特定、そして復旧作業に大幅な時間がかかり、ビジネスへの影響が拡大する恐れがあります。
対策
AWS Configの設定変更を監視するために、CloudTrailのログイベントをCloudWatch Logsに転送し、そこでメトリクスフィルターとアラームを設定することが不可欠です。
- CloudTrailの有効化とログ転送: CloudTrailが有効化されており、ConfigのAPI呼び出しを含むイベントがCloudWatch Logsに転送されるように設定されていることを確認します。
- CloudWatchメトリクスフィルターの設定: CloudTrailのロググループを分析し、AWS ConfigのConfiguration Recorder、Delivery Channel、Config Rulesなどの設定変更に関連するAPI呼び出し(例:
CreateConfigurationRecorder
,PutDeliveryChannel
,PutConfigRule
,DeleteConfigurationRecorder
,DeleteDeliveryChannel
,DeleteConfigRule
,StopConfigurationRecorder
,StartConfigurationRecorder
など)を検知するメトリクスフィルターを作成します。 - CloudWatchアラームの設定: 作成したメトリクスフィルターに基づいて、Configの設定変更が検知された場合に、セキュリティチームに迅速に通知するCloudWatchアラームを設定します。SNSトピック、Chatbot、Lambda関数などを通知先として利用できます。
- IAM権限の最小化: AWS Configの設定変更を行うIAMユーザーやロールの権限を最小限に制限し、不必要な変更を防ぎます。
- 定期的な確認とテスト: 設定したメトリクスフィルターとアラームが正常に機能していることを定期的に確認し、必要に応じてアラームのテストを実施します。
修復方法
AWSコンソールでの修復手順
AWSコンソールを用いて、CloudTrailによって記録されたAWS Configの設定変更を監視するためのCloudWatchメトリクスフィルターとアラームを設定します。
- CloudTrailのロググループの確認:
- AWSコンソールにログインします。
- ナビゲーションペインから CloudTrail を選択します。
- 「証跡」を選択し、ConfigのログをCloudWatch Logsに配信している証跡の名前をクリックします。
- 「CloudWatch Logs」セクションで、ロググループ名を確認します。このロググループ名をメモしておきます。
- CloudWatchメトリクスフィルターの作成:
- ナビゲーションペインから CloudWatch を選択します。
- 左側のメニューから ロググループ を選択し、手順1で確認したCloudTrailのロググループを選択します。
- 「メトリクスフィルター」タブを選択し、「メトリクスフィルターの作成」をクリックします。
- 「フィルターパターン」に、Configの設定変更に関連するAPI呼び出しを記述します。 例:
{ ($.eventName = CreateConfigurationRecorder) || ($.eventName = PutDeliveryChannel) || ($.eventName = PutConfigRule) || ($.eventName = DeleteConfigurationRecorder) || ($.eventName = DeleteDeliveryChannel) || ($.eventName = DeleteConfigRule) || ($.eventName = StopConfigurationRecorder) || ($.eventName = StartConfigurationRecorder) }
- 「メトリクス名前空間」、「メトリクス名」、「メトリクス値」を適切に設定し、フィルターの作成 をクリックします。

- CloudWatchアラームの作成:
- 左側のメニューから アラーム を選択し、「アラームの作成」をクリックします。
- 「メトリクスを選択」をクリックし、先ほど作成したメトリクスフィルター(「カスタム名前空間」の下にあるはずです)を選択します。
- アラームの条件(例:メトリクス値が1以上の場合)を設定します。
- アラームのアクションとして、SNSトピックなどを設定し、通知を受け取れるようにします。必要に応じて新しいSNSトピックを作成します。
- アラーム名と説明を入力し、「アラームの作成」をクリックします。
Terraformでの修復手順
TerraformでCloudTrailを通じてAWS Configの設定変更を監視するためのCloudWatchメトリクスフィルターとアラームを設定するには、aws_cloudwatch_log_metric_filter
と aws_cloudwatch_metric_alarm
リソースを使用します。前提として、CloudTrailは既に設定されており、ログがCloudWatch Logsに配信されているものとします。
# CloudTrail のログが配信される CloudWatch Logs グループの ARN を取得 (例: データソースを使用)
data "aws_cloudwatch_log_group" "cloudtrail_log_group" {
name = "your-cloudtrail-log-group-name" # 実際の CloudTrail ロググループ名に置き換えてください
}
resource "aws_cloudwatch_log_metric_filter" "config_settings_changes" {
name = "ConfigSettingsChangesDetected"
log_group_name = data.aws_cloudwatch_log_group.cloudtrail_log_group.name
pattern = <<PATTERN
{ ($.eventName = CreateConfigurationRecorder) || ($.eventName = PutDeliveryChannel) || ($.eventName = PutConfigRule) || ($.eventName = DeleteConfigurationRecorder) || ($.eventName = DeleteDeliveryChannel) || ($.eventName = DeleteConfigRule) || ($.eventName = StopConfigurationRecorder) || ($.eventName = StartConfigurationRecorder) }
PATTERN
metric_transformation {
name = "ConfigSettingsChangeCount"
namespace = "AWS/ConfigMonitoring" # カスタム名前空間
value = "1"
default_value = 0
}
}
resource "aws_sns_topic" "config_alert_topic" {
name = "config-settings-change-alert"
}
resource "aws_cloudwatch_metric_alarm" "config_settings_change_alarm" {
alarm_name = "ConfigSettingsChangeAlert"
comparison_operator = "GreaterThanOrEqualToThreshold"
evaluation_periods = 1
metric_name = "ConfigSettingsChangeCount"
namespace = "AWS/ConfigMonitoring"
period = 300 # 5分間 (秒)
statistic = "Sum"
threshold = 1
alarm_description = "AWS Config の設定変更が検出されました。詳細を確認してください。"
alarm_actions = [aws_sns_topic.config_alert_topic.arn]
ok_actions = [aws_sns_topic.config_alert_topic.arn] # OK状態への遷移時も通知 (任意)
}
上記の例では、CloudTrailのロググループをデータソースとして取得し、そこからConfigの設定変更に関連するAPI呼び出しを検知するメトリクスフィルターを作成しています。このメトリクスフィルターは、AWS/ConfigMonitoring
名前空間に ConfigSettingsChangeCount
というカスタムメトリクスを生成します。その後、このカスタムメトリクスを監視するCloudWatchアラームを設定し、5分間に1回以上のConfig設定変更が検出された場合にSNSトピックに通知を送信するようにしています。
your-cloudtrail-log-group-name
と aws_sns_topic.config_alert_topic
の設定は、実際の環境に合わせて修正してください。
最後に
この記事では、CloudTrailを通じて記録されるAWS Configの設定変更を監視するためのメトリクスフィルターが存在しないことによるリスクと、監視体制を構築するための対策について解説しました。Configの設定変更を早期に検知し、適切に対応することは、AWSアカウントのセキュリティとコンプライアンスを維持するために不可欠です。
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。
運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。
最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。