Supabase Studio:AI助手和用户模拟
在上一次发布周期间,我们在 Supabase Studio 的 SQL 编辑器中引入了文本转 SQL 功能。这是我们迈向完整 AI 助手的第一步。
今天,我们将推出 Supabase Assistant,它是仪表板内的 AI 助手,以及一些新功能,可让您更快地从构思到生产。
这是鸟瞰图:
- 行级安全策略:通过 AI 变得简单
- Postgres 角色:更改 Studio 的 Postgres 角色
- 用户模拟:可视化您的安全策略
- 实时检查器:检查和调试实时请求
- 功能预览:查看 Studio 中的热点新闻
Supabase 助手介绍
我们很高兴通过新的Supabase Assistant扩展 Studio 的 AI 功能。
开发人员一直告诉我们,SQL 编辑器中的文本转 SQL 功能显著提升了他们的速度(以及他们的 SQL 能力)。当 AI 与基于模式的数据库(例如 Postgres)结合使用时,其功能极其强大,因为它可以从模式中推断出大量上下文,并且数据库对生成的代码提供了更严格的保证。我们之前的版本坚定了我们的信念:AI 将成为未来数据库开发的关键组成部分。
今天,我们在行级安全编辑器中推出了助手支持,并且很快将扩展到 Studio 中的其他地方:表编辑器、Postgres 函数、无服务器函数等。
让我们首先了解一下行级安全性。

