问题:假设用户上传高度机密的信息。这被放置在第三方存储服务器中。此第三方存储桶对 Web 应用程序使用不同的身份验证系统。确保只有用户或管理员才能访问文件 URL 的最佳实践是什么?
更多上下文: Django Web 应用程序正在 Google App Engine Flexible 上运行。Google Storage 用于通过 Django 提供静态文件和媒体文件。高度机密的信息是护照、法律合同等。
静态文件的提供方式相当不安全。该/static/存储桶是公共的,文件通过 django 的静态文件系统提供。这有效是因为
然而,对于媒体文件,我们需要用户特定的权限,如果用户 A 上传图像,则用户 A 可以查看它,工作人员可以查看它,但用户 B 和未经身份验证的用户在任何情况下都无法查看它。这包括他们是否有网址。
我的首选系统是,GCP 存储可以使用相同的 django 身份验证服务器,因此当浏览器请求时...google.storage..../media/user_1/verification/passport.png,我们可以检查该用户拥有哪些权限,将其与上传的用户 ID 进行比较,并决定是否显示 403 或实际文件。
此问题的行业标准/最佳实践解决方案是什么?
我是否可以使用服务帐户使两个存储桶只能由应用程序访问,并在内部确保仅当正确的用户正在查看页面时才共享链接?(有人喜欢静态,{用户或工作人员}喜欢媒体吗?)
我的问题,特别是(关于网络应用程序安全性):
media django google-app-engine google-cloud-storage google-cloud-platform