如何阻止"Select *"但同时应该在PostgreSQL中授予SELECT/READ权限



我不是数据库专家,也不是全栈开发人员。 我在PostgreSQL中有一个数据库,我需要以只读模式向开发人员授予数据库访问权限,但是如果我授予他们SELECT/READ ONLY权限,从编程的角度来看,他们将能够运行查询SELECT * from table-name并且他们还将获得JSON格式的完整数据,因为他们也在处理API。

所以我需要给他们仅读取/选择权限,同时我需要阻止SELECT * from Tablename

我认为这是不可能的,也可能不是,但你可以非常接近。

如果您授予选择,不是在表本身上,而是在表具有的列的适当子集上授予开发人员。 他们将无法发出select *查询。

因此,您需要添加一个额外的列,该列不用于数据,但您可以拒绝开发人员的访问。(可选)可以添加检查约束以确保未使用的列始终为 null。

授权命令如下所示:

GRANT SELECT ( list,of,"column",names) ON "table name" TO developers;

它必须是一个子集,如果您授予所有列,它们将被允许select *.

最新更新