只授予对postgreSQL中一个架构的访问权限
我有一个用户只授予对postgreSQL中一个架构的访问权限,sql,database,postgresql,database-schema,pgadmin,Sql,Database,Postgresql,Database Schema,Pgadmin,我有一个用户只有一个用户\u schema\u user 在我的数据库中有两个模式:public和sample 如何让此用户只看到示例 这就是我所做的: 仅向一个模式用户授予模式示例的使用权 仅从一个SCHEMA用户撤销对SCHEMA public的所有权限 但是用户仍然可以在public中列出表并查看其结构。关于访问表元数据: 正如Islingre评论的那样,没有什么好方法可以向用户隐藏这些信息 您必须拒绝用户访问pg_类、pg_命名空间和pg_proc以及类似的表。如果您将allow\u s
只有一个用户\u schema\u user
在我的数据库中有两个模式:public
和sample
如何让此用户只看到示例
这就是我所做的:
仅向一个模式用户授予模式示例的使用权
仅从一个SCHEMA用户撤销对SCHEMA public的所有权限
但是用户仍然可以在public
中列出表并查看其结构。关于访问表元数据:
正如Islingre评论的那样,没有什么好方法可以向用户隐藏这些信息
您必须拒绝用户访问pg_类
、pg_命名空间
和pg_proc
以及类似的表。如果您将allow\u system\u table\u mods
设置为on
,PostgreSQL将继续运行,但许多功能将不再工作,则可以执行此操作:
- 使用
实用程序命令,如psql
或\d
\dt
- 其他工具的类似工具
- 监测系统
PostgreSQL不考虑安全问题。仅仅因为我知道有一个表
customer
有一列credit\u card\u number
,如果权限设置正确,我就无法更接近于访问它
关于访问public
中的对象:
一个REVOKE
删除了一个从未被授予的特权,它将不起任何作用
模式public
上的USAGE
权限被授予public
,而不是仅一个模式用户
使用此选项可显示psql
中的权限:
\dn+
您正在寻找:
REVOKE CREATE, USAGE ON SCHEMA public FROM public;
我建议不要在
public
中存储应用程序数据,只存储扩展。然后不要撤销用法
,只创建
我想这是不可能的。所有结构信息都存储在架构pg_目录
中,您不能撤消此架构上的权限,因为用户将失去从任何架构中查找任何对象的能力。@Islingre您关于pg_目录
的说法是正确的。然而,问题是关于public
@LaurenzAlbe是的。但只要我有权访问pg_目录,我就应该能够看到模式,不是吗?我不确定,但是如果取消某些其他模式的特权会影响对目录的查询,我会感到惊讶。哦,你是对的,对不起。