0

我是Amazon S3的新手。我需要一些S3存储解决方案的帮助。这是我的问题。如何仅允许特定用户访问Amazon S3上的内容

我在Amazon S3中创建了一个存储桶。现在,每个人都可以访问我的存储区网址(例如https://BUCKET_NAME.s3.amazonaws.com),他们可以查看存储区中的所有文件。我只想让我的移动应用用户能够查看/查看/下载存储桶中的文件。但是,如果我阻止文件/将存储区中的文件设置为私人文件,我的移动应用用户将无法查看他/她的文件。

所以问题:

  • 有没有一种办法,以确保到AWS S3访问?或者我如何只允许特定用户访问Amazon S3上的内容?是服务器端身份验证还是其他?

如果你有任何想法如何做,你可以给我一个例子吗?谢谢:)

注意:我使用的JavaScript解析SDK,AWS S3,EC2 AWS,弹性青苗和离子2角2

如果你认为我已经错过任何细节,请让我知道所以我可以添加它:)

回答

2

有多种选项可用于特定用户的安全访问。

  • 如果您正在使用AWS Cognito,您可以使用IAM策略使用AWS的JavaScript SDK直接访问权授予特定的桶和对象S3与AWS Cognito(或联合通过Cognito)认证后,暂时使用您收到的凭证从Angular应用程序。
  • 您也可以使用AWS CloudFront Signed UrlsSigned Cookies来保护对S3对象的访问。要访问内容,请使用后端端点(对于通过身份验证的用户),您可以生成一个签名URL或签名Cookie,Angular应用程序将使用该Cookie来通过CloudFront访问S3。
  • 另一个选择是从服务器端访问S3并返回文件(与其他方法相比,这会为您的服务器增加大规模的开销,因此不建议使用,除非您有特定的方案来动态修改文件或内容之前检索)
  • 您还可以使用AWS API网关作为S3的代理服务文件。这里适用10MB文件大小限制,因为API网关最多可以将文件传输至10MB。
+0

非常感谢你的答案。我真的很感激:)顺便说一下,您提到的'AWS CloudFront Signed Url'无法联系到。 – Antoni

+0

谢谢。修复了链接。 – Ashan

+0

嗨阿山,如果你不介意,你能帮我回答这个问题吗?谢谢:) https://stackoverflow.com/questions/46484880/how-to-upload-image-to-s3-bucket – Antoni

1

您可以通过S3存储桶访问特定的IAM角色。因此,创建一个新用户并将IAM策略附加到该用户。使用该角色配置您的Lambda。如果你想要,你可以根据每个用户类型创建多个角色(例如: - 对于移动用户唯一的角色,对于桌面用户的另一角色等)

请阅读更多关于如何限制Amazon S3 Bucket访问特定IAM角色here

+0

嗨Vijayanath,谢谢你的回答:)有没有可用于示例代码离子2与Angular 2?谢谢 – Antoni

相关问题