gpt4 book ai didi

python - 将 s3 文件限制为 Django 组用户

转载 作者:行者123 更新时间:2023-11-28 22:47:32 25 4
gpt4 key购买 nike

在 django-storages 第 3 方应用程序的帮助下,我的网络应用程序使用 Amazon S3 将所有媒体文件存储在我的 djagno 网络应用程序中。

我的数据库处理文件夹和文件层次结构,每个用户只能看到属于他的组的链接。

但是!没有权限访问 S3 上的其他文件夹。

例如:用户 1 : 组是 group1用户2:组是group2s3 链接:https://s3.amazonaws.com//media/group1/folder1/1.png

用户 1 将在应用内他的页面上看到这个。用户 2 不会看到此链接,但如果他试图访问此链接,则该文件没有权限,可以轻松下载。

我的目标是限制每个组的文件夹权限。

是否有基于我的 aws key 的自动解决方案?我迷路了……

最佳答案

编辑新解决方案:

Amazon SDK 提供预签名网址功能。有了这个,您可以仅为您的用户生成一个特定文件的临时 url。

所以用例场景是这样的。S3 图像仍然是私有(private)的。当用户请求他的图像时,您首先将所有链接传递给生成临时链接的签名处理程序。 (这些都设置为过期并且有足够的加密和保护,所以有人不可能劫持这样的链接)。

最终用户可以直接从亚马逊加载并在浏览器中查看文件,就像什么都没发生一样。

旧解决方案

另一个解决方法可能是将所有文件存储在 s3 中没有公共(public)访问。然后为您的应用程序创建 IAM 角色并授予该角色访问存储桶的权限。然后创建一个方法来读取您的应用程序中的 S3 文件,并在用户有权限的情况下将它们提供给用户。

简单的例子。

S3 文件路径

//media/group1/folder1/1.png

Request = MyWebMethod/GetFile?internalPath="folder1/1.png"

{

Int userId = customAuthentication.getUserId();

String CompletePath = "media/group"+userId+"/"+internalPath

var image = AwdSdkClient.getFileFromS3(CompletePath);

返回图片;

因此默认情况下,每个用户只能在他的组内请求文件。

一种更高级的方法,不是将文件实际提取到您的服务器,而是创建某种中值数据流管道到文件。 (我不是 Django 开发者,所以我不知道这是否可行)

关于python - 将 s3 文件限制为 Django 组用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26163851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com