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

How to block "Select *" but at the same time SELECT/READ permissions should be granted though in PostgreSQL

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

所以我只需要给他们 READ/SELECT 权限,同时我需要阻止 SELECT * from Tablename.

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

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

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

授权命令是这样的:

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

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