网络访问限制
每个Supabase项目都带有可配置的IP范围限制,用于控制哪些IP可以连接到Postgres及其连接池(即"您的数据库")。这些限制会在流量到达数据库之前强制执行。如果某个连接未被IP限制,它仍需要使用有效的数据库凭据进行身份验证才能成功连接。
如果直接连接到数据库的请求解析为IPv6地址,您需要同时将IPv4和IPv6 CIDR添加到允许列表中。网络限制将应用于所有数据库连接路径,无论是通过连接池还是直接连接。您需要同时添加允许的IPv4和IPv6网络。有两个例外情况:如果您获得了IPv6迁移的延期许可,或者您购买了IPv4附加组件,则只需添加IPv4 CIDR即可。
通过控制台开始配置:
网络限制可以在数据库设置页面进行配置。请确保您对要启用网络限制的项目拥有所有者或管理员权限。
通过 CLI 开始使用
- 安装 Supabase CLI 1.22.0 或更高版本
- 使用 CLI 登录您的 Supabase 账户
- 如果您的项目创建于 2022 年 12 月 23 日之前,需要先升级到最新 Supabase 版本才能使用网络限制功能
- 确保您对要启用网络限制的项目拥有所有者或管理员权限
检查限制
您可以使用 CLI 的 get
子命令来获取当前生效的限制规则。
如果已应用限制规则,get
命令的输出将显示允许连接的 IP 范围:
1234> supabase network-restrictions --project-ref {ref} get --experimentalDB Allowed IPv4 CIDRs: &[183.12.1.1/24]DB Allowed IPv6 CIDRs: &[2001:db8:3333:4444:5555:6666:7777:8888/64]Restrictions applied successfully: true
如果您的项目从未应用过限制规则,允许的 CIDR 列表将为空,且规则尚未应用(显示"Restrictions applied successfully: false")。此时所有 IP 都可以连接到您的数据库:
1234> supabase network-restrictions --project-ref {ref} get --experimentalDB Allowed IPv4 CIDRs: []DB Allowed IPv6 CIDRs: []Restrictions applied successfully: false
更新限制规则
update
子命令用于为项目应用网络限制规则:
1234> supabase network-restrictions --project-ref {ref} update --db-allow-cidr 183.12.1.1/24 --db-allow-cidr 2001:db8:3333:4444:5555:6666:7777:8888/64 --experimentalDB Allowed IPv4 CIDRs: &[183.12.1.1/24]DB Allowed IPv6 CIDRs: &[2001:db8:3333:4444:5555:6666:7777:8888/64]Restrictions applied successfully: true
指定的CIDR格式限制规则将替换之前设置的所有规则。如需在现有规则基础上新增,必须在update
命令提供的CIDR列表中包含原有的限制规则。
移除限制规则
要移除项目的所有限制规则,可以使用update
子命令并指定CIDR为0.0.0.0/0
:
1234> supabase network-restrictions --project-ref {ref} update --db-allow-cidr 0.0.0.0/0 --db-allow-cidr ::/0 --experimentalDB Allowed IPv4 CIDRs: &[0.0.0.0/0]DB Allowed IPv6 CIDRs: &[::/0]Restrictions applied successfully: true
限制说明
- 当前版本的网络限制仅适用于Postgres连接和数据库连接池,暂不适用于通过HTTPS提供的API服务(如PostgREST、存储和认证服务)。这包括使用supabase-js等Supabase客户端库的情况。
- 若启用了网络限制,从边缘函数直接访问数据库将始终被阻止。建议使用supabase-js客户端库来从边缘函数连接受网络限制的数据库。