撤销角色对 postgres 数据库的访问
Revoke access to postgres database for a role
我为某个用户创建了一个单独的角色 "newrole" 和新模式 "newschema",它们应该只执行一些存储的功能。我已设法撤销对当前数据库的架构 "public" 的访问权限。
以 "newrole" 身份登录我仍然可以像这样访问 postgres 数据库:
SELECT * FROM pg_user
我想撤销对 postgres 数据库的所有访问权限,并尝试了以下方法无效:
REVOKE ALL ON DATABASE postgres FROM newrole
当以 newrole 身份登录时,我仍然可以读取 postgres 数据库。
如何撤销对 postgres 管理数据库的任何访问权限?
我搜索了很长时间,但没有找到任何关于访问 postgres 管理数据库的信息。
TIA,
你应该能够运行这个:
select * FROM information_schema.table_privileges where grantee = 'newrole';
显示新角色的所有权限。有了这些信息,您应该能够明确撤销除访问 'newschema'
之外的所有内容
此问题与数据库无关postgres
。相反,您想操作当前数据库的 catalog。每个数据库都有关于模式 pg_catalog
中所有对象的信息目录,并且在模式 information_schema
中以符合标准的形式存在,因此您应该限制对相关角色以及 public
角色,因为每个角色也是该角色的成员:
REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM newrole;
REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM public;
REVOKE ALL PRIVILEGES ON SCHEMA information_schema FROM newrole;
REVOKE ALL PRIVILEGES ON SCHEMA information_schema FROM public;
但是,系统并不总是遵守这种全面的限制,目录存在是有原因的,并且在数据库中提供了重要的功能。特定功能可能仍会执行。
一般来说,除非您真的知道自己在做什么,否则您不想fiddle使用目录。
我为某个用户创建了一个单独的角色 "newrole" 和新模式 "newschema",它们应该只执行一些存储的功能。我已设法撤销对当前数据库的架构 "public" 的访问权限。
以 "newrole" 身份登录我仍然可以像这样访问 postgres 数据库:
SELECT * FROM pg_user
我想撤销对 postgres 数据库的所有访问权限,并尝试了以下方法无效:
REVOKE ALL ON DATABASE postgres FROM newrole
当以 newrole 身份登录时,我仍然可以读取 postgres 数据库。
如何撤销对 postgres 管理数据库的任何访问权限?
我搜索了很长时间,但没有找到任何关于访问 postgres 管理数据库的信息。
TIA,
你应该能够运行这个:
select * FROM information_schema.table_privileges where grantee = 'newrole';
显示新角色的所有权限。有了这些信息,您应该能够明确撤销除访问 'newschema'
之外的所有内容此问题与数据库无关postgres
。相反,您想操作当前数据库的 catalog。每个数据库都有关于模式 pg_catalog
中所有对象的信息目录,并且在模式 information_schema
中以符合标准的形式存在,因此您应该限制对相关角色以及 public
角色,因为每个角色也是该角色的成员:
REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM newrole;
REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM public;
REVOKE ALL PRIVILEGES ON SCHEMA information_schema FROM newrole;
REVOKE ALL PRIVILEGES ON SCHEMA information_schema FROM public;
但是,系统并不总是遵守这种全面的限制,目录存在是有原因的,并且在数据库中提供了重要的功能。特定功能可能仍会执行。
一般来说,除非您真的知道自己在做什么,否则您不想fiddle使用目录。