PostgreSQL SSL 强制加密
您的 Supabase 项目支持在不启用 SSL 的情况下连接到 Postgres 数据库,以最大化客户端兼容性。为了增强安全性,您可以阻止不使用 SSL 的客户端连接。
禁用 SSL 强制仅适用于 Postgres 和 Supavisor("连接池")的连接;Supabase 提供的所有 HTTP API(如 PostgREST、存储、认证)都会自动强制所有传入连接使用 SSL。
通过控制面板管理 SSL 强制
SSL 强制可以通过控制面板数据库设置页面的 SSL 配置部分中的"强制传入连接使用 SSL"设置进行配置。
通过 CLI 管理 SSL 强制
开始前需要:
检查强制状态
您可以使用 CLI 的 get
子命令检查当前是否正在强制 SSL:
1supabase ssl-enforcement --project-ref {ref} get --experimental
如果正在强制 SSL 的响应:
1SSL is being enforced.
如果未强制 SSL 的响应:
1SSL is *NOT* being enforced.
更新强制执行
update
子命令用于更改项目的 SSL 强制执行状态:
1supabase ssl-enforcement --project-ref {ref} update --enable-db-ssl-enforcement --experimental
同样地,要禁用 SSL 强制执行:
1supabase ssl-enforcement --project-ref {ref} update --disable-db-ssl-enforcement --experimental
关于 Postgres SSL 模式的说明
Postgres 在客户端支持多种 SSL 模式。这些模式提供不同级别的保护。根据您的需求,验证正在使用的 SSL 模式是否执行了所需的 SSL 连接强制和验证非常重要。
Postgres 提供的最强模式是 verify-full
,当启用 SSL 强制执行时,这很可能是您想要使用的模式。要使用 verify-full
,您需要下载数据库的 Supabase CA 证书。该证书可通过仪表板中的数据库设置页面的 SSL 配置部分获取。
下载 CA 证书后,将其添加到 Postgres 使用的证书颁发机构列表中。
1cat {下载的 prod-ca-2021.crt 文件位置} >> ~/.postgres/root.crt
将 CA 证书添加到受信任的证书颁发机构列表后,使用 psql
或您的客户端库连接到 Supabase:
1psql "postgresql://aws-0-eu-central-1.pooler.supabase.com:6543/postgres?sslmode=verify-full" -U postgres.<user>