We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode Supabase Security with Inian Parameshwaran

Supabase Security with Inian Parameshwaran

2023/12/20
logo of podcast Cloud Engineering Archives - Software Engineering Daily

Cloud Engineering Archives - Software Engineering Daily

AI Deep Dive AI Chapters Transcript
People
I
Inian Parameshwaran
Topics
Inian Parameshwaran: 作为Superbase的产品和工程负责人,我亲身经历了Superbase从一个Alpha阶段的项目成长为一个功能丰富的开源Firebase替代方案的过程。Superbase的核心是Postgres关系数据库,这与Firebase的文档存储形成了鲜明对比。自2020年以来,我们不断扩展产品线,包括实时引擎、存储、身份验证、边缘函数以及最近的基于PG vector的向量数据库。我们的目标是为开发者提供简单易用的工具,让他们能够快速构建应用并扩展到数百万用户。我加入Superbase时,主要负责解决基础设施问题,并帮助团队发布Beta版本。之后,我参与了Superbase Storage和Functions的初始版本的发布。现在,我的主要职责是协调产品团队,确保他们能够根据用户反馈构建正确的产品。在加入Superbase之前,我曾在DevTools领域创办过TechSecure,并在新加坡大学的安全实验室参与过创业项目。我对DevTools、安全和性能领域充满热情。

Deep Dive

Chapters
This chapter introduces Supabase, an open-source alternative to Firebase, highlighting its use of Postgres and its evolution over the past three years. It details the speaker's journey with Supabase, from its alpha stage to its current feature set.
  • Supabase is an open-source Firebase alternative.
  • It uses Postgres, a SQL-based database.
  • Key features include real-time engine, storage, authentication, edge functions, and vector database.
  • Prioritizes developer experience and scalability.

Shownotes Transcript

Supabase 是一个开源的后端即服务平台,与 Google 的 Firebase 直接竞争。它们之间的主要区别在于 Firebase 是一个文档存储,而 Supabase 使用 Postgres,这是一个基于 SQL 的数据库管理系统。Software Engineering Daily 曾在 2020 年报道过 Supabase,当时其创始人 Paul Copplestone 参加了该节目,从那时起发生了很多变化。

该平台的功能集不断增长,重要的是,这种增长带来了越来越多的安全考虑。

Enyan Parmeshwaran 是 Supabase 的产品和工程主管,也是前 Y Combinator 研究员。他在 Supabase 平台仍处于 alpha 阶段时就加入了,至今已有三年时间。他今天加入节目,讨论 Supabase 的当前功能集以及他和他的团队正在努力解决的各种安全挑战,包括如何处理加密货币挖矿漏洞、IP 封锁、DDoS 攻击等等。

Gregor Vand 是一位专注于安全的技术专家,是 MailPass 的创始人兼首席技术官。此前,Gregor 曾担任网络安全、网络保险和通用软件工程公司的首席技术官。他已在亚太地区工作近十年,可以通过他在 vand.hk 的个人资料找到他。

嗨,Inean。欢迎来到 Software Engineering Daily。嘿,Gregor。感谢你们的邀请。很高兴来到这里。Inean,我们在 2020 年的播客中报道过 Superbase。我们与 Paul(首席执行官)进行了交谈。今天,我们将了解自那以来的所有进展,特别是我们将深入探讨更多安全方面的考虑。众所周知,Superbase 运行着一个对数据至关重要的平台。我们将了解其中的一些…

为了帮助我们的听众,也许你可以快速回顾一下什么是 Superbase,以及你如何参与其中,以及你加入 Superbase 的历程?

是的,当然。自 2020 年以来。好吧,要回顾这么长时间的事情,我会尽力而为。好的,Superbase 是开源的 Firebase 替代品。我们构建了 Firebase 提供的基元,但使用的是开源堆栈。与 Firebase 的主要区别还在于我们使用的是关系数据库,如 Postgres,以及…

自从我们从实时引擎开始,它将数据库更改流式传输到您的客户端。我们通过在 Postgres 之上构建实时引擎开始了这项工作。从那时起,我们添加了存储,您可以任意存储文件。我们添加了身份验证,以便您只需几行代码即可在您的应用程序中添加身份验证,以及用于在…

在我们的全球分布式服务器中运行代码的边缘函数。最近,我们还添加了基于 PG vector 的向量数据库产品。这就是 Superbase 提供的所有高级产品。总的想法是,我们希望尽可能简化应用程序…

应用程序开发人员开始使用他们的应用程序,并且我们尽可能地优先考虑开发人员体验,这与 Firebase 的做法类似。Firebase 非常易于上手。我们希望 Superbase 也能做到这一点,您可以立即上手。事实上,我们的标语是“一周内构建,扩展到数百万”。

因此,我们希望最初的体验尽可能简单。但与此同时,我们希望确保我们做出的架构选择能够帮助您轻松扩展到数百万用户。这就是 Superbase。我已经在 Superbase 工作了三年多一点。是的,当我加入公司时,他们还在…

当时处于 Alpha 阶段,他们正在寻找能够帮助解决一些基础设施问题的人,因为他们计划进入 Beta 阶段。我记得他们有一份清单,列出了在他们准备好自称 Beta 之前需要完成的事情。所以我加入了公司,开始处理这份清单,以确保我们可以启动 SuperBase Beta 版。我认为那是 2020 年 12 月。是的。

