supautils
supautils : Extension that secures a cluster on a cloud environment
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 7010 | supautils | supautils | 3.4.4 |
SEC | Apache-2.0 | C |
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
| --sL--- | No | Yes | Yes | No | no | no |
| Relationships | |
|---|---|
| See Also | pg_command_fw pgextwlist block_copy_command pg_kpart noset sepgsql |
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | PIGSTY | 3.4.4 |
18 17 16 15 14 | supautils |
- |
| RPM | PIGSTY | 3.4.4 |
18 17 16 15 14 | supautils_$v |
- |
| DEB | PIGSTY | 3.4.4 |
18 17 16 15 14 | postgresql-$v-supautils |
- |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| el8.aarch64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| el9.x86_64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| el9.aarch64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| el10.x86_64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| el10.aarch64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| d12.x86_64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| d12.aarch64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| d13.x86_64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| d13.aarch64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| u22.x86_64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| u22.aarch64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| u24.x86_64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| u24.aarch64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| u26.x86_64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
| u26.aarch64 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 | PIGSTY 3.4.4 |
Source
github.com/supabase/supautils
supautils-3.4.4.tar.gz
Install
Make sure PGDG and PIGSTY repo available:
Install this extension with pig:
Config this extension to shared_preload_libraries:
This extension does not need CREATE EXTENSION DDL command
Usage
Sources:
supautils is a loadable library that unlocks selected superuser-only PostgreSQL features for non-superusers through configuration. Upstream emphasizes that it adds no tables, functions, or security labels to the database.
Load it
Cluster-wide:
Per role:
Privileged role capabilities
The README documents a privileged proxy role that can create publications, foreign data wrappers, event triggers, and privileged extensions without granting SUPERUSER.
For event triggers, the README says privileged-role triggers run for non-superusers, skip superusers, and also skip reserved roles. It also documents one limitation: those triggers do not fire while creating publications, foreign data wrappers, or extensions.
Important configuration knobs
supautils.superusersupautils.privileged_rolesupautils.privileged_role_allowed_configssupautils.privileged_extensionssupautils.extension_custom_scripts_pathsupautils.constrained_extensionssupautils.extensions_parameter_overridessupautils.policy_grantssupautils.drop_trigger_grantssupautils.reserved_rolessupautils.reserved_membershipssupautils.hint_rolessupautils.log_skipped_evtrigs
Useful examples
Allow a non-superuser to create specific privileged extensions:
Allow a role to manage RLS policies on tables it does not own:
Force an extension into a specific schema on CREATE EXTENSION:
Protect managed-service roles from CREATEROLE users:
Version Selection and Operational Boundaries
supautils.restrict_extension_versions controls explicit version clauses for non-superusers: off allows them, warn ignores them and selects the control-file default with a warning, and error rejects them. This applies to both extension creation and upgrades; superusers and the configured proxy superuser are exempt. Omitting an explicit version remains allowed subject to normal privilege checks.
Cluster preload requires a restart; role-specific session preload applies to new connections. Do not run CREATE EXTENSION for supautils itself. Source release 3.4.4 is a library update and has no SQL extension-update step. It avoids ACCESS EXCLUSIVE locks during allowlisted-table policy checks and restores the caller’s role on every exit from an elevated region.
Review allowed extensions and custom scripts as trusted code because their operations run with delegated superuser privileges. Enhanced privilege hints do not work for views on PostgreSQL 18 according to the tagged README. Test role transitions, event-trigger ownership and reserved-role protections before broadening grants.