google-cloud-storage - Firebase 存储:对 Internet 公开特定目录下的文件
问题描述
我想将特定目录下的所有文件发布到 Internet。
安全规则
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /public/{allPaths=**} {
allow read;
allow write: if request.auth != null;
}
}
}
如上所述编写安全规则后,当我打开云存储的浏览器时:
- 目录下的文件仍然设置为私有。
- 如果您查看每个文件的详细信息,您会发现没有发布任何公共 URL。
当我输入 时Authenticated URL
,您将被重定向到 Google 的登录页面。
我怎样才能解决这个问题?
解决方案
Firebase 安全规则仅控制谁可以通过 Firebase SDK 或 REST API 获取特定对象的 URL。如果您在 Firebase 控制台中检查对象 URL,您会看到一个格式的 URL,这可能是您正在寻找的内容:
https://firebasestorage.googleapis.com/v0/b/[PROJECT].appspot.com/o/public%2Fdog.jpg?alt=media&token=fd991fdf-a33f-4321-9017-09907e1a5243
安全规则只能首先限制用户获取此 URL,但是拥有此 URL 的任何人都可以访问图像/文件(如果授权用户共享了该 URL)。
话虽如此,该规则allow read: if true;
将允许任何人公开(如上图所示)并且他们可以访问它。
如果您还想要来自 GCS 的公共链接,那么您必须从 GCP 控制台编辑权限并允许allUsers
读取它: