项目与控制台概念:组织、项目与环境隔离


文档摘要

项目与控制台概念:组织、项目与环境隔离 在动手写代码之前,先建立对 Supabase 管理模型的认知:你的所有资源是如何被组织起来的。本节用通用概念描述,不涉及具体界面按钮的路径,帮助你理解「组织—项目—环境」这一层级结构。 组织(Organization):资源的归属容器 Supabase 以「组织」作为顶层容器。一个组织对应一个团队或一个主体,其下可以创建多个项目。组织层主要承担两类职责: 资源归属:项目、计费、成员权限都挂在组织之下,便于团队协作与统一管理。 成员协作:你可以把同事邀请到组织中并赋予不同角色,让多人共同维护一组项目。 对于个人开发者,一个组织下通常只有一两个项目;对于企业团队,组织则成为划分部门或产品线边界的工具。

项目与控制台概念:组织、项目与环境隔离

在动手写代码之前,先建立对 Supabase 管理模型的认知:你的所有资源是如何被组织起来的。本节用通用概念描述,不涉及具体界面按钮的路径,帮助你理解「组织—项目—环境」这一层级结构。

组织(Organization):资源的归属容器

Supabase 以「组织」作为顶层容器。一个组织对应一个团队或一个主体,其下可以创建多个项目。组织层主要承担两类职责:

  • 资源归属:项目、计费、成员权限都挂在组织之下,便于团队协作与统一管理。
  • 成员协作:你可以把同事邀请到组织中并赋予不同角色,让多人共同维护一组项目。

对于个人开发者,一个组织下通常只有一两个项目;对于企业团队,组织则成为划分部门或产品线边界的工具。

项目(Project):一个完整的后端单元

项目是 Supabase 最核心的工作单元。每创建一个项目,本质上是开通了一个独立的、托管的 PostgreSQL 数据库实例,以及围绕它的一整套服务(Auth、RLS、Realtime、Storage、边缘函数、向量扩展)。

理解项目的几个关键点:

  • 一个项目 = 一个数据库:项目内的所有能力共享同一个数据库,数据表、用户表、存储元数据等都位于其中。
  • 项目之间相互隔离:不同项目的数据库、认证体系、存储空间完全独立,不能直接互访。
  • 每个项目有唯一标识:项目会分配一个唯一的引用标识(reference)与一组 API 端点,客户端通过这些标识连接。
  • 密钥体系:每个项目配套两类密钥——一类是面向客户端的匿名密钥(anon key),受 RLS 保护;另一类是服务级密钥(service role key),可绕过 RLS,仅供可信的后端环境(如边缘函数)使用。

密钥是访问项目的钥匙,尤其是服务级密钥拥有完全权限,必须严格保管,绝不暴露在前端代码或公开仓库中。

控制台(Dashboard):统一管理入口

Supabase 提供一个网页版的控制台,作为管理项目的统一入口。通过控制台,你可以完成几乎所有的日常操作,主要包括:

  • 表与数据管理:可视化地建表、改字段、录入与查询数据、执行 SQL。
  • 认证配置:开启各类登录方式、管理用户、查看会话。
  • 安全策略:启用 RLS、编写与测试行级安全策略。
  • 实时与存储:配置实时订阅、创建存储桶、上传下载文件。
  • 边缘函数:部署、调用与查看函数日志。
  • 数据库扩展:一键启用 pgvector 等扩展。
  • 项目设置:查看 API 端点、管理密钥、配置网络与计费。

控制台适合探索、调试与小规模运维;当项目进入正式开发后,更推荐用迁移工具与命令行把数据库结构变更纳入版本管理(见下一节)。

环境隔离:开发 / 预发布 / 生产

实际项目中,通常需要区分多个环境以避免「在真实数据上做实验」。Supabase 推荐的做法是为每个环境创建独立项目

  • 开发环境:日常开发与联调,数据可随意重置。
  • 预发布(Staging)环境:上线前验证,结构与生产一致但数据量较小。
  • 生产环境:面向真实用户,需严格的安全与备份策略。

由于每个项目都是一个独立数据库,环境之间天然隔离。要在环境之间同步数据库结构(表、索引、策略等),应使用迁移工具(migration)把结构变更记录成可重复执行的脚本,而不是手动复制——这能保证不同环境的结构一致且可追溯。

出于成本考虑,个人开发者初期可以只用一个项目;但只要应用面向真实用户,就应当尽早建立独立的生产项目,避免开发操作误伤线上数据。

小结

组织是资源容器,项目是一个完整的后端单元(核心是一个独立 PostgreSQL 数据库),控制台是统一管理入口,而多项目则用于实现环境隔离。理清这套层级,你就能知道「在哪里建表」「密钥从哪里来」「为什么要有多个项目」。

下一节将介绍开发工具与客户端库,让你从管理视角过渡到编码视角。


发布者: 作者: 灏天文库 转发
评论区 (0)
U