Database PostgreSQL中特定于某些数据库的超级用户角色
我已创建具有超级用户权限的用户角色。我的服务器上大约有30个数据库。我只想将此角色分配给DB。当前角色允许用户作为超级用户访问所有数据库。我如何限制他作为超级用户访问其他数据库 这是我分配超级用户时使用的方法:Database PostgreSQL中特定于某些数据库的超级用户角色,database,postgresql,role,superuser,Database,Postgresql,Role,Superuser,我已创建具有超级用户权限的用户角色。我的服务器上大约有30个数据库。我只想将此角色分配给DB。当前角色允许用户作为超级用户访问所有数据库。我如何限制他作为超级用户访问其他数据库 这是我分配超级用户时使用的方法: CREATE ROLE fc LOGIN SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION; 有人能帮我吗?PostgreSQL中没有针对特定于数据库的超级用户的工具 无论如何,这是没有意义的,因为通常只有超级用户的操
CREATE ROLE fc LOGIN
SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
有人能帮我吗?PostgreSQL中没有针对特定于数据库的超级用户的工具
无论如何,这是没有意义的,因为通常只有超级用户的操作才允许相对容易地升级以更好地控制数据库系统。PostgreSQL中没有针对特定于数据库的超级用户的功能
无论如何,这是没有意义的,因为通常只有超级用户的操作才允许相对容易地升级以更好地控制数据库系统。正如@Craig所解释的,你不能(即使你可以,也毫无意义) 实现受限超级用户权限的常用方法是作为现有超级用户角色进行连接,并创建包含一组有限的已批准命令的文件。这些函数现在将以创建者而不是调用方的权限执行 但是您需要非常小心,不要打开任何注入漏洞,因为函数中的所有内容都将作为超级用户运行。例如,调用者可以编写一个自定义的
=
操作符,授予他们超级用户权限,并将其放在他们的搜索路径中,因此您需要绝对确保您正在使用pg_目录
模式中的=
至少,你应该:
- 使用子句
创建所有这些函数。SECURITY DEFINER SET search\u path TO pg\u catalog,pg\u temp
模式必须始终包含在列表的末尾(如果省略,它将隐式包含在列表的开头)pg_temp
- 架构限定您的函数引用的任何其他表、函数等(例如,
,而不仅仅是public.MyTable
),并确保所有这些都是超级用户拥有的(以便调用方不能将恶意代码放入触发器等)MyTable
- 未经详尽验证,切勿将用户输入放入动态查询字符串(
)执行“选择…”
=
操作符,授予他们超级用户权限,并将其放在他们的搜索路径中,因此您需要绝对确保您正在使用pg_目录
模式中的=
至少,你应该:
- 使用子句
创建所有这些函数。SECURITY DEFINER SET search\u path TO pg\u catalog,pg\u temp
模式必须始终包含在列表的末尾(如果省略,它将隐式包含在列表的开头)pg_temp
- 架构限定您的函数引用的任何其他表、函数等(例如,
,而不仅仅是public.MyTable
),并确保所有这些都是超级用户拥有的(以便调用方不能将恶意代码放入触发器等)MyTable
- 未经详尽验证,切勿将用户输入放入动态查询字符串(
)执行“选择…”