如何根据网站用户在S3上添加非公开网站文件?

问题描述 投票:0回答:1

在我们的网站上,我们希望添加上传个人文件的可能性。这些文件应该是非公开的,并且可以选择与网站上的其他人共享。我曾经为另一个项目构建了类似的功能,在该项目中我将文件存储在服务器上的 MongoDB 实例中。这使我们能够为每个文件构建细粒度的可访问性规则。然而,对于这个项目,我们希望将文件存储在 Amazon S3 上。现在我想知道如何使用 S3 构建类似的可访问性规则。

我之前在S3上存储过文件,但那些只是公共文件。由于这些文件仅限于一个特定用户(或与这些文件共享的用户),我不确定如何使用 S3 来做到这一点。我在互联网上搜索,找到了一些有关定义用户策略的信息。然而,这些政策基于 S3 用户,而不是我的网站用户。所以我真的找不到执行此操作的标准方法(或者也许我正在寻找错误的单词)。

有没有一种方法可以要求 S3 上的文件提供特定的秘密(可能在 url 中)?或者还有其他标准方法可以实现这一目标吗?

amazon-web-services security amazon-s3
1个回答
3
投票

如果您对 S3 用于内容存储感到满意,您可以查看 AWS CloudFront CDN 和 API 来提供访问控制。 Cloud Front 很乐意使用 S3 存储桶作为私有源,并提供签名 URL 来授予临时访问权限。

您可以通过编程方式从指向 s3 中资源的代码生成一个 Cloudfront URL,它将强制执行您提供的策略。该 URL 根据各种标准(如

IpAddress
DateLessThan
)提供临时访问。这些可用于动态构造仅限于特定 IP(即当前用户 IP)的 url,并且仅在特定日期/时间之前有效。

摘自AWS文档:

A signed URL includes additional information, for example, an expiration date and time, that gives you more control over access to your content. This additional information appears in a policy statement, which is based on either a canned policy or a custom policy.

请参阅 AWS 文档:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html

© www.soinside.com 2019 - 2024. All rights reserved.