[アップデート] Amazon CloudWatch Logsのロググループに削除保護を設定できるようになりました
CloudWatch Logsロググループを誤って削除してしまうのが怖い
こんにちは、のんピ(@non____97)です。
皆さんはCloudWatch Logsロググループを誤って削除してしまうのが怖いなと思ったことはありますか? 私はあります。
従来、CloudWatch Logsのロググループの削除を防ぐためには、直接的に削除処理を拒否するIAMポリシーステートメントを追加したり、SCPで制限する必要がありました。
しかし、ロググループの規則性もなく大量のロググループがある場合、うっかりミスのためにそこまで対応するのは大げさです。
加えて、本当にロググループを削除したい場合は、一時的に制御用のポリシーを削除する必要がありました。
「CloudWAtch Logsのリソースポリシーで良い感じに制御できるのでは?」と思われた方もいらっしゃるかもしれないですが、CloudWatch Logsのリソースポリシーでサポートされているアクションはlogs:PutLogEventsとlogs:CreateLogStreamのみかつ、IAMユーザーやIAMロールからの操作をコントロールすることはできません。
Supported actions - Policy only supports logs:PutLogEvents and logs:CreateLogStream actions
Supported principals - Policy only applies when operations are invoked by AWS service principals (not IAM users, roles, or cross-account principals
Policy limits - An account can have a maximum of 10 policies without resourceARN and one per LogGroup resourceARNImportant
Resource policies with actions invoked by non-AWS service principals (such as IAM users, roles, or other AWS accounts) will not be enforced. For access control involving these principals, use the IAM policies.
要するにユーザーからのロググループの削除を制御できません。
今回、CloudWatch Logsのロググループに削除保護を設定できるようになりました。
これによって数クリックで勢いで誤って削除をしてしまうリスクを大幅に減らすことが可能です。
実際に試してみます。
やってみた
現在の状態確認
ロググループ一覧の確認をします。
ロググループ一覧で削除保護が有効になっているものを簡単に把握したいですよね。ロググループ一覧の設定から削除保護を有効化します。

この状態でロググループ一覧を確認すると、削除保護のカラムが表示され、ロググループごとの削除保護の有効/無効を簡単に確認できるようになりました。

削除保護の有効化
実際に削除保護を有効化します。

削除保護により、ロググループが意図せず削除されるのを防ぎます。この設定がオンになっている間は、ロググループを削除できません。と確認ウィンドウが表示されました。$LogGroupIdentifier の削除保護をオンにしてもよろしいですか?となってしまっているのが気になりますが、続行します。

削除保護が有効になりました。削除保護がオンになっていますね。

AWS CLIでも確認できました。
> aws logs describe-log-groups \
--log-group-name-prefix "/aws/chatbot/non-97-test"
{
"logGroups": [
{
"logGroupName": "/aws/chatbot/non-97-test",
"creationTime": 1714106242250,
"metricFilterCount": 0,
"arn": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/chatbot/non-97-test:*",
"storedBytes": 40783,
"logGroupClass": "STANDARD",
"logGroupArn": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/chatbot/non-97-test",
"deletionProtectionEnabled": true
}
]
}
削除保護が有効化の状態での削除
この状態でロググループを削除しようとします。

はい、削除保護が有効であるという理由でエラーになりました。

AWS CLIでも削除しようとしてみます。
> aws logs delete-log-group --log-group-name /aws/chatbot/non-97-test
An error occurred (InvalidParameterException) when calling the DeleteLogGroup operation: LogGroup has delete protection enabled. Disable delete protection before attempting to delete the resource.
はい、拒否されました。
削除保護の無効化
せっかくなので削除保護の無効化も試します。
> aws logs put-log-group-deletion-protection \
--log-group-identifier "/aws/chatbot/non-97-test" \
--no-deletion-protection-enabled
{
"logGroups": [
{
"logGroupName": "/aws/chatbot/non-97-test",
"creationTime": 1714106242250,
"metricFilterCount": 0,
"arn": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/chatbot/non-97-test:*",
"storedBytes": 40783,
"logGroupClass": "STANDARD",
"logGroupArn": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/chatbot/non-97-test",
"deletionProtectionEnabled": true
}
]
}
> aws logs describe-log-groups \
--log-group-name-prefix "/aws/chatbot/non-97-test"
{
"logGroups": [
{
"logGroupName": "/aws/chatbot/non-97-test",
"creationTime": 1714106242250,
"metricFilterCount": 0,
"arn": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/chatbot/non-97-test:*",
"storedBytes": 40783,
"logGroupClass": "STANDARD",
"logGroupArn": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/chatbot/non-97-test",
"deletionProtectionEnabled": false
}
]
}
はい、無効化されましたね。
誤って削除されるのを回避するために
CloudWatch Logsのロググループに削除保護を設定できるようになったアップデートを紹介しました。
誤って削除されるのを回避するために必須の機能ですね。特にRDSOSMetricsなど複数リソースで共通的に使用しているものでは有効化したいです。
この記事が誰かの助けになれば幸いです。
以上、クラウド事業本部 コンサルティング部の のんピ(@non____97)でした!







