ruby-on-rails-4 - 如何限制特定人员对 Amazon S3 文件的访问?

标签 ruby-on-rails-4 amazon-s3

我开发了一个 SaaS 应用程序,创作者可以在其中创建群组并邀请其他人加入他们的群组共享文件、聊天等。只有特定组内的人员才能访问该组的文件。 其他组的人员不得访问非其组的文件。

当然,所有文件权限都应设置为“私有(private)”,即互联网的匿名用户不应搜索/可见/访问它们,因为这些文件中的信息仅供个人使用。

我是 Amazon S3 新手,不知道如何实现它...我应该只创建 1 个主存储桶吗?或者为每个组创建一个新的亚马逊存储桶?

最佳答案

不建议使用 AWS Identity and Access Management (IAM) 来存储应用程序用户。应用程序用户应保存在单独的数据库(或 LDAP、Active Directory 等)中。

因此,创建“每个组一个存储桶”是不可行的,因为无法为您的应用程序用户分配 Amazon S3 内的权限。

更好的方法是管理应用程序中的权限。当用户请求访问文件时,应用程序可以确定是否应该允许他们访问。如果允许,应用程序可以生成预签名 URL

预签名 URL 允许访问存储在 Amazon S3 上的私有(private)对象。它是一种保证对象安全的方法,同时授予对特定对象的临时访问权限。

列出可用文件时,您的应用程序将生成包含预签名 URL 的链接。然后,当用户单击该链接时,他们可以访问该文件。然后,经过一定时间(例如 10 分钟)后,该链接将不再起作用。因此,如果用户与其他人共享链接,该链接可能会超时。

参见:Creating a pre-signed URL in Ruby

关于ruby-on-rails-4 - 如何限制特定人员对 Amazon S3 文件的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30864909/

相关文章:

caching - 使用 CloudFront 和 S3 进行 CORS header 缓存

amazon-web-services - 在 S3 上使用 https 托管 SPA 或静态网站的最便宜方式

node.js - AWS S3 使用 URL 获取对象

ruby-on-rails - 搜索项目所有 gem 源代码的最佳方式

ruby-on-rails - 子文件夹和关系中的 Rails 模型

ruby-on-rails - 使用 devise gem 时,浏览器关闭时用户自动注销

c# - 如何向上传到 Amazon S3 的图像添加 Cache-Control HTTP header ?

ruby-on-rails - 您已经激活了 spring 1.3.6,但是您的 Gemfile 需要 spring 1.3.3。 ( gem ::加载错误)

javascript - Rails will_paginate 无休止的滚动,带有一个删除前 3 个项目的数组

python - 运行 uploader 脚本时的不同结果