Sql 非常安全的研究生许可证
假设我的Postgres数据库中有四个表,其中两个表是私有的,包含高度敏感的信息(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
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理解–您有任何参考资料可以帮助解释如何实施我上面所述的内容吗?