S3新存储桶将于明年4月全面默认禁止公开访问并停用ACL

AWS预计要对S3进行两项安全性变更,存储桶安全实践将自动在2023年4月开始生效,并会在数周内扩展到所有AWS区域。一旦该区域变更生效,该区域中所有创业公司建的存储桶,将会默认禁止S3公开访问,并且停用访问控制列表(ACL)。

官方提到,这两个选项早已经是控制台默认配置,也一直是推荐的最佳实践,而现在这些选项将会成为使用S3 API、S3 CLI、AWS SDK或AWS CloudFormation模板,所创建存储桶的默认选项。

S3存储桶和对象默认都是私密状态,AWS在2018年添加阻挡公开访问功能,并在2021年添加停用ACL的功能,提供用户更多控制权,并以AWS IAM政策作为替代方案。官方认为绝大多数应用程序,皆不需要用到这两个选项,希望用户能够以更谨慎的方式,创建拥有公开访问和ACL功能存储桶。

之后当用户需要使用两者之一,都需要手动调整,因此AWS提醒用户一定要检查程序代码、脚本、AWS CloudFormation模板和其他自动化设置。

阻挡所有公开访问功能,具体来说包含四个明细,而在2023年4月的变更,这4项都会默认打开,包括阻挡存储桶和对象通过新ACL授权的公共访问;阻挡存储桶和对象通过任何ACL授权的公共访问;阻挡存储桶和对象,通过任何公开存储桶或访问点政策授权的公共访问;最后则是阻挡存储桶和对象,通过任何公开存储桶或访问点政策授权的公开和跨账号访问。

在变更生效之后,尝试以存储桶政策或访问点政策,授权存储桶公开访问都会被拒绝,并且显示430访问拒绝错误,如果用户仍需要授给新存储桶公开访问权限,还是能以一般程序创建,只是需要调用DeletePublicAccessBlock来移除公开访问的阻挡限制。

而默认停用访问控制列表则会在创业公司建桶中,激活存储桶拥有者强制设置,这将会使存储桶ACL和对象ACL失效,并确保无论上传对象为何,存储桶拥有者都是对象的所有者。存储桶要激活ACL,需要在CreateBucket请求中,将ObjectOwnership参数配置成ObjectWriter,或是调用DeleteBucketOwnershipControls。