适用于DeleteObject的AWS S3日志?

时间:2019-08-15 19:41:21

标签: amazon-web-services amazon-s3 amazon-cloudwatch amazon-cloudwatchlogs amazon-cloudtrail

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

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

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

是否有任何简便的方法来监视S3存储桶以找出哪个用户删除了哪个文件?

  

8月19日更新

根据Walt的回答,我得以记录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 |

其他人似乎遇到了相同的问题,AWS正在努力解决:https://forums.aws.amazon.com/thread.jspa?messageID=799831

2 个答案:

答案 0 :(得分:1)

这是我的设置。

Detail instructions on setting up CloudTrail in the console.设置CloudTrail时,请仔细检查这两个选项。

您正在记录S3的日志。您可以对所有S3存储桶或仅对您感兴趣的一个存储桶执行此操作。您也无需启用读取日志记录即可回答此问题。 enter image description here

您正在将事件发送到CloudWatch Logs enter image description here

如果您对S3写日志进行了更改,则可能需要稍等片刻。如果您现在没有早餐,午餐,点心或晚餐,那将是个好时机。

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

这是一个查询,将向您显示所有S3 DeleteObject调用。如果链接无效

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

如果在最近30分钟内有任何CloudTrail S3删除对象调用,将显示最近20个事件。

答案 1 :(得分:0)

截至 2021/04/12,CloudTrail 不会记录 DeleteObjects 调用的对象键或路径。

如果您使用 S3 控制台删除对象,它总是调用 DeleteObjects

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