防止用户更改PostgreSQL的默认权限
我正在测试PostgreSQL上的数据库权限,并试图阻止普通用户(readuser)执行“alterdefaultprivileges”语句。但是,我找不到撤销此特定权限的方法,并且在文档中也找不到有关此权限的任何内容 我启动了一个本地PostgreSQL 11.2实例,删除了连接权限,创建了一个数据库testdb,并撤销了在public架构上的表创建防止用户更改PostgreSQL的默认权限,sql,privileges,postgresql-11,Sql,Privileges,Postgresql 11,我正在测试PostgreSQL上的数据库权限,并试图阻止普通用户(readuser)执行“alterdefaultprivileges”语句。但是,我找不到撤销此特定权限的方法,并且在文档中也找不到有关此权限的任何内容 我启动了一个本地PostgreSQL 11.2实例,删除了连接权限,创建了一个数据库testdb,并撤销了在public架构上的表创建 revoke connect on database postgres from public; create database testdb
revoke connect on database postgres from public;
create database testdb with template template0 --lc_collate "pt_BR.utf8" lc_ctype "pt_BR.utf8";
revoke connect on database testdb from public;
\c :database
revoke all on schema public from public;
grant all on schema public to postgres;
create schema private;
之后,我创建了一个仅具有读取权限的用户:
create user readuser
with nosuperuser
nocreatedb
nocreaterole
noreplication
login
encrypted password 'testpassword';
grant connect
on database testdb
to readuser;
然后创建一个schematestschema,并授予对其表的读取权限:
grant usage
on schema testschema
to readuser;
grant select
on all tables
in schema testschema
to readuser;
即使我只对所有架构和表设置了读取权限,“readuser”用户仍然可以执行“alter default PRIVITES”查询,而不会出现权限错误:
alter default privileges in schema testschema grant select on tables to readuser;
ALTER DEFAULT PRIVILEGES
我希望获得一些帮助,以防止用户更改其默认权限,从而使其不会干扰将来创建的表的权限。请尝试从角色
postgres
中撤消执行,该角色将默认的执行权限授予readuser
ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA testschema REVOKE EXECUTE ON FUNCTIONS FROM readuser;