所以一开始更多的是基础设施方面的工作。随着时间的推移,一旦我们建立了基础设施,一旦我们建立了数据库和实时引擎,并且由于我们也开始称自己为开源 Firebase 替代品,人们开始将我们与 Firebase 进行比较,显然,然后开始询问 Firebase 提供的其他基元。因此,用户要求的下一件最重要的事情是存储。所以我帮助启动了 SuperBase Storage 的初始版本。

而且

之后,我还帮助启动了 Functions 的初始版本,这是人们要求的下一件事。对于 Superbase 来说,大多数 Superbase 组件可以直接从客户端本身使用。这就是我们的安全模型的设计方式。因此,如果您正确设计应用程序,您可以直接从您的网站或移动应用程序调用您的 Superbase API。但是,在某些方面,您仍然需要拥有您的…

您的代码在一个安全的环境(例如服务器)中运行。例如,您正在处理 Webhook,或者您想与 Stripe 集成,而您需要一个安全的环境。这就是 Functions 的作用。

之后,我的角色已经转变为产品和工程主管,我主要帮助其他产品团队确定优先级。这主要是通过确保我们整合来自所有不同地方的反馈来实现的。我们从用户、Twitter、Reddit 和 Discord 收到了很多反馈。所以我的工作本质上是确保我们将所有这些信息提供给产品团队,并确保他们拥有正确的信息…

来构建用户要求的东西。是的,这就是我的角色在 Superbase 本身是如何变化的。在此之前,我经营着自己的初创公司 TechSecure。同样,它也属于 DevTools 领域。我通常喜欢 DevTools。是的,我们正在构建工具来加快网站速度。在此之前,我还做过另一个项目,我们的…

初创公司在新加坡大学的安全实验室中并没有真正成功。是的,这就是我的背景。我最喜欢…

DevTools 安全性能,是的,我就是这样。是的,非常酷。我记得我们见面的时候,我们在新加坡见面,我们现在都在那里,你的上一家初创公司 DexSecure 仍然拥有相当多的追随者,至少在这个城市是这样,我相信,这非常酷。好的,你会怎么说,我们现在已经了解了过去三年产品是如何发展的,显然安全在…

鉴于您现在拥有的用户群规模,安全在其中发挥了重要作用,那么您认为 Superbase 在从早期初创公司发展到用于生产环境的产品的过程中,首先要克服的重大安全障碍是什么?是的,我的意思是安全…

对我们来说非常非常重要,因为我们在我们的数据库中托管用户数据,对吧?客户也信任我们来处理他们的数据。因此,确保我们的平台尽可能安全是我们的首要任务之一。我们并没有做一件什么重大的事情来提高我们的安全性。这是多年来我们做出的许多小的决定、产品决定和…

改进。但我可以大概给你讲几个早期的故事,这些故事让我们重新思考了我们当时的一些做法。我记得当我第一次加入公司时,就在第一周左右,一位当时正在使用 Superbase 的客户说,嘿,我的数据库运行缓慢。你能看看原因吗?我没有在其上运行那么多查询,但数据库仍然感觉很慢。

所以我们最终调查了他的数据库,看看问题出在哪里。然后我们发现他的 CPU 在过去 20 分钟左右一直处于 100% 的状态。因此,他的查询运行速度并不快。我想你可能知道我要说什么了。事实证明,他的服务器安装了一个比特币矿机。用户没有,不知何故,一个比特币矿机进入了那里。这又是三年前的事了。然后…

我们开始调查比特币矿机是如何进入服务器的。我的意思是,如果你提供计算能力,我想人们就会试图找出如何在上面挖比特币。所以事实证明,攻击者是如何进入的,因为这个用户将他的 Postgres 密码设置为非常简单的密码,例如 monkey123 之类的东西。因此,他们可以直接进入前门,说,嘿,这是你的 IP。我看到那里运行着一个 Postgres 数据库。

我们能够立即采取的补救措施是确保用户在任何基于 super 的数据库之前使用强密码。所以现在你不能用这样的弱密码启动一个基于 super 的数据库。这是短期解决方案。然后随着时间的推移,我们实现了 fail-to-ban,这是一种分析日志文件并能够防止来自同一 IP 的暴力攻击的服务。因此,我们自动阻止…

尝试猜测密码并在达到一定阈值后猜错的 IP。最近,我们还推出了网络限制,您只需不将数据库放在互联网上,并且只能向其公开某些 IP 范围。这些是我们随着时间推移所做的修复。但是,是的,这在早期,我们必须弄清楚如何…

保持我们自己的系统安全,同时也确保用户不会因为在他们的 Postgres 数据库上使用诸如弱密码之类的密码而自讨苦吃。这是一个有趣的故事。即使在那里,攻击者获得比特币矿机所需的另一个组件是执行…

任意代码,事实证明 Postgres 非常强大,例如 Postgres 中的 copy 命令,它允许您……通常它用于将 csv 文件或其他内容复制到您的表中,但 copy 命令也有一个 program 属性,您可以将程序的标准输出也通过管道传输到 copy 命令中,这样几乎可以让您执行任意程序…

我们必须在这里做的一个修复是让用户…

