存储桶(Storage Bucket)
存储桶是云存储中的逻辑容器,用于组织和管理文件。每个存储桶有独立的配置参数,包括文件大小限制、MIME 类型白名单、访问策略等。在 Supabase Storage 中,存储桶对应数据库中的一条记录,文件则以对象形式存储在底层对象存储服务中。存储桶的概念类似于文件系统中的文件夹,但增加了访问控制和持久化策略的维度。
公开桶(Public Bucket)
公开桶是一种允许匿名访问的存储桶类型。桶内所有文件可以通过构造固定的 URL 格式直接访问,无需任何认证凭证。URL 格式通常为 /storage/v1/object/public/{bucket}/{path}。公开桶适合存储静态资源,如用户头像、产品图片、公开文档等。需要注意的是,即使在公开桶中,文件的上传和删除操作仍然需要认证。
私有桶(Private Bucket)
私有桶是一种要求认证访问的存储桶类型。桶内文件只能通过签名 URL 或服务端 API 间接访问。URL 格式为 /storage/v1/object/sign/{bucket}/{path}?token={jwt},其中 token 是包含访问权限和过期时间的 JWT 令牌。私有桶适合存储敏感数据,如用户隐私文件、财务报告、内部文档等。
签名 URL(Signed URL)
签名 URL 是一种临时访问凭证,允许持有者在指定时间内访问受保护的资源。签名 URL 包含加密的访问策略(资源路径、权限级别、过期时间),由服务端使用密钥签名生成。客户端无需持有 API 密钥即可通过签名 URL 访问资源,适合文件分享场景。签名 URL 的有效期通常为几分钟到几小时不等。
RLS 策略(Row Level Security)
RLS 策略是数据库层面的访问控制机制,在 Supabase 中被扩展用于 Storage 场景。通过定义基于用户身份、文件属性、时间等条件的策略规则,实现对存储桶内文件的细粒度访问控制。例如,可以定义策略仅允许用户读取自己上传的文件,或限制特定角色用户上传文件的大小和类型。
MIME 类型
MIME 类型(Multipurpose Internet Mail Extensions)是标识文件格式的标准协议。在存储桶配置中,MIME 类型白名单用于控制允许上传的文件格式。例如,image/png 表示 PNG 图片,application/pdf 表示 PDF 文档,video/mp4 表示 MP4 视频。正确配置 MIME 类型白名单可以防止恶意文件上传。
持久化策略(Persistence Policy)
持久化策略定义了存储桶中数据的生命周期管理规则,包括数据保留期限、自动删除策略、备份频率等。不同的存储桶可以配置不同的持久化策略,以适应不同的业务需求。例如,临时上传桶可以配置 7 天自动删除,而用户档案桶则配置永久保留。
UD5工具箱