supautils

用于在云环境中确保数据库集群的安全

概览

扩展包名版本分类许可证语言
supautils3.1.0SECApache-2.0C
ID扩展名BinLibLoadCreateTrustReloc模式
7010supautils-
相关扩展passwordcheck_cracklib pgsodium supabase_vault pg_session_jwt anon pg_tde pgsmcrypto pgaudit

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY3.1.01817161514supautils-
RPMPIGSTY3.1.01817161514supautils_$v-
DEBPIGSTY3.1.01817161514postgresql-$v-supautils-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
d13.aarch64
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
u22.x86_64
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
u22.aarch64
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
u24.x86_64
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
u24.aarch64
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0
PIGSTY 3.1.0

构建

您可以使用 pig build 命令构建 supautils 扩展的 RPM / DEB 包:

pig build pkg supautils         # 构建 RPM / DEB 包

安装

您可以直接安装 supautils 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

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: 在云环境中保护集群安全的扩展

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 策略。


最后修改 2026-03-14: update extension metadata (953cbd0)