有什么变化?#
数据 API 在根路径下为暴露给数据 API 的任何模式返回完整的 OpenAPI 规范:https://[projectref].supabase.co/rest/v1/
从3月11日开始,我们将开始弃用通过 anon 密钥访问此端点的支持。 如果通过 anon 密钥访问此端点,您将收到以下错误消息
_10{"message":"禁止访问模式","hint":"通过数据 API 访问模式仅允许使用密钥 API。"}
如果您使用服务角色密钥或新的密钥 API,则端点仍然可访问并且行为不会更改。
这不会影响正常的数据 API 使用。 通过 /rest/v1/your_table 或任何客户端库访问数据将继续像今天一样正常工作。
为什么?#
目前,该端点将模式详细信息(表、列和暴露模式的类型)返回给具有 anon 密钥的任何人。 虽然这不会暴露实际的行数据,但它提供了大多数生产应用程序不需要的有关您的模式的更多信息。
作为加强 Supabase 默认安全性的持续努力,我们正在删除此暴露。 实际上,模式规范在开发期间最有用,您可以使用 service_role 密钥。 在生产环境中客户端需要它的情况很少(在过去 24 小时内,不到 0.1% 的项目使用 anon 密钥向此端点发送了请求),而且我们认为支持这些用例不值得牺牲安全性。
我是否受到影响?#
如果您的应用程序当前使用 anon 密钥来获取 Swagger 规范,您将受到影响。
您可以通过查看通过 此日志查询 对 /rest/v1/ 端点发出的请求来检查。
如果您看到请求
- 单击该事件。
- 检查请求是否来自
anon角色。
我应该怎么做?#
- 检查您的日志。 使用上面的日志查询查看您的应用程序流量是否依赖于使用
anon密钥的此端点。 - 将受影响的调用移至服务器端。 如果您的应用程序获取模式规范,请将该调用移至服务器端上下文,例如 Edge 函数,您可以在其中安全地使用
service_role或 新的密钥 API。
推出和沟通时间表#
| 日期 | 变更 |
|---|---|
| 2月17日 | 发布变更日志 |
| 3月4日 | 在月度新闻通讯中宣布变更 |
| 3月6日 | 向观察到正在使用此端点的客户发送电子邮件通知 |
| 3月11日 | 新创建的项目无法使用 anon 密钥访问端点 |
| 3月24日 | 向观察到正在使用此端点的客户发送最终电子邮件通知 |
| 4月8日 | 所有现有项目都无法使用 anon 密钥访问端点 |
我们可能会根据客户反馈推迟这些日期,但不会提前。
接下来是什么?#
这是我们正在进行的加强 Supabase 默认安全设置的一系列更改中的第一个。 请关注 RLS 可用性、默认表授权和更多安全功能的改进。