AWS S3用户策略修改后默认ACL私有问题求助
先明确:IAM用户策略的Resource字段修改后恢复,却还是影响默认上传ACL,说明问题不在IAM策略本身,得从S3桶的基础设置入手,按以下步骤排查:
检查桶的默认对象权限设置:
进入S3控制台,找到目标桶的「权限」标签,点击「访问控制列表(ACL)」,拉到「默认对象权限」区域,看是否被改成了「私有」。如果之前是设置为「公共读」,改回即可。另外,上传文件时的控制台默认选项也可能被改动,上传页面里的「权限设置」要确认是不是你需要的ACL选项。检查桶级公共访问阻止设置:
在桶的「权限」标签里找「公共访问设置」,查看四个阻止选项是否有开启的。尤其是「阻止新的公共 ACL 和上传时的公共访问」如果开启,会强制将上传的对象设为私有,即使你选了公共ACL。如果是这个原因,关闭对应选项即可(注意评估安全风险)。确认桶策略是否有冲突:
检查桶的「权限」标签下的「桶策略」,看是否有拒绝公共访问的语句,或者覆盖了对象的ACL权限。比如如果有"Effect": "Deny"且涉及s3:PutObjectAcl的策略,会导致无法设置公共ACL。排查权限边界或组织SCP限制:
如果你的IAM用户有权限边界,或者所在AWS组织有服务控制策略(SCP),可能限制了s3:PutObjectAcl动作。检查用户的「权限边界」设置,以及组织的SCP规则,确认没有禁止设置公共对象ACL的权限。
另外要注意:IAM策略控制的是用户能执行哪些S3动作,而对象的默认ACL是S3桶本身的设置,两者是独立的。之前的策略修改可能只是巧合触发了你没注意到的桶设置变更,或者控制台操作时误改了默认选项。
内容的提问来源于stack exchange,提问作者Aeton

