繁体   English   中英

面向经过身份验证的用户的 Amazon Web Service (AWS) 私有存储

[英]Amazon Web Service (AWS) Private Storage For Authenticated Users

我的项目流程:

  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 Authentication & AWS 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 的东西也很陌生。 请指导我通过,非常感谢。

应该使用亚马逊S3斗政策,也不应该把S3权限的用户自己。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM