[小ネタ] AWS Configのリソース記録は後追いでも記録してくれる
こんにちは。サービス開発室の武田です。
前置き
AWS Configの検証をしていた時の話なのですが、Config記録を停止中にIAMロールを削除しました。削除後、Configのページを見ていて削除が記録されず、「まぁそりゃそうか」とその場では思っていました。
試しにAIさんにも聞いてみたら、次のような回答でした。
- プロンプト
AWSにおいて、AWS Configの記録を停止中にリソースを削除しました。
その後Configを再開しましたが、削除したリソースがConfig上まだ残っていることになっています。
どうしたらConfig上リソースが削除されたことにできますか。
- 回答
AWS Config は、記録を停止している間に発生したリソースの変更(今回の場合は削除)を把握できないため、停止中に削除したリソースの構成情報はそのまま残ります。つまり、Recorder 再開後も「削除済み」となるイベントが記録されず、過去に記録された設定情報が残り続ける状態になります。
現時点で AWS Config は、手動で個別の設定アイテムを直ちに消去する仕組みを提供していません。したがって、以下の 2 つの選択肢になります。
そのまま保持期間が適用されるのを待つ
→ AWS Config の設定アイテムは、PutRetentionConfiguration で設定した保持期間(最短 30 日~最大 7 年)を過ぎると自動的に削除されます。もし今回のリソースの構成情報が古くなっていれば、保持期間終了後に表示から消えます。
保持期間を短縮する
→ PutRetentionConfiguration API を使って、設定アイテムの保持期間を短い期間(注意:最低30日)に設定すれば、それ以降は早いタイミングで古い構成情報(今回のような停止中に発生したレコードも含む)が自動削除されます。ただし、すでに記録されている他の設定情報にも影響するため、運用への影響を十分に検討する必要があります。
結論として、AWS Config 上で停止中に削除されたリソースの構成情報を即座に「削除済み」と反映させる方法はなく、上記のどちらかの対応(保持期間経過または保持期間短縮)で解消されます。
なお、今後はリソースの削除などの重要な変更があったとき、AWS Config による完全な履歴が必要な場合は、記録を停止しない、もしくは停止中に変更管理プロセスなどで別途対応するなど注意してください。
内容としては納得感のあるもので、「そういうもんだよね」とその場では思っていました。
後日確認したら削除が記録されていた
上記のようなやりとりをした数日後、あらためてAWS Configのページで確認してみると、なんと件のIAMロールの削除が記録されていました。「ん??」と思ってAWSドキュメントなど見ていたのですがそれっぽい記述は見つからず。
そういえば公式サイトにもFAQってあったよなということで確認することに。
その結果ついに次の記述を発見。
リソースへの API アクティビティによらない設定変更は AWS Config によって記録されますか?
はい。AWS Config では、まだ記録されていない変更がないかリソースの設定を定期的にスキャンし、そのような変更を記録します。このようなスキャンによって記録された CI のメッセージには、[relatedEvent] フィールドがありません。記録済みの状態とは異なる最新の状態のみが選択されています。
Configって定期的にリソースのスキャンしているんですね!いわれてみればCloudTrailに定期的にアクセスするAPI記録残ってますね。あれってそういうことかぁ……。
まとめ
ということで、Config停止中に行った操作であっても、ちゃんと記録してくれることがわかりました。とはいえ、記録は取り続けていたほうが好ましいため、むやみやたらに停止するのは避けましょう。