DeleteObject 的 AWS S3 日志?
AWS S3 log for DeleteObject?
如何使用 CloudTrail 或 CloudWatch 等 AWS 服务来检查哪个用户执行了事件 DeleteObject
?
我可以使用 S3 事件向 SNS 发送删除事件,以通知电子邮件地址特定文件已从 S3 存储桶中删除,但该消息不包含执行此操作的用户名.
我可以使用 CloudTrail 将与 S3 存储桶相关的所有事件记录到另一个存储桶,但我测试并记录了很多细节,只有事件 PutObject
而不是 DeleteObject
.
是否有任何简单的方法来监控 S3 存储桶以找出哪个用户删除了哪个文件?
Upate 19 Aug
根据 Walt 在下面的回答,我能够记录 DeleteObject
事件。但是,我只能获取 PutObject
的文件名 (requestParameters.key
),而不能获取 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
这是我的设置。
Detail instructions on setting up CloudTrail in the console. 在设置 CloudTrail 时仔细检查这两个选项。
您正在记录 S3 写入。您可以对所有 S3 存储桶或只对您感兴趣的存储桶执行此操作。您也不需要启用读取日志记录来回答这个问题。
并且您正在向 CloudWatch Logs 发送事件
如果您更改了 S3 写入日志记录,您可能需要稍等片刻。如果您还没有吃过早餐、午餐、点心或晚餐,现在是个好时机。
如果您使用与我上面相同的默认 CloudWatch 日志组,此 link 至 CloudWatch Insight Logs search 应该适合您。
这是一个将向您显示所有 S3 DeleteObject 调用的查询。如果 link 不起作用
- 已进入 CloudWatch 控制台。
- Select 左侧的日志-> 见解。
- 输入您在上面指定的 "Select log group(s)" 的值。
- 在查询字段中输入此内容。
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 个事件。
截至 2021 年 4 月 12 日,CloudTrail 不记录 DeleteObjects
个调用的对象键或路径。
如果您使用 S3 控制台删除对象,它总是调用 DeleteObjects
。
如果要访问对象键以进行删除,则需要使用 DeleteObject
(减去 s
)删除单个文件。这可以通过 AWS CLI (aws s3 rm s3://some-bucket/single-filename
) 或直接 API 调用来完成。
如何使用 CloudTrail 或 CloudWatch 等 AWS 服务来检查哪个用户执行了事件 DeleteObject
?
我可以使用 S3 事件向 SNS 发送删除事件,以通知电子邮件地址特定文件已从 S3 存储桶中删除,但该消息不包含执行此操作的用户名.
我可以使用 CloudTrail 将与 S3 存储桶相关的所有事件记录到另一个存储桶,但我测试并记录了很多细节,只有事件 PutObject
而不是 DeleteObject
.
是否有任何简单的方法来监控 S3 存储桶以找出哪个用户删除了哪个文件?
Upate 19 Aug
根据 Walt 在下面的回答,我能够记录 DeleteObject
事件。但是,我只能获取 PutObject
的文件名 (requestParameters.key
),而不能获取 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
这是我的设置。
Detail instructions on setting up CloudTrail in the console. 在设置 CloudTrail 时仔细检查这两个选项。
您正在记录 S3 写入。您可以对所有 S3 存储桶或只对您感兴趣的存储桶执行此操作。您也不需要启用读取日志记录来回答这个问题。
并且您正在向 CloudWatch Logs 发送事件
如果您更改了 S3 写入日志记录,您可能需要稍等片刻。如果您还没有吃过早餐、午餐、点心或晚餐,现在是个好时机。
如果您使用与我上面相同的默认 CloudWatch 日志组,此 link 至 CloudWatch Insight Logs search 应该适合您。
这是一个将向您显示所有 S3 DeleteObject 调用的查询。如果 link 不起作用
- 已进入 CloudWatch 控制台。
- Select 左侧的日志-> 见解。
- 输入您在上面指定的 "Select log group(s)" 的值。
- 在查询字段中输入此内容。
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 个事件。
截至 2021 年 4 月 12 日,CloudTrail 不记录 DeleteObjects
个调用的对象键或路径。
如果您使用 S3 控制台删除对象,它总是调用 DeleteObjects
。
如果要访问对象键以进行删除,则需要使用 DeleteObject
(减去 s
)删除单个文件。这可以通过 AWS CLI (aws s3 rm s3://some-bucket/single-filename
) 或直接 API 调用来完成。