AWS S3 日志删除对象?

Vie*_*iet 4 amazon-s3 amazon-web-services amazon-cloudwatch amazon-cloudtrail amazon-cloudwatchlogs

如何使用 CloudTrail 或 CloudWatch 等 AWS 服务来检查哪个用户执行了事件DeleteObject

我可以使用 S3 事件向 SNS 发送删除事件,以通知电子邮件地址特定文件已从 S3 存储桶中删除,但该消息不包含执行此操作的用户名

我可以使用 CloudTrail 将与 S3 存储桶相关的所有事件记录到另一个存储桶,但我进行了测试,它记录了许多详细信息,并且仅记录事件PutObject而不记录DeleteObject

有没有简单的方法来监控 S3 存储桶以找出哪个用户删除了哪个文件?

8 月 19 日更新

按照下面沃尔特的回答,我能够记录该DeleteObject事件。但是,我只能获取 的文件名 ( requestParameters.key ) PutObject,而不能获取 的文件名 ( ) DeleteObjects

| # | @timestamp | userIdentity.arn | eventName | requestParameters.key |
| - | ---------- | ---------------- | --------- | --------------------- |
| 1 | 2019-08-19T09:21:09.041-04:00 | arn:aws:iam::ID:user/me | DeleteObjects |
| 2 | 2019-08-19T09:18:35.704-04:00 | arn:aws:iam::ID:user/me | PutObject |test.txt |
Run Code Online (Sandbox Code Playgroud)

看起来其他人也遇到了同样的问题,AWS 正在解决这个问题:https://forums.aws.amazon.com/thread.jspa ?messageID=799831

dz9*_*902 6

截至 2021 年 4 月 12 日,CloudTrail 不会记录调用的对象密钥或路径DeleteObjects

如果您使用 S3 控制台删除对象,它始终会调用DeleteObjects.

如果您想访问对象键进行删除,您将需要使用DeleteObject(减号s)删除单个文件。aws s3 rm s3://some-bucket/single-filename这可以通过 AWS CLI ( ) 或直接 API 调用来完成。

  • 你能提供一些参考吗?非常烦人的是我无法从控制台跟踪 s3 删除对象操作 (3认同)
  • 看起来 CloudTrail 仍然没有记录通过“DeleteObjects”删除的对象键。在 https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudtrail-logging-s3-info.html 中,我发现以下句子:“CloudTrail 不会记录使用删除删除的密钥的密钥名称多个对象操作。” (2认同)

Wal*_*tDe 5

这是我的设置。

有关在控制台中设置 CloudTrail 的详细说明。设置 CloudTrail 时,请仔细检查这 2 个选项。

您正在记录 S3 写入。您可以对所有 S3 存储桶或仅对您感兴趣的存储桶执行此操作。您也不需要启用读取日志记录来回答这个问题。 在此输入图像描述

您正在将事件发送到 CloudWatch Logs 在此输入图像描述

如果您对 S3 写入日志记录进行了更改,您可能需要等待一段时间。如果你还没有吃早餐、午餐、小吃或晚餐,现在就是好时机。

如果您使用的默认 CloudWatch 日志组与我上面使用的相同,则此CloudWatch Insight Logs 搜索链接应该适合您。

该查询将向您显示所有 S3 DeleteObject 调用。如果链接不起作用

  1. 进入 CloudWatch 控制台。
  2. 选择左侧的“日志”->“见解”。
  3. 输入您在上面指定的“选择日志组”的值。
  4. 在查询字段中输入此内容。
fields @timestamp, userIdentity.arn, eventName, requestParameters.bucketName, requestParameters.key
| filter eventSource == "s3.amazonaws.com"
| filter eventName == "DeleteObject"
| sort @timestamp desc
| limit 20
Run Code Online (Sandbox Code Playgroud)

如果您在过去 30 分钟内有任何 CloudTrail S3 删除对象调用,则会显示最后 20 个事件。