平台

网络限制


每个 Supabase 项目都带有可配置的限制,用于控制允许连接到 Postgres 及其池化器的 IP 范围(“您的数据库”)。这些限制在流量到达您的数据库之前得到执行。如果连接未被 IP 限制,它仍然需要使用有效的数据库凭据成功进行身份验证。

如果直接连接到您的数据库 解析为 IPv6 地址,您需要将 IPv4 和 IPv6 CIDR 都添加到允许的 CIDR 列表中。网络限制将应用于所有数据库连接路由,无论是池化连接还是直接连接。您需要添加您想要允许的 IPv4 和 IPv6 网络。有两个例外:如果您获得了 IPv6 迁移的延期许可,或者您购买了 IPv4 插件,则只需要添加 IPv4 CIDR。

要通过仪表板开始使用:#

可以在数据库设置页面配置网络限制。请确保您拥有所有者或管理员权限才能为项目启用网络限制。

要通过管理 API 开始使用:#

您还可以使用管理 API 管理网络限制

1
# Get your access token from https://supabase.org.cn/dashboard/account/tokens
2
export SUPABASE_ACCESS_TOKEN="your-access-token"
3
export PROJECT_REF="your-project-ref"
4
5
# Get current network restrictions
6
curl -X GET "https://api.supabase.com/v1/projects/$PROJECT_REF/network-restrictions" \
7
-H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN"
8
9
# Update network restrictions
10
curl -X POST "https://api.supabase.com/v1/projects/$PROJECT_REF/network-restrictions/apply" \
11
-H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \
12
-H "Content-Type: application/json" \
13
-d '{
14
"db_allowed_cidrs": [
15
"192.168.0.1/24",
16
]
17
}'

要通过 CLI 开始使用:#

  1. 安装 Supabase CLI 1.22.0+。
  2. 登录 到您的 Supabase 帐户使用 CLI。
  3. 如果您的项目是在 2022 年 12 月 23 日之前创建的,则需要将其升级到最新的 Supabase 版本,然后才能使用网络限制。
  4. 请确保您拥有所有者或管理员权限才能为项目启用网络限制。

检查限制#

您可以使用 CLI 的 get 子命令来检索当前生效的限制。

如果已应用限制,get 命令的输出将反映允许连接的 IP 范围

1
> supabase network-restrictions --project-ref {ref} get --experimental
2
DB Allowed IPv4 CIDRs: &[183.12.1.1/24]
3
DB Allowed IPv6 CIDRs: &[2001:db8:3333:4444:5555:6666:7777:8888/64]
4
Restrictions applied successfully: true

如果从未将限制应用于您的项目,允许的 CIDR 列表将为空,但它们也不会被应用(“已成功应用限制:false”)。因此,所有 IP 都可以连接到您的数据库

1
> supabase network-restrictions --project-ref {ref} get --experimental
2
DB Allowed IPv4 CIDRs: []
3
DB Allowed IPv6 CIDRs: []
4
Restrictions applied successfully: false

更新限制#

update 子命令用于将网络限制应用于您的项目

1
> 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 --experimental
2
DB Allowed IPv4 CIDRs: &[183.12.1.1/24]
3
DB Allowed IPv6 CIDRs: &[2001:db8:3333:4444:5555:6666:7777:8888/64]
4
Restrictions applied successfully: true

指定的限制(以 CIDR 形式)将替换可能之前应用的任何限制。要添加到现有限制,您必须在提供给 update 命令的 CIDR 列表中包含现有限制。

删除限制#

要删除项目上的所有限制,可以使用 CIDR 0.0.0.0/0update 子命令。

1
> supabase network-restrictions --project-ref {ref} update --db-allow-cidr 0.0.0.0/0 --db-allow-cidr ::/0 --experimental
2
DB Allowed IPv4 CIDRs: &[0.0.0.0/0]
3
DB Allowed IPv6 CIDRs: &[::/0]
4
Restrictions applied successfully: true

限制#

  • 当前的网络限制迭代适用于连接到 Postgres 和数据库池化器;它当前不适用于通过 HTTPS 提供的 API(例如,PostgREST、Storage 和 Auth)。这包括使用 Supabase 客户端库(如 supabase-js)。
  • 如果启用了网络限制,则始终会阻止从 Edge Functions 直接访问您的数据库。建议使用 Supabase 客户端库 supabase-js 从 Edge Functions 连接到具有网络限制的数据库。