S3桶阻止特定扩展名文件上传策略失效问题求助
S3桶阻止特定后缀文件上传的策略错误分析及修正
问题所在
你的策略逻辑完全搞反了:
- 当前策略用
Effect: Deny+NotResource,实际效果是拒绝上传所有非.bat/.exe/.cmd/.sh后缀的文件,反而允许这四类文件上传,和你的需求正好相反。 - 原策略的资源路径只匹配桶根目录下的目标文件,无法覆盖子文件夹里的文件。
修正后的策略
调整逻辑为拒绝上传任意位置的这四类后缀文件,同时用通配符覆盖所有子层级:
{ "Version": "2012-10-17", "Id": "BlockRestrictedFileExtensions", "Statement": [ { "Sid": "DenyRestrictedFileUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::MY-BUCKET-NAME/**/*.bat", "arn:aws:s3:::MY-BUCKET-NAME/**/*.exe", "arn:aws:s3:::MY-BUCKET-NAME/**/*.cmd", "arn:aws:s3:::MY-BUCKET-NAME/**/*.sh" ] } ] }
关键说明
**通配符用来匹配桶内任意层级的子文件夹,确保不管文件传去哪个目录都会被拦截。- Deny策略优先级高于所有Allow策略,只要这个策略生效,任何用户都无法上传这四类文件。
- 记得把
MY-BUCKET-NAME替换成你实际的桶名称。
内容的提问来源于stack exchange,提问作者funcfunc
相关产品推荐
相关产品推荐