复制文件(例如 CSV 文件),但不执行 copy 命令中的程序命令。事实证明,没有简单的方法可以做到这一点。我们所做的是最终构建了自己的扩展程序 Superutils。它也是开源的,您可以在我们的 GitHub 上查看它。这个扩展程序的作用是我之前提到的,它允许您复制文件,但不执行程序。

在基于 super 的数据库上。我们走这条路的原因还在于确保我们不分叉 Postgres 本身。看起来一些云提供商实际上确实分叉了 Postgres 来堵住这样的安全漏洞,但我们最终选择了扩展路线,因为我们坚信…

如果可能的话,它应该只是普通的 Postgres。由于 Postgres 非常灵活,您可以访问 Postgres 中不同生命周期事件的所有类型的钩子,因此我们能够仅使用扩展程序来修复此安全漏洞。是的,这就像我们必须做出的各种更改一样,仅仅是因为我们观察到的一个问题。

公司成立时。这就是为什么我说这不仅仅是一件大事。存在一个问题,但您可以有多种防御措施来解决这个问题,这就是我们最终所做的。是的,由于我们的大部分工作负载都在 AWS 上,因此只需确保我们的 AWS 安全冲突尽可能安全即可。

再说一次,我早期实施的系统之一是分析 AWS 内部的审核日志,以确定是否发生了可疑事件。我记得,AWS 有一个名为 CloudTrail 的产品,它是 AWS 环境的审核日志。

您可以传递审核日志来确定,是的,发生了奇怪的事情。当其中一个条件被触发时,我们在 Slack 中设置了警报。有一天发生的事情是,我们收到一个警报,有人未经双因素身份验证就登录到我们的 AWS 帐户。这让我到处都开始敲响警钟。我想,嘿,谁在没有 2FA 的情况下登录?我以为我们在…

和 AWS 中强制执行了 2FA。然后事实证明,有人从他们的非洲地区登录到 AWS。在某个时间点,这又是很久以前的事了,如果您从非洲地区登录 AWS 控制台,他们根本不会验证您的 2FA。

因此,即使您拥有两个,如果配置结果表明他们没有验证,那么我们最终会向安全团队提出工单。当然,现在它已经被修补了,但这又是早期发生的另一个有趣的事件,是的,这就像我们负责我们自己的基础设施,也负责我们所有的供应商一样。对。我们有很多这样的有趣事件,这使得在内部展示安全的重要性至关重要,并且…

而且,是的,我们随着时间的推移实施了许多这些功能来提高平台的安全性。是的,这非常有趣。我的意思是,仅仅听到关于 AWS 方面的轶事,我认为,这是一个很好的例子,因为你展示了你是如何坐着的。好吧,你选择 Superbase 坐在这个中间部分,实际上你让用户可能做一些…

我们可能会称之为稍微愚蠢的事情,例如创建非常容易猜测的密码。另一方面,你也有这些第三方风险…

比如 AWS,你当时可能永远无法预测非洲地区的情况。所以让我们简要地回到 super utils,对我来说,这听起来几乎像是一种数据库管理的 ORM,或者这就是描述它的方法,或者你会如何称呼它?所以它不完全是 ORM。更确切地说,通常 Postgres 是您 Postgres 集群中的超级用户,您可以…

作为 Postgres 用户,您可以执行 Postgres 中可能执行的所有操作。随着时间的推移,我们意识到我们不能直接向我们的客户授予超级用户访问权限,因为我们在我们的环境中为我们的客户运行多个 Postgres 数据库。作为 Postgres 超级用户,您可以执行许多不同的操作。copy 命令就是其中之一,但您还可以执行许多其他操作。例如,读取文件,我之前不知道…

在我加入公司之前,您可以从 sql 中读取文件,这听起来很疯狂,但是是的,所以 superutils 的作用是允许您执行某些操作而无需…

成为超级用户。因此,随着时间的推移,我们所做的是,最初当 SuperBase 启动时,Postgres 是超级用户。但从那时起,我们创建了一个名为 Postgres 的单独用户,但它不是超级用户。但我们仍然希望用户执行超级用户可以执行的某些操作。这就是 super utils 的作用。它不像 ORM,但它有点像,它是 Postgres 扩展,它分析正在运行的查询。

并决定运行某些查询,如果根据我们的安全模型可以的话,则询问超级用户,并且…

而且,就像之前的 copy 命令一样,是的,它允许 copy 命令,但前提是输入是文件。如果输入是程序,则不允许。如果您想做一个模糊的类比,它有点像防火墙。它被构建为 Postgres 扩展。它是开源的,并且在所有基于 super 的数据库上运行。明白了。这很有道理。

所以如果我是一个正在考虑 Superbase 的用户,对我来说说,哦,如果我在 Superbase 之上部署我的 Postgres,我不需要那么担心安全性,是否公平?Superbase 负责处理某些安全方面的问题,而另一些则由您作为应用程序开发人员负责。因此,我们实际上在我们的文档中有一份名为共享责任模型的文档,其中本质上说明了…

您负责什么以及 Superbase 负责什么,对吧?在 Superbase 上,我们承诺负责基础设施安全,确保我们的 AWS 以及我们最终使用的任何云提供商都尽可能安全。我们确保为您提供所有不同 API 的 DDoS 保护。我们确保,是的,我们拥有诸如 fail-to-ban、网络限制、SSL 强制之类的功能。我们为您提供所有这些不同的东西。

