【发布时间】:2020-05-10 13:32:59
【问题描述】:
我开发了一个 react native 应用程序,使用 AWS Amplify 来支持后端(DynamoDB、S3)。该应用的所有用户都必须使用 Auth.signIn() 登录,并且是用户池的一部分。
进入后,他们可以开始通过应用将视频上传到 S3,或在应用中查看位于 PUBLIC 的 S3 存储桶中的视频。
我使用 S3 视频的路径 (https://myS3bucket....) 作为视频的源 URL。但是,只有当存储桶公开时,这些视频才在我的应用程序中可见。任何其他设置(受保护/私人)并且没有视频可见。我怎样才能使它更安全?
【问题讨论】:
-
存储桶不需要公开。您可以在私有存储桶中拥有公共文件,这应该仍然有效。但是,如果您想保护文件以确保只有某些用户可以看到它们,您将需要您的服务器充当文件的代理,而不是提供对它们的直接 S3 访问。
-
是的。您需要为将授予临时 URL 的文件创建
Pre-Signed URLs,该临时 URL 在您指定的时间内有效。我猜这应该对你有帮助。 -
@Panther URL 需要无限期可见。 S3 存储桶中的视频需要随时可供应用用户观看
-
我希望您将视频文件限制为只能由已登录的用户访问。在这种情况下,拥有一个开放的 url 将导致任何人无需您的应用即可获得访问权限。最好的方法是保护它并根据需要生成。您也可以在对象级别执行 ACL,但不推荐。
-
@Panther 没错。现在任何人都可以访问该 URL。我需要将访问权限限制为仅登录的用户(通过 Auth.signIn() 或在我的用户池中)。这就是我需要帮助的地方。
标签: reactjs amazon-web-services react-native amazon-s3 aws-amplify