supautils
用于在云环境中确保数据库集群的安全
仓库
supabase/supautils
https://github.com/supabase/supautils
源码
supautils-3.1.0.tar.gz
supautils-3.1.0.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
supautils | 3.1.0 | SEC | Apache-2.0 | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 7010 | supautils | 否 | 是 | 是 | 否 | 否 | 否 | - |
| 相关扩展 | passwordcheck_cracklib pgsodium supabase_vault pg_session_jwt anon pg_tde pgsmcrypto pgaudit |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 3.1.0 | 1817161514 | supautils | - |
| RPM | PIGSTY | 3.1.0 | 1817161514 | supautils_$v | - |
| DEB | PIGSTY | 3.1.0 | 1817161514 | postgresql-$v-supautils | - |
构建
您可以使用 pig build 命令构建 supautils 扩展的 RPM / DEB 包:
pig build pkg supautils # 构建 RPM / DEB 包
安装
您可以直接安装 supautils 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install supautils; # 当前活跃 PG 版本安装
pig ext install -y supautils -v 18 # PG 18
pig ext install -y supautils -v 17 # PG 17
pig ext install -y supautils -v 16 # PG 16
pig ext install -y supautils -v 15 # PG 15
pig ext install -y supautils -v 14 # PG 14
dnf install -y supautils_18 # PG 18
dnf install -y supautils_17 # PG 17
dnf install -y supautils_16 # PG 16
dnf install -y supautils_15 # PG 15
dnf install -y supautils_14 # PG 14
apt install -y postgresql-18-supautils # PG 18
apt install -y postgresql-17-supautils # PG 17
apt install -y postgresql-16-supautils # PG 16
apt install -y postgresql-15-supautils # PG 15
apt install -y postgresql-14-supautils # PG 14
预加载配置:
shared_preload_libraries = 'supautils';
用法
supautils 是一个可加载库,允许非超级用户安全地创建事件触发器、发布和扩展。它完全通过配置管理 —— 不会向数据库添加表、函数或安全标签。
配置
添加到 postgresql.conf:
shared_preload_libraries = 'supautils'
supautils.privileged_role = 'your_privileged_role'
或按角色启用:
ALTER ROLE role1 SET session_preload_libraries TO 'supautils';
关键 GUC 参数
| 参数 | 描述 |
|---|---|
supautils.privileged_role | 超级用户操作的代理角色 |
supautils.superuser | 实际的超级用户(默认为引导用户) |
supautils.privileged_extensions | 允许非超级用户安装的扩展 |
supautils.privileged_role_allowed_configs | 特权角色可更改的超级用户专属设置 |
supautils.reserved_roles | 受保护不可被 CREATEROLE 用户修改的角色 |
supautils.reserved_memberships | 受限不可授予的角色成员关系 |
supautils.constrained_extensions | 定义扩展资源约束的 JSON |
supautils.extensions_parameter_overrides | 覆盖 CREATE EXTENSION 参数的 JSON |
supautils.policy_grants | 授予非所有者 RLS 策略管理权限的 JSON |
supautils.drop_trigger_grants | 授予非所有者触发器删除权限的 JSON |
非超级用户发布
SET ROLE privileged_role;
CREATE PUBLICATION p FOR ALL TABLES;
DROP PUBLICATION p;
特权扩展
supautils.privileged_extensions = 'hstore'
非超级用户可以创建通常需要超级用户权限的扩展:
CREATE EXTENSION hstore;
保留角色
supautils.reserved_roles = 'connector, storage_admin'
具有 CREATEROLE 权限的用户无法 ALTER 或 DROP 这些角色。
表所有权绕过(RLS 策略管理)
supautils.policy_grants = '{ "my_role": ["public.not_my_table"] }'
允许 my_role 管理其不拥有的表上的 RLS 策略。