如何使用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
答案 0 :(得分:1)
这是我的设置。
Detail instructions on setting up CloudTrail in the console.设置CloudTrail时,请仔细检查这两个选项。
您正在记录S3的日志。您可以对所有S3存储桶或仅对您感兴趣的一个存储桶执行此操作。您也无需启用读取日志记录即可回答此问题。
如果您对S3写日志进行了更改,则可能需要稍等片刻。如果您现在没有早餐,午餐,点心或晚餐,那将是个好时机。
如果您使用的是与我上面相同的默认CloudWatch日志组,则指向CloudWatch Insight Logs search的链接应该适合您。
这是一个查询,将向您显示所有S3 DeleteObject调用。如果链接无效
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 调用来完成。