在医疗保健应用程序中使用 s3,专用链接

Using s3 in a healthcare application, private links

我们开发了一个基于 rails 的医疗保健应用程序。配置我们的 s3 实现以便只有经过身份验证的用户才能访问图像的最佳方法是什么?

Documentation 开始,您应该使用 Amazon 的 "canned" ACL 之一。

A​​mazon 接受以下标准 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

想要 post 这个问题的更新答案,因为 S3 API 自 2015 年以来发生了(轻微的)变化。这是 link 到 updated ACL section S3 文档。此外,上述答案反映了 Ruby SDK 的使用,并非每个人都使用。

罐装 ACL 是 S3 支持的预定义授权,具有特定的被授予者和适当的权限。可以通过 SDK 发送预制 ACL,如以上答案所示,或者在 HTTP 请求中使用 x-amz-acl 请求 header 获取新资源,或者使用请求 header 或 body 现有资源。

固定的 ACL 如下。除非另有说明,否则存储桶所有者除了列出的其他权限外还具有 FULL_CONTROL

  • 私有:没有其他用户被授予访问权限(默认)
  • public-read:AllUsers 组获得 READ 访问权限
  • public-read-写入:AllUsers 组获得 READWRITE 访问权限(不推荐)
  • aws-exec-read:Amazon EC2 获得 READ 访问 GET Amazon 机器映像(捆绑包)
  • authenticated-read:AuthenticatedUsers 组获得 READ 访问权限
  • bucket-owner-read:存储桶所有者获得 READ 访问权限。创建桶时被忽略
  • bucket-owner-full-control:object 和存储桶所有者都获得 FULL_CONTROL 超过 object。创建桶时被忽略
  • log-delivery-write:LogDelivery 组获得 WRITEREAD_ACP 权限

文档中还指出:您只能在请求中指定一个固定 ACL