0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon S3 DeleteObjects API の結果が、CloudTrail証跡ログに記録されているのか試してみた

Posted at

はじめに

2025/6/12 にAWS CloudTrail(以下、CloudTrail 表記のみ)にアップデートがありました。

タイトルを直訳すると、Amazon S3 DeleteObjects API のロギングを強化したとのことです。

個人的に興味のあるアップデートでしたので、実際に試してみたことを書いていきます。

本記事は、筆者個人の見解、個人利用の範囲で試した結果です。検証不十分な箇所もあると思いますので、参考程度に留めてください。内容に間違い等がありましたらご指摘いただけますと幸いです。

アップデート概要

これまでは、DeleteObjects API 呼び出しを使用して複数の S3 オブジェクトを削除すると、CloudTrail は DeleteObjects API 呼び出しを単一のイベントとしてログに記録し、呼び出したユーザと削除されたオブジェクトについては記録されていませんでした。今回の更新で、これらが記録されるようになりました。

これまで本当に削除されたオブジェクトは記録されていなかったのか?

削除されたオブジェクト情報をログに記録しないなんてそんな…と思っていたのですが、そもそも、S3オブジェクトを削除する際のAPIは、

  • DeleteObject
  • DeleteObjects

の2種類あります。DeleteObjectは単体のオブジェクトを削除する際に使うAPI、DeleteObjectsが複数オブジェクトを削除する際に使うAPIです。DeleteObjectでは削除されたオブジェクトを記録していたようですが、DeleteObjectsの方は削除されたオブジェクトを記録する仕様ではなかったようです。

CloudTrail証跡への記録を試してみた

実際に、DeleteObject 及び DeleteObjects の実行を、CloudShell から試しみました。

今回の環境

前提条件として、以下については割愛させていただきます。

  • S3バケットの作成手順
  • CloudTrailの証跡取得設定手順・証跡設定削除手順
  • Amazon Athena へのテーブル設定

証跡取得用S3バケット(aws-cloudtrail-logs-trailtest2025061201)と、今回のテスト用S3バケット(s3deleteobjectapitest-2025061201)も作成しました。

image.png

CloudTrail証跡に管理イベントとデータイベントを記録するよう設定しました。なお、今回は検証のため、暗号化などは設定していません(検証が終わり次第、証跡記録は削除します)。

image.png

image.png

オブジェクトの単体削除

AWS CLI を使って削除します。s3 rms3api delete-object でログ内容に違いが無いか、確認しました。

s3 rm

image.png

image.png

s3api delete-object

s3api delete-objectの方はコマンドに問題なければ、何も返さないようです。test2.txt は削除されていました。

image.png

Athena でログ確認

s3 rm で削除した test1.txt は、eventname がDeleteObjectで記録されていました。ちなみに、s3 rm で削除したオブジェクトは、useragent列にcommand#s3.rm(以下図の赤枠)、s3api delete-objectで削除したオブジェクトは、command#s3api.delete-object(以下図の青枠)と書かれていました。

※test1.txt をs3 rms3api delete-objectで何度か削除したので、ログが見づらくなってしまい恐縮です。

スクリーンショット 2025-06-17 001152.png

image.png

s3api delete-objectで削除した test2.txt もeventname がDeleteObjectで記録されていました。

スクリーンショット 2025-06-16 002040.png

スクリーンショット 2025-06-16 002102.png

オブジェクトの一括削除

AWS CLI から s3api delete-objects で一括削除した場合、マネジメントコンソールから一括削除した場合、2パターン実施しました。

マネジメントコンソールから一括削除

スクリーンショット 2025-06-15 233309.png

スクリーンショット 2025-06-15 233324.png

image.png

AWS CLI から削除

image.png

image.png

Athena でログ確認

ログを確認したところ、DeleteObjectsのログはありましたが、その行に削除されたファイルが書かれているのではなく、DeleteObjectの実行結果が複数行に分かれて書かれていました。また、マネコンからの一括削除とAWS CLI からの一括削除で、ログの出方の違いは、useragent が違うくらいで、大きな差はありませんでした。

スクリーンショット 2025-06-16 005930.png

スクリーンショット 2025-06-16 005808.png

image.png

ちなみに、DeleteObjectsに紐づくDeleteObjectは、additionaleventdata列に"parentRequestID"が書かれており、それと紐づかれているように見受けられました。DeleteObjectsの requestid列に同じ文字列がありました。実行時間(eventtime)も同じため、関連するイベントと思われます。

image.png

image.png

最後に

アップデート前のDeleteObjectsのログ内容を見ることができれば、もっとしっくり来たのかもしませんが、それでも、オブジェクトが削除されたログを取得できるようになったのは良いアップデートだと思いました。また、ログからAPIがどう実行されたかも見ることができて、よい勉強になりました。

最後まで読んでいただき、ありがとうございました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?