无需登录 数据私有 本地保存

Storage Buckets API 演示 - 分离存储空间与策略

6
0
0
0
什么是 Storage Bucket?它和传统文件夹有什么区别?
Storage Bucket 是云存储中的逻辑存储单元,类似于传统文件系统中的文件夹,但具有更强的功能。与普通文件夹不同,存储桶拥有独立的访问策略、文件类型限制、大小配额和持久化规则。每个存储桶对应一个独立的配置空间,可以针对不同的业务场景设置不同的安全和管理策略。存储桶还支持行级安全(RLS),实现基于用户身份的细粒度访问控制,这是传统文件系统无法提供的能力。
公开桶和私有桶在安全性上有什么本质区别?
公开桶的文件通过固定 URL 格式直接访问,任何人只要知道 URL 即可获取文件内容,无需任何认证。这适合公开分享的静态资源。私有桶的文件必须通过签名 URL 访问,签名 URL 包含加密的 JWT 令牌,指定了允许的操作类型和过期时间。即使 URL 被泄露,过了有效期也会自动失效。建议对所有敏感数据使用私有桶,并通过 RLS 策略进一步细化访问权限。
签名 URL 的有效期可以设置多长?过期后文件会怎样?
签名 URL 的有效期由开发者自行设定,通常从几秒到几小时不等。设置过长的有效期会降低安全性,建议根据实际使用场景选择合理的时长。例如,用户下载文件的场景可以设置 10-30 分钟,而嵌入在邮件中的链接可以设置 24 小时。签名 URL 过期后,访问将被拒绝,返回 403 错误。文件本身不会受到影响,仍然存储在私有桶中,用户可以重新请求新的签名 URL 来访问。
RLS 策略在 Storage 中是如何工作的?
RLS(Row Level Security)策略通过定义布尔表达式来控制访问权限。当用户请求访问存储桶中的文件时,系统会检查该用户的 JWT 令牌,并评估所有适用的 RLS 策略。只有当至少一条策略返回 true 时,访问才被允许。策略可以基于用户 ID(auth.uid())、用户角色(auth.jwt()->'role')、文件路径、请求时间等条件。例如,auth.uid() = owner_id 策略仅允许文件所有者访问文件。
如何在运行时动态切换存储桶的公开/私有策略?
Storage Buckets API 支持在运行时动态修改存储桶的公开/私有策略。通过调用 updateBucket API,传入新的 public 参数即可切换。切换为私有后,之前公开的 URL 将立即失效,文件只能通过签名 URL 访问。切换为公开后,所有文件将通过直接 URL 可访问。需要注意的是,动态切换会影响所有现有访问,在生产环境中操作前建议先备份数据并通知相关用户。
使用 Storage Buckets API 的最佳实践有哪些?
建议遵循以下最佳实践:1)按用途隔离存储桶,如用户头像桶、文档桶、临时文件桶分别创建独立桶;2)敏感数据始终使用私有桶,并配置最小权限 RLS 策略;3)设置合理的文件大小限制和 MIME 类型白名单,防止滥用;4)使用签名 URL 分享私有文件,避免直接暴露 API 密钥;5)为临时文件配置自动过期策略,节省存储成本;6)定期审计存储桶配置和 RLS 策略,确保符合安全合规要求。
Storage Buckets API 和 Supabase Storage 是什么关系?
Storage Buckets API 是 Supabase Storage 的核心概念模型。Supabase Storage 是 Supabase 平台提供的对象存储服务,而 Storage Buckets 是其组织和管理文件的基本单位。所有 Supabase Storage 的操作(上传、下载、删除、权限控制)都围绕存储桶展开。本演示工具模拟了 Supabase Storage 的存储桶功能,帮助开发者在实际接入 Supabase 之前理解其核心概念和 API 用法。演示中的 JavaScript SDK 代码可以直接用于 Supabase 项目。
一个账户可以创建多少个存储桶?存储桶有容量限制吗?
在 Supabase 的免费套餐中,最多可以创建 100 个存储桶,存储总容量为 1GB(含 CDN 流量 2GB)。付费套餐提供更大的配额和无限存储桶数量。每个存储桶本身没有硬性容量限制,但可以配置文件大小上限(如单文件最大 50MB)和总配额。实际存储容量取决于底层对象存储服务的限制和账户套餐。建议合理规划存储桶数量和结构,避免创建过多小桶导致管理复杂。