三个月前我问过this question,但我仍在寻找答案
我获得了客户端中间件-但是我不希望出现用户意外或恶意删除其他用户资源的情况。
如何在S3上保护资源,以便用户只能删除其资源,而不能删除任何其他用户的资源?
非常感谢
答案 0 :(得分:1)
在这种情况下,不可能将S3限制为您的应用程序用户(非AWS用户),因为S3没有关于任何此类特定用户的概念。从S3删除内容的不是您的用户,而是您的应用程序本身,无论它是在EC2还是Lambda上运行,您都需要为其指定一个IAM角色,以便它实际上可以执行此操作。
没有IAM配置可以为您提供帮助,因为您可以允许EC2实例/ Lambda删除它,也可以不删除它。但这是相同的EC2 / Lambda,无论哪个用户发起了请求。
这里唯一的选择是通过应用程序本身来保护它。在数据库中存储用户及其S3内容之间的映射,并在启动任何删除请求时执行应用程序级别检查。如果您正确配置了应用程序,那么某人删除他人内容的唯一方法是访问其账户凭证(或具有S3管理权限的AWS账户)。而且,如果某人可以假冒其他人,则AWS所提供的保护也无济于事(也许除了S3 MFA删除保护之外,但不适用于此类情况)。
可行的方法是考虑到这一方面,为您的应用程序创建严格的测试用例,以最大程度地减少应用程序中潜在错误的可能性。
还有其他一些建议/最佳实践,可以减少恶意/意外删除的发生。