利用 AI 轻松制定 RLS 政策
在我们收到的所有功能请求中(我们收到了很多!),更轻松地编写行级安全策略的方法是最常见的方法之一。
行级安全性 (RLS) 是 Postgres 的一项功能,可提供对数据库的细粒度访问。虽然 RLS 功能强大,但编写策略却可能非常繁琐。今天,我们发布了一款 AI 驱动的 RLS 编辑器,让编写安全策略变得简单。
新的 RLS 编辑器将 SQL 放在了最核心的位置。我们希望让开发人员能够充分发挥 Postgres 的潜力,而不是将其抽象化。这款编辑器实际上包含两个工具:
- SQL 编辑器:如果您非常了解 SQL,那么有一个新的编辑器可以帮助您快速编写策略。
- 助手:如果您是 RLS 新手并且需要一些帮助,您可以使用助手并通过聊天完成操作。
该助手已调整为生成行级安全性的 SQL,使您能够快速轻松地按照需要设置策略。
我们探索了 RLS 编辑器的各种方案和设计。这种 SQL 优先、并辅以 AI 辅助的方法,正是我们一直在寻求的解决方案。全新 RLS 编辑器现已开放功能预览(详情见下文)。我们期待您的反馈。
Postgres角色
您可能从未想过这一点,但 Studio 就像任何其他 Postgres 客户端一样连接到您的数据库。
它使用默认的Postgres 角色。postgres
该postgres
角色的功能类似于您的service role
密钥,授予其数据库的管理员权限。它具有管理员的读写权限,并绕过了行级安全性。
如果您使用我们的客户端库,您会熟悉anon
和service_role
API 密钥。这些密钥实际上解析为 Postgres 角色,也称为anon
和service_role
。这些密钥实际上是包含 Postgres 角色的 JWT 令牌:
{
"role": "service_role", // the Postgres role
"iss": "supabase" // the issuer of the JWT
"exp": 1445385600, // the time the JWT will expire
}
如果您可以使用与应用程序相同的 Postgres 角色在 Studio 中运行查询,结果会怎样?如果您可以让 Studio 假装使用与默认角色不同的角色,结果会怎样postgres
?现在,您可以:
您可以使用新的“角色”下拉菜单为 Studio 中的查询选择不同的 Postgres 角色。这是一个强大的工具,可用于测试您的行级安全策略并确定每个角色可以访问哪些数据。
让我们构建一个 Twitter/X 克隆版本来说明。在 Twitter 克隆版本中,你需要:
user_id
有一个带有像和这样的列的推文表content
。- 可以设置行级安全性,以便只有推文的作者可以访问和修改他们自己的推文。
- 只能查看和编辑您撰写的推文。
当我们使用角色查询时postgres
,我们可以看到所有数据。当我们使用角色查询时,anon
没有返回任何数据。这是合理的,因为我们还没有创建允许anon
访问此表的策略。
角色下拉菜单解锁了另一个方便的功能:当与 Supabase Auth 结合使用时,它甚至可以假装是不同的用户。
用户模拟
还记得上面的 API 密钥吗?它们可以包含一个附加字段:sub
。这是用户的 ID。当您使用authenticated
角色时,该sub
字段是登录到您应用的用户的 ID:
{
"sub": "348b-some-user-uuid", // the ID of the user
"role": "authenticated", // the Postgres role
"iss": "supabase" // the issuer of the JWT
"exp": 1445385600, // the time the JWT will expires
}
我们可以在 Studio 中模拟用户,通过使用用户的 ID“铸造”一个 JWT,然后使用该 JWT 运行查询。
编写完 RLS 策略后,我们来看一下它的实际效果,该策略允许用户查看自己的推文。在这里,我们可以选择authenticated
角色,并选择特定用户,以便仅查看其推文。以下是我们所有用户的推文:
表编辑器现在正在模拟我们的用户。
您可以模拟项目中的任何用户,并查看与他们完全相同的内容。您的 RLS 政策中的任何条件都将自动反映在此表中。
✨魔法✨
您可以直接从 Studio 创建 RLS 策略并测试它们是否按预期工作。
表编辑器的乐趣不止于此。我们还为 SQL 编辑器和 GraphiQL 添加了角色支持。让我们重复上面的操作,尝试在 SQL 编辑器中选择我们自己的推文列表:
在 GraphiQL 中:
结合此功能与全新的 RLS 编辑器,您可以在几分钟内使用真实数据编写和测试 RLS 政策。这使得 RLS 政策的编写过程更加快捷轻松。如果您有任何反馈,我们非常乐意倾听。
实时检查器
Supabase Realtime非常适合构建协作应用程序。您可以通过 WebSocket 接收数据库更改,存储和同步用户状态数据,并通过“通道”向客户端广播任何数据。
今天,我们发布了 Realtime Inspector:一款在 Studio 中直接进行 Realtime 原型设计、检查和调试的便捷工具。您可以使用 Realtime Inspector 查看频道中发送和接收的消息。您可以按以下类型筛选消息:在线状态、广播和数据库更改。
当然,我们也添加了“角色”下拉菜单。您可以按角色查看事件,并像使用表编辑器和 SQL 编辑器一样模拟用户。
如果您使用 Realtime,您会发现新的检查器非常方便。如有任何反馈,请随时联系我们。
功能预览
今天,我们发布了功能预览版,这是我们发布新功能的工具。在正式发布之前,我们会先以预览版的形式发布测试版功能。您可以查看可供预览的功能列表,以及屏幕截图和简要说明。每个功能都包含一个 Github 讨论区的链接,方便您提交反馈。
我们推出功能预览版有几个目标。我们希望:
- 更快地为您提供功能
- 让您更轻松地向我们提供反馈
- 缩短迭代循环
我们越快地根据您的反馈进行迭代,我们就能越快地将功能发布到普遍使用中。
虽然我们认为这些功能目前仍处于 Beta 版本,但请知悉,我们非常重视您的安全、隐私和数据完整性。我们发布的任何预览版功能都经过了严格的测试,目前正处于征求 UX/UI 反馈的阶段。
您可以在左下角的用户头像菜单下找到我们的功能预览:
我们目前有两个预览功能:
- 我们之前介绍过的全新 RLS 助手:
- 以及修改后的 API 侧面板:
我们将积极关注 Github 讨论并回应您的反馈。
总结
在此更新中,我们取得了巨大进步,增强了您使用 Supabase 的体验。
- 行级安全策略:借助全新的 Assistant,我们让创建行级安全策略变得前所未有的简单。此功能显著简化了定义数据细粒度访问权限的流程。
- Postgres 角色和用户模拟:我们全新的角色选择器让您能够直接在 Studio 中直观地查看安全策略的影响。这让您能够了解不同角色如何与您的数据交互,从而提供强大的访问控制测试工具。
- 实时检查器:使用实时检查器,您可以创建原型、检查和调试实时消息。对于使用 Supabase Realtime 的用户来说,此工具非常有用。
- 功能预览:我们推出了功能预览,为您带来测试阶段的新工具和功能,让您更轻松地提供反馈并塑造开发流程。
这些更新体现了我们对 SQL 优先和以用户为中心的开发理念的承诺。我们期待您的反馈,并将继续努力,让 Supabase 更快、更轻松地让您将想法付诸实践。