我正在尝试使用服务帐户密钥从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云上运行了我的程序。