事情,其中一些是默认启用的。例如,所有 SuperBase 项目都具有一定的 DDoS 预测级别。如果您使用的是企业计划等,我们会为您提供更高水平的 DDoS 预测。我们尽可能使用安全的默认值。再说一次,我们保证您的 Postgres 数据库与在我们基础设施上运行的其他 Postgres 数据库完全隔离。

因此,这些是我们方面负责处理的一些事情,但您作为应用程序开发人员也需要处理一些事情。这再次意味着,好的,如果我们为您提供可以使用的工具,例如,我们为您提供在您的帐户上启用 2FA 的选项。

因此,当您进行开发时,它只是一个业余项目。如果您只是一个业余项目,并且只是在试用,那么您可能并不关心 Superbase 是否有 2FA。但如果这是一个您实际存储用户数据的生产项目,您需要确保它启用了 2FA,启用了 SSL 强制,启用了网络限制,所有这些不同的东西,对吧?所以这个责任在于你。而且…

此外,SuperBase 的安全模型很大程度上依赖于 RLS,即行级安全性。而且,我们还为您提供为所有表启用行级安全性的选项。但同样,您需要确保它已在您创建的所有表上启用,并且您编写了根据用户类型授权用户的适当策略。

我可以继续说下去,但这大致说明了 Superbase 负责什么(即基础设施方面的一切,并确保租户得到适当的隔离等),以及您作为应用程序开发人员负责什么(即遵循最佳实践,并确保您的 Postgres 得到适当的保护,无论是通过 RLS 还是其他机制),以及您使用我们提供的其他一些安全工具,例如网络限制等等。

是的,这就像安全中的任何事情一样,它只与实际实施的人一样好,你知道,作为 super base 的提供商,你可以提供很多工具和很多东西,比如合理的默认值等等。但最终仍然取决于最终用户,在这种情况下是开发人员,仍然要利用这一点,而不是忽略这些东西。

因此,鉴于 super base 完全基于 Postgres,您会说,特别是从安全性和数据完整性的角度来看,选择 Postgres 而不是任何其他关系基础或甚至 MongoDB 的关键考虑因素是什么?是的。传统上使用 Postgres 部分是因为…

我们的创始人 Coppel 在他之前的公司中使用过 Postgres,他需要在 Postgres 之上实现一些实时功能,这就是我们构建实时引擎的方式,Superbase 就是从那时开始的,所以当时选择 Postgres 可能只是一个巧合,我猜,但随着时间的推移,Postgres 我们从那时起就加倍关注 Postgres,主要是因为是的,它…

经过实战检验。它已被多家公司大规模使用。它自 20 世纪 80 年代就存在了,对吧?并且它经历了多次迭代。Postgres 社区本身非常重视…

确保数据库尽可能持久。您还可以获得事务关系数据库的所有其他好处,对吧?您可以获得符合资产的交易。您可以确保您作为应用程序开发人员可以将更多逻辑推送到数据库,因为您拥有…

关系数据库(如 Postgres)为您提供的所有这些不同的功能。这可能是持久性和对数据完整性组件的关注,这使我们加倍关注 Postgres。我们也喜欢 Postgres,因为它具有灵活性,对吧?例如,Postgres 的扩展生态系统…

非常庞大。您可以做很多奇特的事情,例如 PostGIS 是 Postgres 中最流行的扩展之一,您可以用它做很多有趣的事情。

您可以像 Timescale 在 Postgres 上所做的那样构建时间序列数据库。我总是对您只需使用 Postgres 中的扩展程序就可以完成的不同类型的事情感到惊讶。所以这是另一个方面,我们认为这为我们提供了我们想要构建的 Postgres 的正确钩子…

使用 Postgres 本身构建更多东西。这就是我们选择 Postgres 的另一个方面。在安全方面,是的,Postgres 具有非常细粒度和灵活的权限模型。例如,您可以说此用户必须能够读取此模式中的表,但不能读取此模式中的表,但他可以读取此表,但不能更新它。他可以…

调用此函数,但不能更新它。是的,您可以根据需要进行细粒度控制,这非常好。它还具有行级安全性的概念,我们在 Superbase 中几乎所有其他产品中都使用了它。因此,它为您提供了构建非常安全、健壮的应用程序的正确基元。是的,您谈到的其中一些功能,我认为我们很多人忘记了它们确实存在。

我使用过很多 Postgres。就我个人而言,我非常喜欢 NoSQL 数据库,所以我非常喜欢在我的许多项目中使用 MongoDB。随之而来的是,我相信很多人听说过 Atlas,它是 MongoDB 的托管版本。你会说 Superbase 在某种程度上类似于 Atlas 为他们自己的产品所做的事情吗?这是一个我们可以使用的类比吗?

是的,我会说部分是这样。例如,对于 Atlas 和 Superbase,您不需要考虑运行 Postgres 或 MongoDB 的操作方面。您不需要考虑,嘿,有一个新的 Postgres 版本发布了。我该如何确保升级到最新版本?并且我知道我运行的所有扩展程序…

与最新版本兼容,我们只需一键升级即可,对吧?因此,您不需要考虑太多。如果您需要进行应用程序需要进行的重大更改,您仍然需要考虑。但在实际进行升级、在出现问题时回滚方面…

