我们已经在执行ETL流程的Postgres数据库中开发了存储过程和函数。这是部署在客户端系统上的,因此我们需要保护我们的代码被客户端所滥用/修改。
有什么方法可以防止查看创建的存储过程/函数。 当前,我们提供了专用用户帐户,该用户帐户无法访问该功能,而只能访问表。由于数据库位于客户端,因此他们将能够使用管理帐户访问系统并获得对功能和存储过程的访问权限。
我们想设置密码/对修改过程进行加密。但应具有执行权限,而无需密码即可获得程序和功能。
我们正在使用postgres 11进行开发。
答案 0 :(得分:0)
您可以通过以下方式实现。
1)保留超级用户凭据,并撤消与架构有关的所有访问。
REVOKE ALL ON schema public FROM public;
编辑:执行上述命令后,只有超级用户才能在公共架构内创建新对象,这是不实际的。假定应向非超级用户foo_user授予此特权,请使用以下方法完成此操作:
GRANT ALL ON schema public TO foo_user;
要知道ALL对模式意味着什么,我们必须在文档中引用GRANT。看来,对于架构而言,它意味着CREATE和USAGE。
因此,针对您的问题的解决方案是创建具有不同权限的不同类型的PostgreSQL DB用户。
用相同的方法为客户端提供一个PostgreSQL用户,以提供详细信息。
希望这可以解决您的问题。