责任共担模型
运行数据库是您与Supabase共同的责任。有些事情我们可以为您处理,而有些事情则需要您自行负责。这是有意为之的设计:我们希望给予您自由使用数据库的权利。虽然我们_可以_设置更多限制来确保您不会出错,但这些限制最终可能会成为阻碍。
总结来说,您始终需要负责:
- 您的Supabase账户
- 访问管理(Supabase账户、数据库、表等)
- 数据
- 应用安全控制
通常,我们的目标是减轻您在基础设施管理和Postgres内部知识方面的负担,尽可能减少配置需求。以下是您需要了解的几点:
安全责任共担
我们为您提供数据库的完全访问权限。如果您将这一权限与他人共享(无论是团队成员还是公众),那么确保所提供访问级别得到正确管理就是您的责任。
如果团队中有经验不足的成员,您可能不应该给予他们生产环境的访问权限。您应当建立内部工作流程来明确他们能做和不能做的操作,通过限制访问来避免任何可能被视为危险的行为。
您还需负责确保包含敏感数据的表具有恰当的访问控制级别。同时,管理数据库密钥和API密钥、将其安全存储在加密存储中也是您的职责。
Supabase提供了数据安全防护措施,建议您始终启用行级安全(RLS)。
我们还会通过安全顾问向您发送安全警报,但实施相关建议是您的责任。
自主决定工作流程
使用Supabase的方式多种多样。
您可以选择使用我们的仪表盘、客户端库,或是Prisma和Drizzle等外部工具,也可以选用我们的CLI、Flyway、Sqitch等迁移工具,或是任何兼容Postgres的方案。在项目初期,您可以直接在数据库上开发,也可以从本地迁移到生产环境,或是使用多环境管理。
这些方式没有对错之分,取决于项目所处阶段。当项目进入生产阶段时,您绝对不应该直接在数据库上进行开发——但在原型设计阶段且没有用户时,这样做完全可行。
您需要对应用架构负责
Supabase 并非糟糕架构决策的万能解药。无论托管在何处,设计不良的数据库都会表现不佳。
通过增加计算资源,您可以暂时应付设计不良的数据库。但最终问题仍会显现。数据库模式设计是需要您投入最多精力的领域。这正是 Supabase 的优势所在——您可以将更多时间用于设计可扩展的数据库系统,而非纠结于实现 CRUD API 这类常规任务。
如果您不想在数据库内部实现业务逻辑,这完全没问题。您可以使用任何与 Postgres 兼容的工具。
您需要对第三方服务负责
Supabase 为灵活集成第三方服务提供了多种可能性,例如:
- OAuth 和 SAML 登录提供商
- SMTP 和 SMS 发送 API
- 在 Postgres 函数或触发器中调用外部 API
- 在边缘函数中调用外部 API
您可以自由使用和集成任何服务,但同时需要确保这些服务的性能、可用性和安全性符合您的应用需求。我们不会监控与第三方服务集成的中断或性能问题。根据具体实现方式,此类集成问题可能导致您的 Supabase 项目性能下降或服务中断。
如果您的应用架构依赖此类集成,您应当监控相关日志和指标以确保最佳性能。
根据您的熟悉程度选择Postgres使用方式
Supabase的目标是让Postgres的_所有_功能都易于使用。但这并不意味着您必须使用全部功能。如果您是Postgres老手,您可能会喜欢我们提供的工具。如果您从未使用过Postgres,可以从简单的功能开始逐步深入。如果您只想把Postgres当作简单的表格存储,这完全没问题。
您对自己的数据库拥有完全控制权
Supabase对您的数据库设置的限制很少。这给您带来了很大的控制权,但也意味着您可能会"破坏"某些东西。这里的"破坏"是广义的,指的是任何因数据库使用方式而影响应用程序运行的情况。
您需要负责采用最佳实践来优化和管理数据库:
- 添加索引
- 为大型查询添加过滤条件
- 使用缓存策略
- 优化数据库查询
- 管理数据库连接
您需要负责配置足够的计算资源来运行应用程序所需的工作负载。Supabase仪表板提供了可观测性工具来帮助实现这一点。
进入生产环境前的准备
我们建议您查看并应用生产环境检查清单中提供的建议。该清单涵盖了本文讨论的责任事项,以及一些额外的生产环境准备最佳实践。
SOC 2与合规性
Supabase提供符合SOC 2标准的托管环境来管理敏感数据。我们建议您查看SOC 2合规责任文档以及上述生产环境检查清单。
医疗健康数据管理
您可以使用 Supabase 存储和处理受保护健康信息(PHI)。您需要承担以下责任:
- 与 Supabase 签署商业伙伴协议(BAA)。提交HIPAA附加服务请求开始流程。您至少需要处于团队计划才能与我们签署BAA。
- 将特定项目标记为HIPAA项目并解决顾问提出的安全问题。
- 确保所有Supabase账户启用多因素认证(MFA)。
- 启用时间点恢复功能,这至少需要小型计算附加组件。
- 开启SSL强制实施。
- 启用网络限制。
- 在我们的控制台中禁用Supabase AI编辑器的数据共享功能。
- 具体来说,应禁用"选择向OpenAI发送匿名数据"选项(选择退出)。
- 遵守HIPAA安全规则中的加密要求。Supabase会对静态和传输中的数据进行加密。您可以考虑在应用层额外加密数据。
- 不使用边缘函数处理PHI。
- 不在公开存储桶中存储PHI。
- 不转移项目到非HIPAA组织。
有关HIPAA下的共同责任和规则的更多信息,请查阅HIPAA合规责任文档。