Atlas 和 Superbase 都已经解决了这个问题,因为我们为客户运行数十万个数据库,然后我们随着时间的推移构建了此功能。我认为人们喜欢 Atlas 的一个功能是您可以跨多个区域启动数据库,

跨不同的云提供商。在 Superbase 中,我们目前也支持 10 多个不同的区域,并且我们将在来年添加更多云提供商。所以我会说,Atlas 和 Superbase 在这方面有相似之处,但在 Superbase 中,我们还为您提供,它不仅仅是一个数据库,Postgres 是它的核心,但我们还为您提供其他基元,正如我提到的,例如存储、实时…

向量数据库所有这些其他东西,使您可以轻松构建您的应用程序,因此从这个意义上说,Superbase 不仅仅是一个数据库,如果您想这样称呼它的话,它可能是一个后端即服务,是的,非常有趣,然后不是今天的主题,但向量数据库方面显然非常有趣,鉴于…

从 AI 的角度来看,事情的发展方向。因此,让我们谈谈 Superbase 的一个主要功能,即身份验证部分。因此,从这个意义上说,它涵盖了身份验证和授权。Superbase 如何为您的客户及其用户处理这些问题?Superbase 在这方面增加了哪些超出 Postgres 原生功能的内容?

Superbase,我们的身份验证服务器基于名为 GoTrue 的项目。因此,最初,Netlify 有一个名为 GoTrue 的项目,我们基于该项目构建了我们的身份验证服务器。我们选择它的主要原因是我们需要为我们的用户提供一些非常易于上手的东西,并且…

NetFi,我认为他们构建了这个用于在其自身系统中使用。可能,我不太确定那里的动机,但这非常适合我们的用例。它很容易与 Postgres 数据库集成。我认为这是我们必须做出的一个改变。最初,它旨在与 MySQL 一起使用,我认为。

我们已经对其进行了更改,以便我们的 AuthServer 能够使用 Postgres。我们在这里需要 Postgres 的原因是我们的 AuthServer 能够将有关您的用户的所有元数据存储在您自己的 Postgres 数据库中,我认为这非常酷,因为如果您想查找…

例如,在过去 24 小时内使用 Gmail 帐户注册的所有用户。这是一个简单的 SQL 查询。您可以执行 select star from auth.users,然后匹配电子邮件,然后匹配 created_at 列,就是这样。您不需要考虑,嘿,我该如何调用 Superbasis auth API 以及我该如何过滤和排序?它只是 SQL,对吧?所以如果你知道 SQL,

可以非常轻松地完成所有这些很酷的事情。由于元数据也在 Postgres 中,因此您可以将用户的 ID 与模式中的其他项目关联起来。例如,您想将特定用户的 ID 与他们拥有的文件或…

数据库中的某些其他实体相关联,我们使其非常简单,因为它再次就在您的数据库中。这就是 GoTo。我们已经对其进行了分叉,并且添加了用户要求的更多功能。在身份验证方面,我们允许您…

通过最少的配置,拥有电子邮件密码登录、魔术链接登录,并与 20 多个不同的社交登录集成。例如,如果您想添加使用 Apple 登录、使用 Facebook 登录,

 

请点击此处查看本期节目的文字记录。 赞助咨询:[email protected]

Supabase 安全性与 Inian Parameshwaran 的文章首次出现在 Software Engineering Daily 上。 </context> <raw_text>0 使用 Discord、Telegram 登录。您可以在我们的文档中看到很多不同的内容。我认为这也是我见过的最简单的 API 之一。如果您想使用特定提供商注册或登录,只需几行代码即可。这是关于身份验证方面的。最近,我们还添加了与您的组织的单点登录,这使得它更适合企业用例。

在授权方面,一旦您的用户登录,您可能希望查看用户能够执行的操作。我们使用行级安全性来确保您可以仅使用行级安全策略来定义用户可以执行的操作。

是的,到目前为止,我们在本期节目中已经多次听说过行级安全性 (RLS)。也许,您能否向可能不熟悉该概念的人描述一下?而且,它是否真的是 Postgres 独有的?或者我们在其他地方也能找到它吗?

好的,是的。行级安全性是指,我不知道它是否是 Postgres 独有的。我认为 SQL Server 也可能有它。但它本质上是允许您用 SQL 编写策略。这是一种在数据库级别本身进行授权的方法。所以作为一个用户……

您可以编写行级安全策略,并且此策略会在将结果返回给

用户之前对数据库的每一行进行评估。我认为如果我用一个例子来解释什么是 RLS,这会更容易一些。假设您有一个名为“users”的表,主键列是 ID,您只想让用户更新他自己的用户 ID 记录。例如,您不希望用户更新其他人的用户名,对吧?因此,您可以编写一个 RLS 策略,该策略规定,

该策略允许用户仅读取和更新他自己的用户 ID 记录。即使在您的应用程序代码中执行类似于“select * from users”的操作,如果启用了 RLS 策略并强制执行,用户也只会看到用户表中的一条用户记录。即使您有 100 个用户,并询问用户是否执行不带限制的 select * 操作,

子句或任何其他内容,您仍然只会看到那一条记录。这就是数据库在数据库级别本身强制执行权限的方式。在应用程序级别,您不需要说“select * from users where user ID = user's ID”,您可以忽略该 where 子句,如果

