如何为 S3 中上传的文件启用 AWS-S3-安全策略

How to enable AWS-S3-security policy for files uploaded in S3

我正在开发将客户的视频、pdf 和其他机密文档上传到 S3 存储桶的应用程序。

目前,客户可以在 videogular 组件(Angular 组件)中播放这些视频,并且可以在 PDF 组件(Angular 组件)中读取 PDF 文件。(Angular 组件)

我担心它的安全性。

我希望客户可以 play/read 只有他们的 video/pdf。 没有人可以下载/play/read这些东西。

1.) 如何实现?

2.) 哪些是我必须 enable/disable 在我的 S3 存储桶上的东西。 (S3 存储桶策略)

3.) 我们没有配置 IAM 角色。我们需要它吗?

我对此一无所知... 如果有人可以 guide/provide 一些有用的链接,那就太好了。

提前致谢。

我假设每个用户在您的 S3 存储桶中都有自己的文件夹。

1。 我会在后端处理文件夹和文件,并使用用户 ID 仅向每个用户显示他们应该看到的文件。

假设您的 S3 存储桶名为 inventory,而我的用户名是 ABC123,则应该有一个如下文件夹: s3://inventory/ABC123/ 。 要么 s3://inventory/(你自定义的用户id)/

我会根据用户 ID 在我的应用程序中创建 url 到 S3 存储桶。

并且当您向用户显示文件时,必须更改浏览器中的 url,这样他们就看不到文件的真实路径。

2.

  • 如果您需要访问以前版本的文件,您可以激活版本控制。
  • 访问请求日志。
  • 文件加密
  • 如果您担心费用,请标记

3。 (如果您指的是您的用户的 IAM 角色),如果您通过应用程序处理对 S3 存储桶的访问,则不需要它。

终于找到答案了

第一个问题的答案: @Cyrus 在他的回答中提到的是绝对正确的。除了那个答案我还想在里面补充几点。

正如他正确提到的...

when you show the files to your users, the url in the browser must be changed so they cannot see the real path to the file.

这给了我关于 CDN(内容分发网络)服务器 的提示。

最后,我们将选择 CDN-S3 组合

这意味着客户端只会暴露给 CDN url(s)。 (不是 S3 url(s))那些将是 预签名 URL(安全和临时 url。)

可以从这里阅读更多信息:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-urls.html

(2) 和 (3) 的答案:如@Cyrus 所述。