Django存储:需要通过身份验证的方式从谷歌云存储读取静态文件



我正在尝试使用服务帐户密钥从GCP存储读取静态文件。问题是,虽然大多数请求都是经过身份验证的django存储,但有些请求是公开的。

开发者控制台:网络选项卡

正因为如此,我得到了一个坏的Django管理员界面。

破碎的Django管理UI

这是我在settings.py文件中的静态文件设置。

STATIC_URL = "/static/"
if DEPLOYED_URL:
DEFAULT_FILE_STORAGE = "storages.backends.gcloud.GoogleCloudStorage"
STATICFILES_STORAGE = "storages.backends.gcloud.GoogleCloudStorage"
GS_BUCKET_NAME = env("GS_BUCKET_NAME")
GS_CREDENTIALS = service_account.Credentials.from_service_account_info(
json.loads(get_secret(PROJECT_NAME, "service_account_json"))
)
GS_DEFAULT_ACL = "projectPrivate"

我的限制是我有Fine-grained: Object-level ACLs enabled存储桶,不能对其进行公共访问。

PS:由于项目有限制,我不能使用公共bucket。除了使用CCD_ 3封装之外的替代方式也受到赞赏。唯一的条件是读取应该经过身份验证,而不是公开的。

在撰写本文时,它显然是一个与django存储相关的开放漏洞,但在AWS上。但在进一步检查中,类似的事情正在GCP上发生。

我已经使用whiteoise部署了我的应用程序来克服这个错误,并在GCP云上运行了我的程序。

最新更新