如果启用了 RLS。因此,这是一种将授权逻辑直接推入数据库的方法。另一个优点是,无论哪个客户端查询数据库,最终都需要返回到数据库。由于权限系统在数据库中强制执行,因此您可以确定,一旦您正确编写并测试它,访问数据库的任何客户端都将正确执行权限检查

由于这一切都在 Postgres 中发生,因此它可以得到极好的优化,并且运行速度非常快,而不是在数据库外部(例如在您的应用程序层)进行应用程序检查。RLS 通常是一种允许您仅用 SQL 定义策略的方法。我们在不同的产品中使用该授权逻辑

进行授权。是的,非常感谢您能够以许多人现在都能更好地理解的方式解释这一点。归根结底,这仍然是一个相当复杂的过程

才能正确实现。因此,我认为这显然是 Supabase 发挥作用并节省大量时间的地方。Supabase 的哪些部分实现了该概念?是的,当您

第一次接触时,RLS 可能有点难以理解,我们正在尽最大努力确保尽可能简单。例如,在我们的仪表板中,我们集成了 Supabase AI 到 SQL 编辑器中,您可以要求它生成不同的查询。我们正在确保这也能与 RLS 良好地配合使用。我们还有这个 RLS 编辑器,它使编写 RLS 策略变得容易。借助 AI,我们可以确保它是

这是一个很好的起点,您可以从中提出所有这些不同的 RLS 策略,并可以描述您究竟想要什么。我们正在尝试提出一个策略,这将是一个很好的起点,您可以根据需要在其上构建更复杂的逻辑。并且

是的,这就是 RLS 策略及其在 Supabase 中的使用方式。前面提到过,对于 Supabase auth,一旦您使用 Supabase auth 登录,您就会获得一个 JWT 令牌,其中包含用户的角色和 ID,以及……

使用 RLS 策略,您可以使用这些角色和 ID 在您自己的 RLS 策略中。在特定表的数据库中,您可以说,如果用户使用此域名登录,

他可以访问此表。诸如此类的事情,它使操作变得简单。在存储方面,我们也使用 RLS。因此,主要的逻辑是我们不想提出另一个权限系统来定义谁可以从存储桶读取对象,谁可以将对象上传到存储桶等等。因此,我们再次在这里使用 RLS。

由于存储的元数据也存储在您自己的 Postgres 数据库中,因此您的 Postgres 数据库将有一个名为“objects”的表,其中包含对象的名称、对象的大小、上传时间、上传者等等。由于这只是 Postgres 中的另一个表,因此您可以为其编写 RLS 策略,然后我们将这些 RLS 策略映射到存储中的 API 级别操作。例如,如果您能够读取

存储对象表中的特定行,这意味着您也可以读取存储中的实际对象。因此,如果您想下载一个对象,我们会告诉用户,嘿,如果您想让用户下载一个对象,请授予该用户对存储对象表中该特定行的选择权限。存储和删除也是如此。如果您想让用户删除一个对象,请确保他在存储对象表中具有 RLS 删除策略。这就是我们在 Supabase 存储中使用 RLS 的方式。实时类似,主要使用的地方是我们流式传输。实时功能最初是一种将数据库更改流式传输到客户端的方式。显然,您不希望

客户端监听所有数据库更改。同样,更改会根据为该特定用户强制执行的 RLS 策略进行过滤。如果用户根据 RLS 策略无法查看特定表,则对这些表的更改将不会过滤到该用户。

对于向量数据库,其主要优势在于,如果您使用 Supabase 向量(它基于名为 PG vector 的扩展构建),则所有嵌入都存储在您自己的数据库中,以及您的其他事务数据,对吧?因此,您同样可以对嵌入的子集进行训练。您可以进行训练

您可以将这些 PG 向量链接到数据库的其他部分。因此,一切仍然只是 Postgres,您可以像对 Postgres 中的任何其他数据类型一样编写 RLS 策略。这就是 RLS 与我们的向量产品集成的方式。这是一种确保我们为用户提供一致的方式

授权体验,无论他们使用哪个 Supabase 产品。如果您能够编写 SQL 并理解 RLS,它将为您提供一种在我们的整个产品集中拥有统一授权策略的方法。是的,太棒了。这是一个非常全面的覆盖范围。

我的意思是,Supabase 是否还有其他安全机制或集成目前还无法实现?或者它们是否在路线图上或在内部讨论?我们最近发布了很多内容。因此,我们发布的一项功能是

能够在您的 Supabase 仪表板本身启用 MFA。以前,当您通过 GitHub 登录时,建议是“在 GitHub 本身启用 2FA”,但我们的一些用户希望获得额外的安心,即“我不知道我的用户是否在 GitHub 上使用 MFA。我也希望在 Supabase 上强制执行 MFA。”我们推出了这项功能,我们推出了 SSO,

如果您想切换单点登录,它为您提供了一种简单的方法来拥有关于 Supabase 仪表板中用户的单一事实来源。我们有所有这些不同的东西。

我们最近实施的内容,我们再次推出了审计日志,了解仪表板中发生了什么、谁在何时更改了什么设置非常重要,因此所有这些信息都可以通过我们的审计日志找到,而我们正在努力改进的内容,我认为我们正在努力改进的一件事,我们也可能从一些

我们的听众那里获得一些反馈,那就是我们正在改进我们的权限系统。所以现在,当您

