AWS S3桶每2-6秒出现来源不明PUT请求排查求助
AWS S3存储桶被高频未知来源PUT写入的排查处置
问题背景
某us-east-1区域的S3存储桶被高频写入对象,写入间隔稳定在2-6秒,始终无法定位PUT请求的实际来源,无法通过常规方式暂停写入、清空并删除存储桶。
已完成的排查动作
- 已为目标存储桶开启CloudTrail,但对应日志中未记录请求的来源身份信息
- 最初怀疑静态网站托管配置触发自动写入,关闭该配置后请求仍未中断
- 尝试删除存储桶时被S3强制要求先清空存储桶,但因为写入频率太高,无法赶在新对象写入前完成全量清空
- 通过S3 Access Analyzer核验,确认存储桶未配置公开访问权限
- 已核验当前账号下不存在每2秒频率运行的关联进程,临时关闭CloudWatch告警排除健康检查类触发可能后,写入请求仍在持续
- 无法访问AWS官方论坛、暂未采购AWS付费支持服务,公开求助定位根因
观测到的请求日志样本
日志格式样例:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bucketname[05/Mar/2021:01:33:40 +0000] - svc:s3.amazonaws.com XXXXXXXXXXXXXXX REST.PUT.OBJECT 2021-03-05-01-33-40-1C3D198B880E8F3A "PUT /bucketname/2021-03-05-01-33-40-XXXXXXXXX HTTP/1.1" 200 - - 447 80 56 "-" "-" - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader s3.us-east-1.amazonaws.com TLSv1.2
实操排查&处置方案
- 优先校正CloudTrail采集配置:CloudTrail默认仅记录管理类操作,不会自动抓取S3数据类操作的明细。需要在CloudTrail控制台的事件数据模块,开启针对目标S3桶的数据事件追踪,重点采集
PutObject操作的调用身份、源IP、调用方ARN信息。从现有日志可见请求走了SigV4 AuthHeader鉴权流程,必然存在对应的身份实体,只是默认采集配置没有抓取到这类明细 - 临时阻断写入流量:给目标存储桶添加一条S3 Bucket Policy显式拒绝规则,拒绝所有未被你指定可信身份发起的
PutObject请求,该策略不需要等桶清空即可立即生效,先掐断高频写入流量,再逐步排查来源,无需反复和自动写入的节奏竞速清空桶 - 遍历IAM关联的密钥与角色:因为请求走了签名鉴权流程,在IAM控制台查看所有用户、服务角色的Access Key最后使用时间,重点匹配和写入时间戳对齐的活跃密钥,多数场景下这类高频写入来自之前临时创建的测试密钥、绑定在EC2/Lambda/容器服务上的残留凭证,被未清理的旧进程持续调用,不属于手动配置的定时任务
- 跳过“赶时间清空桶”的误区:如果确定不需要保留存储桶内容,在通过Bucket Policy阻断写入后,直接执行批量删除命令
aws s3 rm s3://你的桶名 --recursive一次性清空桶内对象,再执行删除桶操作即可,不需要卡时间差和写入速度竞争 - 匹配对象命名规则溯源:现有日志中的对象名采用固定时间戳+随机串的格式(
2021-03-05-01-33-40-1C3D198B880E8F3A),检索所有历史代码、运维脚本、云服务配置里的上传逻辑,不少这类场景来自未删除的残留配置,比如CloudWatch Logs订阅投递、S3访问日志存储位置配置错误、应用日志上传任务残留,会定时把日志片段写入目标桶
内容的提问来源于stack exchange,提问作者Cardsfan
相关产品推荐
相关产品推荐

