Sql 非常安全的研究生许可证

Sql 非常安全的研究生许可证,sql,database,postgresql,security,permissions,Sql,Database,Postgresql,Security,Permissions,假设我的Postgres数据库中有四个表,其中两个表是私有的,包含高度敏感的信息(private1和private2),还有两个表包含我希望世界上任何人都能任意查询的信息(public1和public2)。我知道这是一个非常糟糕的设计,但请容忍我 我想设置一个用户,该用户可以在两个公共表上单独运行SELECTs,但不能对其他两个表(或更一般的数据库)执行任何其他操作 我天真的做法是设置一个新的用户public\u queryer,从public\u queryer运行REVOKE ALL ON

假设我的Postgres数据库中有四个表,其中两个表是私有的,包含高度敏感的信息(
private1
private2
),还有两个表包含我希望世界上任何人都能任意查询的信息(
public1
public2
)。我知道这是一个非常糟糕的设计,但请容忍我

我想设置一个用户,该用户可以在两个公共表上单独运行
SELECT
s,但不能对其他两个表(或更一般的数据库)执行任何其他操作

我天真的做法是设置一个新的用户
public\u queryer
,从public\u queryer运行
REVOKE ALL ON private1、private2、public1、public2然后
将public1上的SELECT、public2授予public\u查询者

我暗自怀疑,这并没有满足我的安全要求,因为有些我不知道的微妙之处,我非常希望对这种怀疑进行抽查


干杯

您只能撤消以前授予的权限

使用
psql
中的
\z table_name
检查权限

如果未看到任何内容,则表具有默认权限:只有表所有者才能访问它

在这种情况下,将
SELECT
授予角色的公共表,而不对私有表执行任何操作


如果已经在私有表上授予了权限,请根据需要撤销它们。

在dba.stackexchange.com上,您可能会得到更好的答案。保护数据库中的数据,同时向用户公开数据比设置数据库权限要复杂得多。这个问题太宽泛了,不能用这种形式很好地回答。@GaborLengyel理解–您有任何参考资料可以帮助解释如何实施我上面所述的内容吗?