在您的 Supabase 组织中,您会获得一组特定的角色。您可以将某人指定为管理员、所有者、开发人员,或者您可以授予他们只读角色。但是我们的一些用户一直在要求更细致的权限,一种以其他几种方式限制用户的方法。所以我们仍在确定在我们系统上进行权限控制的正确方法是什么,我们正在研究这个问题。

在身份验证方面,既然我们已经讨论过这个问题,我们正在研究,例如,WebAuthn,这是一个新兴的标准,用于在您的网站和移动设备上进行登录。这是我们在身份验证方面正在研究的一件事。

是的,非常有趣。是的,WebAuthn,显然有很多 WebAuthn 密码,这取决于人们如何看待它。但是,是的,有很多关于它的讨论。我们有几期 SE Daily 的节目涵盖了即将到来或可能已经过去的这个话题。因此,如果您稍微改变一下话题,Supabase,从 Supabase 的绝对内部工作原理到

如果我们可能更多地转向合规性,并且越来越多的公司,无论是初创公司还是测试版以上的公司,都非常清楚,获得 SOC 2 合规性对他们来说是一个巨大的帮助。据我了解,Supabase 符合 SOC 2 第二类标准。对于您公司规模而言,这个过程是怎样的?

获得它,以及它如何影响您的日常工作,或者也许它不会,您知道如何保持这种合规性

是的,我们决定获得它的主要原因是,对于我们的一些客户来说,这甚至是对 Supabase 进行试用或原型设计的要求。这是我们的客户告诉我们的要求之一,嘿,如果您不符合 SOC 2 标准,我们将无法在我们的组织中使用 Supabase。所以那时我们开始考虑,好吧,让我们在 Supabase 本身获得此认证。

而且在公司早期,当我们员工较少时,通常也更容易实施这些内容。然后,一旦您规模很小,您的表面积也较小时,就会更容易。

较小。因此,我们为公司添加的每个新的工作负载或新员工,他们都会说,嘿,这就是我们在 Supabase 的做法。从那里扩展起来很容易。这就是我们也决定更早一些做这件事的另一个原因。是的,您提到了第一类和第二类,我们是 Supabase 符合第二类

SOC 2 标准,这意味着外部审计员已经验证 Supabase 已经按照我们的安全策略执行了一段时间。第一类只是确保在某个时间点我们符合标准,而对于第二类,审计员会来检查,嘿,这些人不仅在这一天遵循这些做法,而且在较长的一段时间内也遵循这些做法。并且是的,在

就变化而言,我不会说变化很大。最初确实需要相当大的努力来确保我们的所有策略都井然有序。您正在进行 SOC 2 审核。这不仅仅是一件技术性的事情。您还需要与您的员工团队合作,以确保员工的入职和离职都符合我们的政策规定。这是一件法律方面的事情,以确保我们在政策中拥有的任何内容都是

是有效的,我们愿意从法律角度坚持下去。显然,还有很多技术方面的事情。在技术方面,

我们坚信,而且我们也做得不错,那就是确保我们不会仅仅为了满足审计员的要求而实施某些东西。因此,我们希望避免任何形式的安全摆设。我们所做的一切都像

实际上提高了平台的安全性,而不是为了让审计员满意。因此,这再次涉及确保我们与我们的审计员进行讨论,并解释为什么这种其他方法可能没问题,并且与我们的策略一致,而不是他们可能看到其他一些公司所做的那样,对吧?这就是我们坚信的一点,这就是为什么在持续的基础上,

感觉我们并没有做太多事情来保持我们的 SOC 2 合规性。这只是日常工作。这些是我们无论如何都会为了保护我们的用户而做的事情。帮助我们遵守 SOC 2 合规性的另一件事

合规性之旅是许多这些工具,这些工具有助于监控您的云环境,以及我们使用的所有 SaaS 工具。因此,我们使用名为 Vanta 的工具来监控我们的环境,它们基本上会在某些内容即将违反合规性时向您发出警报。是的,在日常工作中,我们只是有一个 Slack 频道,这些警报会流入其中,然后我们

我们能够在 SLA 内对其进行修复。这就是 SOC 2 第二类标准。是的,它确保我们的用户数据得到尽可能最好的保护。编写策略可能需要时间,并确保公司中的每个人也同意,嘿,这就是我们做事的方式。从这个意义上说,这也是一个沟通问题。

它会影响我之前谈到的技术团队,甚至支持团队,例如。您如何确保支持团队了解我们如何处理客户数据的全部策略?什么可以?什么不可以?因此,就需要参与的团队数量而言,它的影响范围相当广泛。但是,是的,这非常重要,尤其是在我们与更多将此视为……的企业用户交谈时。

如今,对于您来说,这是一种必备条件,尤其是在您是一家数据库公司的情况下。而且,您知道,这可能无法奏效或没有意义,但是,您知道,如果一家公司,

Supabase,他们正在寻求 SOC 2 合规性,Supabase 符合第二类标准这一事实是否会为该公司节省大量工作,或者它是否并非如此?这是其中的一部分,对吧?因此,在我们进行 SOC 2 审核时,我们必须做的一件事也是确保我们使用的大多数供应商也符合 SOC 2 标准,或者我们必须向他们发送某种问卷调查以

