【发布时间】:2018-03-20 03:02:16
【问题描述】:
我们开发了一个基于 Rails 的医疗保健应用程序。配置我们的 s3 实现以便只有经过身份验证的用户才能访问图像的最佳方法是什么?
【问题讨论】:
标签: ruby-on-rails security amazon-s3 privacy
我们开发了一个基于 Rails 的医疗保健应用程序。配置我们的 s3 实现以便只有经过身份验证的用户才能访问图像的最佳方法是什么?
【问题讨论】:
标签: ruby-on-rails security amazon-s3 privacy
从Documentation,您应该使用Amazon 的“罐装”ACL 之一。
亚马逊接受以下预设 ACL:
:private
:public_read
:public_read_write
:authenticated_read
:bucket_owner_read
:bucket_owner_full_control
您可以在创建存储桶时指定 ACL 或稍后更新存储桶。
# at create time, defaults to :private when not specified
bucket = s3.buckets.create('name', :acl => :public_read)
# replacing an existing bucket ACL
bucket.acl = :private
【讨论】:
想要发布此问题的更新答案,因为自 2015 年以来 S3 API 发生了(轻微)变化。这是 S3 文档的updated ACL section 的链接。此外,上面的答案反映了 Ruby SDK 的使用,并不是每个人都使用它。
标准 ACL 是 S3 支持的预定义授权,具有特定的被授权者和权限。罐头 ACL 可以通过 SDK 发送,如上面的答案所示,或者在 HTTP 请求中使用 x-amz-acl 请求标头用于新资源,或使用请求标头或正文用于现有资源。
标准 ACL 如下。除非另有说明,否则存储桶所有者除了列出的其他权限外,还拥有FULL_CONTROL:
READ 访问权限READ 和WRITE 访问权限(不推荐)READ 访问 GET 一个 Amazon 系统映像(包)READ 访问权限READ 访问权限。创建存储桶时忽略FULL_CONTROL。创建存储桶时忽略WRITE 和READ_ACP 权限文档中也提到:您只能在请求中指定一个罐装 ACL
【讨论】: