网络限制
如果找不到数据库设置底部的“网络限制”部分,请在基础设施设置中更新您的 Postgres 版本。
每个 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/tokens2export SUPABASE_ACCESS_TOKEN="your-access-token"3export PROJECT_REF="your-project-ref"45# Get current network restrictions6curl -X GET "https://api.supabase.com/v1/projects/$PROJECT_REF/network-restrictions" \7 -H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN"89# Update network restrictions10curl -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 开始使用:#
- 安装 Supabase CLI 1.22.0+。
- 登录 到您的 Supabase 帐户使用 CLI。
- 如果您的项目是在 2022 年 12 月 23 日之前创建的,则需要将其升级到最新的 Supabase 版本,然后才能使用网络限制。
- 请确保您拥有所有者或管理员权限才能为项目启用网络限制。
检查限制#
您可以使用 CLI 的 get 子命令来检索当前生效的限制。
如果已应用限制,get 命令的输出将反映允许连接的 IP 范围
1> supabase network-restrictions --project-ref {ref} get --experimental2DB Allowed IPv4 CIDRs: &[183.12.1.1/24]3DB Allowed IPv6 CIDRs: &[2001:db8:3333:4444:5555:6666:7777:8888/64]4Restrictions applied successfully: true如果从未将限制应用于您的项目,允许的 CIDR 列表将为空,但它们也不会被应用(“已成功应用限制:false”)。因此,所有 IP 都可以连接到您的数据库
1> supabase network-restrictions --project-ref {ref} get --experimental2DB Allowed IPv4 CIDRs: []3DB Allowed IPv6 CIDRs: []4Restrictions 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 --experimental2DB Allowed IPv4 CIDRs: &[183.12.1.1/24]3DB Allowed IPv6 CIDRs: &[2001:db8:3333:4444:5555:6666:7777:8888/64]4Restrictions applied successfully: true指定的限制(以 CIDR 形式)将替换可能之前应用的任何限制。要添加到现有限制,您必须在提供给 update 命令的 CIDR 列表中包含现有限制。
删除限制#
要删除项目上的所有限制,可以使用 CIDR 0.0.0.0/0 与 update 子命令。
1> supabase network-restrictions --project-ref {ref} update --db-allow-cidr 0.0.0.0/0 --db-allow-cidr ::/0 --experimental2DB Allowed IPv4 CIDRs: &[0.0.0.0/0]3DB Allowed IPv6 CIDRs: &[::/0]4Restrictions applied successfully: true限制#
- 当前的网络限制迭代适用于连接到 Postgres 和数据库池化器;它当前不适用于通过 HTTPS 提供的 API(例如,PostgREST、Storage 和 Auth)。这包括使用 Supabase 客户端库(如 supabase-js)。
- 如果启用了网络限制,则始终会阻止从 Edge Functions 直接访问您的数据库。建议使用 Supabase 客户端库 supabase-js 从 Edge Functions 连接到具有网络限制的数据库。