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
截至 2021 年 4 月 12 日,CloudTrail 不会记录调用的对象密钥或路径DeleteObjects。
如果您使用 S3 控制台删除对象,它始终会调用DeleteObjects.
如果您想访问对象键进行删除,您将需要使用DeleteObject(减号s)删除单个文件。aws s3 rm s3://some-bucket/single-filename这可以通过 AWS CLI ( ) 或直接 API 调用来完成。
这是我的设置。
有关在控制台中设置 CloudTrail 的详细说明。设置 CloudTrail 时,请仔细检查这 2 个选项。
您正在记录 S3 写入。您可以对所有 S3 存储桶或仅对您感兴趣的存储桶执行此操作。您也不需要启用读取日志记录来回答这个问题。

如果您对 S3 写入日志记录进行了更改,您可能需要等待一段时间。如果你还没有吃早餐、午餐、小吃或晚餐,现在就是好时机。
如果您使用的默认 CloudWatch 日志组与我上面使用的相同,则此CloudWatch Insight Logs 搜索链接应该适合您。
该查询将向您显示所有 S3 DeleteObject 调用。如果链接不起作用
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 个事件。
| 归档时间: |
|
| 查看次数: |
11071 次 |
| 最近记录: |