【发布时间】:2020-06-20 08:39:21
【问题描述】:
我没有使用身份验证,但我已成功将音频发送到 firestorage 并且我正在获取下载 URL,我希望只有有权访问该 URL 的人才能访问它,但我看到部分 URL他们可以访问所有文件,而 ACCESS 令牌没有用,因为他们可以在没有访问令牌的情况下访问文件
【问题讨论】:
标签: firebase google-cloud-storage firebase-security
我没有使用身份验证,但我已成功将音频发送到 firestorage 并且我正在获取下载 URL,我希望只有有权访问该 URL 的人才能访问它,但我看到部分 URL他们可以访问所有文件,而 ACCESS 令牌没有用,因为他们可以在没有访问令牌的情况下访问文件
【问题讨论】:
标签: firebase google-cloud-storage firebase-security
我自己弄的
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read: if request.auth.token == true ;
allow write;
}
}
}
【讨论】:
为了访问 Cloud Storage 中的对象,有两个重要的概念
统一(推荐):Cloud IAM 将权限应用于存储桶中包含的所有对象或具有通用名称前缀的对象组
细粒度:您可以在存储桶级别和每个对象上指定访问和应用权限。
您可以使用细粒度来启用访问控制列表(ACL)并设置访问权限,您可以根据 [1] 指定特定用户和您希望他们拥有的权限。此外,我建议您查看此文档,您可以在其中找到有关 OAuth2 如何使用不同于 JSON 或 XML 的 ACL 定义的详细信息。[1][2]
我想提一下,如果您启用统一存储桶级访问权限,您有 90 天的时间切换回细粒度访问,然后统一存储桶级访问权限变为永久性。当您从细粒度转换为统一时,Google 会将您的 ACH 保存 90 天,以便您恢复。[3] Fine-grained 无需等待 90 天即可转换为 Uniform。
您还可以查看推荐的存储桶架构 [4]
[1]https://cloud.google.com/storage/docs/access-control/lists#permissions
[2]https://cloud.google.com/storage/docs/authentication#oauth
[3]https://cloud.google.com/storage/docs/uniform-bucket-level-access#reversion
[4]https://cloud.google.com/storage/docs/access-control#recommended_bucket_architecture
【讨论】: