set_user
增加了日志记录的 SET ROLE
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
set_user | 4.2.0 | SEC | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 7370 | set_user | 否 | 是 | 是 | 是 | 否 | 否 | - |
| 相关扩展 | pg_permissions login_hook pg_auth_mon pg_session_jwt auth_delay pgaudit pg_roast pg_readonly acl pg_command_fw |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 4.2.0 | 1817161514 | set_user | - |
| RPM | PGDG | 4.2.0 | 1817161514 | set_user_$v | - |
| DEB | PGDG | 4.2.0 | 1817161514 | postgresql-$v-set-user | - |
安装
您可以直接安装 set_user 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
预加载配置:
BASH
创建扩展:
SQL
用法
set_user 允许切换用户和可选的权限提升,并提供增强的审计日志。当非特权用户必须提升为超级用户或对象所有者角色进行维护任务时,它提供额外的控制层。
SQL
配置
添加到 postgresql.conf:
INI
| 参数 | 默认值 | 描述 |
|---|---|---|
set_user.block_alter_system | on | 提升权限后阻止 ALTER SYSTEM |
set_user.block_copy_program | on | 提升权限后阻止 COPY PROGRAM |
set_user.block_log_statement | on | 阻止 SET log_statement;对超级用户强制 log_statement=all |
set_user.superuser_allowlist | * | 允许提升为超级用户的角色 |
set_user.nosuperuser_target_allowlist | * | 允许作为非超级用户目标的角色 |
set_user.superuser_audit_tag | AUDIT | 提升权限时附加到 log_line_prefix 的标签 |
函数
SQL
权限设置
SQL
提升权限时的行为
当提升为超级用户角色时:
- 角色转换会以特定标记记录
ALTER SYSTEM和COPY PROGRAM被阻止(如已配置)log_statement被强制设为all以实现完整审计追踪AUDIT标签被附加到log_line_prefix