こんにちは、アプリケーションサービス部の遠藤です。
AWS CloudWatch Logs を運用する上で、最も恐ろしいことの一つが「重要なロググループの誤削除」です。
これまでは、IAM ポリシーによる権限制限などで対策するしかありませんでしたが、ついに標準機能として「削除保護(Deletion Protection)」が実装されました。本記事では、この機能の概要、設定方法、そして運用上のメリットを解説します。
1. ロググループの削除保護とは?
削除保護とは、その名の通りロググループが誤って、あるいは意図せず削除されるのを防ぐ機能です。
この機能が「有効」になっているロググループは、AWS マネジメントコンソール、AWS CLI、各種 SDK からの削除リクエストがすべて拒否されます。削除を実行するには、まず「削除保護を無効化」するという明示的なステップが必要になります。
主な特徴
- 誤操作の防止:
sam deleteやcdk destroy、あるいは CLI でのコマンドミスによる消失を物理的にガードします。 - コンプライアンスの強化: 監査や証跡管理のために長期間保存が必要なログの安全性を確保。
- 追加料金なし: この機能自体の利用にコストはかかりません。
2. 設定方法の比較
環境に合わせて、以下のいずれかの方法で設定可能です。
| 設定方法 | 手順・概要 |
|---|---|
| マネジメントコンソール | ロググループを選択 > アクション > 削除保護の編集 > 「削除保護」を有効化 |
| AWS CLI | put-log-group-deletion-protection 等の実行時に保護フラグを指定 |
| IaC (Terraform/CloudFormation) | 各リソースのプロパティに追加された deletion_protection 等の項目を true に設定 |
| AWS SAM / CDK | リソース定義のプロパティ(deletionProtectionEnabled 等)を true に設定 |
3. 具体的な設定例
AWS CLI での設定・確認
既存のロググループに対して削除保護を有効化したり、現在の状況を確認したりする際のコマンド例です。
■ 削除保護を有効にする
aws logs put-log-group-deletion-protection \
--log-group-identifier "/aws/lambda/my-function" \
--deletion-protection-enabled
4. 具体的な挙動
削除保護が有効なロググループを削除しようとすると、システムは以下のエラーを返し、削除をブロックします。
エラー表示例:
An error occurred (OperationAbortedException) when calling the DeleteLogGroup operation: Log group [LogGroupName] cannot be deleted because deletion protection is enabled.
5. 運用のベストプラクティス
本番環境は原則「有効」に 本番環境(Production)のアプリケーションログや、CloudTrail の出力先、VPC Flow Logs など、消失が許されないロググループには一括で適用を検討しましょう。
IaC での管理を推奨 手動設定は漏れが発生しやすいため、今回紹介した SAM や CDK のテンプレート内でデフォルト設定として組み込むのが最も安全です。
保持ポリシー(Retention Policy)との併用 削除保護を有効にすると、削除ミスは防げますがログは蓄積され続けます。コスト最適化のため、適切な保持期間を設定しておくことを忘れないようにしましょう。
まとめ
今回の「削除保護」の実装は、地味ながらも AWS 運用の安定性を大きく向上させる重要なアップデートです。
「大切なログが消えてしまった!」と後悔する前に、まずは重要なロググループの設定を確認し、削除保護を有効にすることをおすすめします。
参考リンク
アプリケーションサービス本部
2024年中途入社
アプリケーションサービス本部にてAWSを活用したアプリケーション開発に携わっています!
趣味はお酒とバンドです