确保他们符合我们对用户和审计员做出的承诺。因此,Supabase 符合 SOC 2 标准并不自动意味着您也符合 SOC 2 标准,但至少您使用 Supabase 的部分,再次声明,我不是律师,您可能应该与您自己的审计员交谈,并仔细检查我说的话。但是,是的,如果您专门使用 Supabase

作为您的供应商之一,您需要确保我们的 SOC 2 报告与您现有的策略相符。如果您使用的是 Supabase 的团队计划,您可以索取我们的完整 SOC 2 报告,我们在其中详细说明了我们所有现有的安全策略、我们使用的加密方法、我们多久轮换一次密钥,所有这些内容都在该报告中进行了记录。并且

然后,当您从我们这里获得报告后,在您进行 SOC 2 流程的过程中,您需要确保,嘿,Supabase 正在这样做,而我正在向我的审计员承诺这一点,并且两者都匹配。所以我认为 Supabase 没问题。您还需要对您使用的所有其他供应商执行此操作。因此,这是故事的一部分,但对于您获得 SOC 2 合规性而言,这并不是完整的故事。

我想特别指出我喜欢 Supabase 的一件事,那就是面向外部的网站,在页脚上,您有 lawyers.txt、security.txt,这些都是人们需要了解 Supabase 的内容,而您只是将它们放在非常容易找到的地方。我认为这是一种非常好的做法。我建议人们查看一下,并可能从 Supabase 的做法中学习

从 Supabase 的做法中学习,以用于他们自己的公司。而且,您知道,Supabase 也符合 HIPAA 或 H-I-P-A 标准。而且,您知道,这主要与健康数据有关。那么是什么促使了这一点呢?因为这是,这是否是因为客户将其用于此目的,而您不得不做出反应或采取更积极主动的措施?

然而,这一次是客户询问他们是否可以在 Supabase 之上构建医疗保健应用程序。

是的,因此 HIPAA 是美国关于我们如何管理医疗保健数据的法规。在我们获得认证之前,我们无法建议您使用 Supabase 托管平台来构建这些应用程序。我们过去常常告诉他们,好的,您可以自己托管它,您可以自行托管 Supabase 并确保您的环境符合 HIPAA 标准,但是我们的

在我们让审计员验证我们之前,托管环境还没有。一旦我们开始收到更多此类请求,我们就决定,好的,我们已经完成了软件第二类标准。让我们看看获得 HIPAA 标准需要什么。

是的,一旦您完成了第二类标准,对于 HIPAA,我们不需要做太多额外的事情。我的意思是,需要更改一些技术方面的策略。这是事件管理流程,需要稍微调整一下。如果医疗保健数据被泄露,我们有业务关联协议,该协议

是的,如果您想符合 HIPAA 标准,这是我们的用户与我们签订的协议。如果我们与我们的用户签订了 PA 协议,那么我们需要做一些额外的事情来确保他们被告知在什么时间段内被告知,他们是否被告知

我们是否向他们提供了足够的信息,以确保他们知道哪些数据被泄露,何时被泄露。如果我们发现数据被泄露,我们已经对我们现有的用户执行了这些操作,但这使得我们必须遵守的时间表、格式等等更加严格。因此,一旦

一旦我们符合 HIPAA 标准,该策略就需要稍微调整一下。还有一些其他事情我们已经做到了,例如确保您的工作站或计算机具有正确的屏幕锁定功能。它具有,HIPAA 似乎要求一些非常具体的事情,例如,因此我们必须确保我们有证据表明我们已经在这样做。并且

对于 SOFT2,另一个重要的事情是,对于 SOFT2,我们需要确保所有供应商都符合 SOFT2 标准。对于 HIPAA,同样如此。我们需要确保我们的供应商愿意与我们签订业务关联协议。因此,这基本上是针对云提供商(如 AWS)以及我们使用的所有其他接触医疗保健数据的服务,并与他们中的每一个签订业务关联协议。

是的,这就是我们为 HIPAA 所做的工作。我们还针对 HIPAA 专门制定了共享责任模型。我们在本期节目中之前讨论过共享责任的通用问题,但是是的,对于 HIPAA,您需要确保您的点时间恢复已启用。您需要确保您的

网络限制已启用,因此您的 Supabase 项目不会完全暴露于互联网。我们有一些针对 HIPAA 要求的用户需要执行的单独要求。但总的来说,在我们已经获得 SOC 2 第二类认证后,获得此认证要简单得多。是的,非常有趣。而且,没有……的短缺。

即使在今天,医疗技术和医疗保健初创公司也在不断涌现。而且,您知道,我认为这通常是被一些参与者略微忽视的事情,他们开始时会说,哦,一旦我们取得明显的成功,我们将获得 HIPAA 认证,然后意识到,哦,我们将回去尝试使其成为可能。这很复杂,所以您知道,当您开始使用 Supabase 时,正如您所说,这是一个共享责任模型,因此它绝不会自行承担您所有的责任,但它肯定会帮助您,您知道,如果任何潜在的未来医疗保健初创公司的 CTO 或 CEO 正在收听,您可能希望查看 Supabase,尤其是从

角度来看,在我们结束之前,我们在这期节目中涵盖了很多内容,这真是太棒了,就像听到您知道即将推出的 Supabase 的一些令人兴奋的功能一样,您能否谈谈这些功能可能是什么?