托管 Web 应用程序的 EC2 实例是否需要任何角色(如 s3fullaccess),即使 S3 资源是公有的?



>场景:Web 应用程序托管在 EC2 上,其角色具有完全 S3 访问权限。现在在 Web 应用程序上,假设 S3 资源是作为链接嵌入到某个网页中的图像。

所以在这里,CORS开始发挥作用。因此,如果启用了资源的 CORS 和公共访问(我的意思是存储桶),那应该可以。

当已经授予公有访问权限时,向 EC2 实例添加角色有什么意义,资源已经是公有的。

因此,EC2 实例的角色不是多余的,也不是必需的。有人可以确认或建议正确的使用权限吗?

(我需要要求澄清,因为很少有关于 StackOverflow 的建议提到需要 EC2 的角色。

首先,我应该提到,如果可能的话,应该避免使用AmazonS3FullAccess策略。它授予在 Amazon S3 中执行任何操作的权限,包括删除所有存储桶和对象!尽可能始终授予最低权限,仅授予必要的访问权限。

如果应用程序链接到公共对象,则您描述的方案不需要其他 S3 权限。

但是,许多应用程序不会公开所有文件。例如,假设该应用是照片存储/共享应用。人们希望将他们的照片保密,但能够在网页中查看它们。为此,该应用程序可以生成一个 Amazon S3 预签名 URL,该 URL 提供对 Amazon S3 中私有对象的临时访问。这样,可以在 HTML 页面上的<img>标记中引用对象,但保持私有。

创建预签名 URL 需要一组凭证,这些凭证至少对正在共享的 Amazon S3 对象具有读取访问权限。因此,应用程序必须接收这些凭证(通常通过 IAM 角色)。

如果文件是公共的,则无需向角色授予 s3fullaccess 权限 - public 就是公共;实际上,授予 s3fullAccess 会使您的应用程序安全性降低,因为您授予它超出运行所需的权限,这绝不是一个好主意。

相关内容

最新更新