【问题标题】:Amazon Web Service (AWS) Private Storage For Authenticated Users适用于经过身份验证的用户的 Amazon Web Service (AWS) 私有存储
【发布时间】:2020-07-13 01:46:43
【问题描述】:

我的项目流程:

  1. 你去我的网站
  2. 您使用管理员设置的用户名和密码登录
  3. 您必须看到您的专用文件,您的帐户专用

我已经使用 Firebase(AuthenticationStorage)建立了基础。所以在 Firebase 我做了这个Storage Rules

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /assets/{userId}/{assetsId} {
            allow read;
    }
  }
}

插图存储:

assets/
|----user01/
|    |----user01.jpg
|----user02/
|    |----user02.jpg

基本上只有 user01 可以看到 user01.jpg 并且只有 user02 可以访问看到 user02.jpg 如果他/她登录



问题:

现在,我目前想尝试在 Amazon Web Services (AWS) 上重新制作这个项目。我目前正在使用AWS Cognito,据我了解等于Firebase AuthenticationAWS S3 Storage,据我了解等于Firebase Storage

我仍然对如何使用 AWS 进行开发感到困惑,但我认为如果用户登录,我已经设法获得 userId(或我认为在 AWS Cognito 中的 sub

我尝试使用https://awspolicygen.s3.amazonaws.com/policygen.htmlS3 Bucket Policy 重新创建Firabase Storage Rules,但没有像userId(或我认为在AWS Cognito 中的sub)这样的条件允许读取他/她的私人文件。

我是这个 Firebase 的新手,对 AWS 的东西也很陌生。请指导我,非常感谢。

【问题讨论】:

    标签: amazon-web-services firebase amazon-s3 firebase-storage amazon-cognito


    【解决方案1】:

    您不应使用 Amazon S3 存储桶策略,也不应将 S3 权限授予用户自己。

    相反,它应该按如下方式工作:

    • Amazon S3 存储桶应保持私有(无存储桶策略)
    • 当用户访问您的应用程序中想要显示或链接到其中一个 S3 文件的网页时,应用程序应该:
      • 验证用户是否有权访问文件
      • 如果是这样,生成一个Amazon S3 pre-signed URLs,它授予对私有对象的限时访问权限

    这样,应用程序决定访问权限,这在任何引用/链接到私有对象的页面上完成。生成预签名 URL 只需要几行代码,并且不需要需要 API 回调到 Amazon S3。

    例如:想象一个照片分享网站。默认情况下,照片应该是私密的(无法访问)。如果用户登录并想要在线查看照片,则生成 HTML 页面的应用程序将使用 <img src=...> 标记,但 URL 将是 预签名 URL。这意味着网络浏览器将在页面上显示图像。同样,如果有图片的下载链接,则 URL 应该是预签名的 URL。此外,用户可能会选择与其他用户分享图片。此类信息将保存在数据库中。当另一个用户想要查看共享图像时,应用程序将检查数据库,验证权限,然后提供预签名的 URL。这会将“所有权”从路径(存储图像的位置)转移到数据库中。

    我不是 Firebase 用户,所以我不知道它有什么功能,但以上是在 S3 中管理用户对私有文件的访问权限的推荐方式。

    【讨论】:

    • 我使用Amazon S3 pre-signed URLs PHP。我在我的网络主机上制作 PHP 以从我的 S3 存储桶中请求文件。通过反复试验,我设法做到了!非常感谢
    • 我现在对 env HOME 上的 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 感到困惑,我如何在主机上设置它?但是我发现您可以明确地向客户端error credentials 提供凭据,我将Route53 更改为S3,不确定它是否安全。
    • 对不起,我不知道你在问什么。随意创建一个包含更多详细信息的新问题。
    猜你喜欢
    • 2016-01-17
    • 1970-01-01
    • 2019-12-08
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2010-12-21
    • 1970-01-01
    相关资源
    最近更新 更多