我有一个用户sns.pairplot(iris,hue="species",diag_kws=dict(color="b"))
。
在我的数据库中,我有两个模式:just_one_schema_user
和public
如何使该用户仅看到sample
?
这就是我所做的:
sample
GRANT USAGE ON SCHEMA sample TO just_one_schema_user
但是用户仍然可以在REVOKE ALL PRIVILEGES ON SCHEMA public FROM just_one_schema_user
中列出表并查看其结构。
答案 0 :(得分:1)
正如伊斯林格(Islingre)所说,没有一种很好的方法可以向用户隐藏该信息。
您将不得不拒绝用户访问pg_class
,pg_namespace
和pg_proc
及类似表。如果将allow_system_table_mods
设置为on
,可以完成 ,PostgreSQL将继续运行,但是很多事情将不再起作用:
使用psql
或\d
之类的\dt
实用程序命令
其他工具的类似工具
监视系统
基本上,您将无法再看到任何元数据。
无法让用户只看到一些元数据,它是全部还是全部。
但这不是问题。没有充分的理由保留任何人的元数据-这是公共信息。
PostgreSQL不认为这是一个安全问题。仅仅因为我知道有一个表customer
和一列credit_card_number
,如果权限设置正确,我就无法更接近访问它。
public
中对对象的访问 : REVOKE
删除了从未被授予的特权,将无声无息。
模式USAGE
的{{1}}特权被授予public
,而不是PUBLIC
。
使用它来显示just_one_schema_user
中的权限:
psql
您正在寻找:
\dn+
我建议不将应用程序数据存储在REVOKE CREATE, USAGE ON SCHEMA public FROM public;
中,仅存储扩展名。然后不要撤消public
,而只能撤消USAGE
。