🫥

【AWS】AWS Config 無効化→有効化時の挙動を確認する

2024/10/22に公開

背景

Control Tower を導入する時等、Organizations 全体に AWS Config を有効化したい場合、既に AWS Config が有効化されている AWS アカウントが存在するケースがあると思います。

その際、一度 AWS Config の無効化(含レコーダー削除)が必要となりますが、無効化中に記録されたリソースや既に記録済みのリソースがどうなるのか確認してみます。

結論

  • 無効化中に作成したリソースは、有効化時に検出される
  • 無効化中に既存リソースの変更を行うと Config としては変更情報は記録されない
    • ただし、CloudTrail イベントから追跡することはできるので、LookupEvents API が返却する 90 日以内の情報であればタイムラインから追跡可能(90 日経過後は証跡取っていればそちらから追える)

前提

新規に AWS Config を有効化し、s3-bucket-versioning-enabled のみ有効化しています。

確認すること

  • S3 バケットをバージョニング無効で新規作成する(Config のログ出力先として作成)
  • AWS Config を無効化し、作成したバケットのバージョニングを有効化する
  • AWS Config を再度有効化する

S3 バケットをバージョニング無効で新規作成する

もちろん記録されている。

Config レコーダーと配信チャンネルの削除

Config レコーダーの削除

以下コマンドで確認したレコーダーの name を利用して削除する。

aws configservice describe-configuration-recorders
{
    "ConfigurationRecorders": [
        {
            "name": "default",
            "roleARN": "arn:aws:iam::xxxx:role/aws-service-role/config.amazonaws.com/AWSServiceRoleForConfig",
            "recordingGroup": {
                "allSupported": false,
                "includeGlobalResourceTypes": false,
                "resourceTypes": [],
                "exclusionByResourceTypes": {
                    "resourceTypes": [
                        "AWS::IAM::Policy",
                        "AWS::IAM::User",
                        "AWS::IAM::Role",
                        "AWS::IAM::Group"
                    ]
                },
                "recordingStrategy": {
                    "useOnly": "EXCLUSION_BY_RESOURCE_TYPES"
                }
            },
            "recordingMode": {
                "recordingFrequency": "CONTINUOUS",
                "recordingModeOverrides": []
            }
        }
    ]
}
aws configservice stop-configuration-recorder --configuration-recorder-name default
(出力なし)

以下コマンドで recording false になっていれば OK

aws configservice describe-configuration-recorder-status
{
    "ConfigurationRecordersStatus": [
        {
            "name": "default",
            "lastStartTime": "2024-10-22T05:01:12.642000+00:00",
            "lastStopTime": "2024-10-22T05:12:53.607000+00:00",
            "recording": false,
            "lastStatus": "SUCCESS",
            "lastStatusChangeTime": "2024-10-22T05:01:23.067000+00:00"
        }
    ]
}

配信チャネルの削除

以下コマンドで確認した配信チャネルの name を利用して削除する。

aws configservice describe-delivery-channels
{
    "DeliveryChannels": [
        {
            "name": "default",
            "s3BucketName": "config-bucket-20241022"
        }
    ]
}
aws configservice delete-delivery-channel --delivery-channel-name default
(出力なし)

以下コマンドで DeliveryChannels が空であれば OK

aws configservice describe-delivery-channels
{
    "DeliveryChannels": []
}

リソースの変更

作成したバケットのバージョニング有効化する。

ついでにもう1つバケット作っておく。

AWS Config を再度有効化する

14:20 頃に有効化しましたが、CloudTrail イベントからバージョニングの有効化が拾われています。

無効化中に新規作成したバケットも記録されています。
(記録されているというか Config を新規に有効化した時同様、現時点のリソースを検出している感じでしょうか。)

バケット作成イベントも拾われているので、無効化中に何があったのかの追跡はできそうです。

バージョニングを変更すると 設定変更 として記録されました。
Config 無効化中にバージョニングを変更した方は 設定変更 として記録されていませんでしたので、ここが大きな差分になりそうです。

CloudTrail イベントについては、Chrome の開発者ツールで見てみると、CloudTrail の LookupEvents API から取得していました。
なのでタイムライン上の CloudTrail イベントについては 90 日より前の情報は見れなさそうですね。90 日より前に関しては CloudTrail 証跡を取得していない限り追跡できなくなります。

Discussion