amazon-web-services - 如何根据网站用户在 S3 上添加非公开网站文件?
问题描述
在我们的网站上,我们希望添加上传个人文件的可能性。这些文件应该是非公开的,并且可以选择与网站上的其他人共享。我曾经为另一个项目构建了一个类似的功能,其中我将文件存储在服务器上的 MongDB 实例中。这使我们能够为每个文件构建细粒度的可访问性规则。然而,对于这个项目,我们希望将文件存储在 Amazon S3 上。现在我想知道如何使用 S3 构建类似的可访问性规则。
我以前在 S3 上存储过文件,但那些只是公共文件。由于这些文件仅限于一个特定用户(或与文件共享的用户),我不确定如何使用 S3 做到这一点。我在互联网上进行了搜索,发现了一些有关定义用户策略的信息。然而,这些策略基于 S3 用户,而不是基于我的网站用户。所以我真的找不到这样做的标准方法(或者我正在寻找错误的词)。
有没有一种方法可以要求 S3 上的文件的特定秘密,可能在 url 中?还是有其他标准方法可以实现这一目标?
欢迎所有提示!
解决方案
如果您对用于内容存储的 S3 感到满意,您可以查看 AWS CloudFront CDN 和 API 以提供访问控制。Cloud Front 很乐意使用 S3 存储桶作为私有来源,并提供签名 URL 以授予临时访问权限。
您可以以编程方式从指向 s3 中资源的代码生成云端 URL,它将强制执行您提供的策略。该 url 提供基于各种标准(如IpAddress
和)的临时访问DateLessThan
。这些可用于动态构建限制为特定 IP(即当前用户 IP)的 url,并且仅在特定日期/时间之前有效。
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
推荐阅读
- python - 用 Python 写一个文件
- php - Codeigniter 'CSRF & AJAX' REPOERROR 403 中的调用模式
- html - 我无法成功使用“行垂直对齐”。引导程序/HTML
- javascript - useEffect 调用了两次
- python - python sqlite3 - 为什么参数标记不适用于列?
- android - Android App Crawler 不工作 -> Permission Denial 失败
- javascript - 返回数组javascript中的两个最高数字
- android - 结合 ObjectBox 的 @Entity 类和 kotlinx.serialization 会导致冲突
- c - 尝试在文件上实现 Prim 算法的分段错误
- php - PHP - 组织 MySQL 查询以创建条件表单的最有效方法