我们已经在Postgres数据库中开发了存储过程和函数,该数据库执行ETL过程。这是在客户端系统上部署的,因此我们需要保护我们的代码不被客户端误用/修改。
是否有任何方法可以防止查看创建的存储过程/函数。目前我们提供了专用用户帐户,该帐户没有访问函数的权限,只能访问表。由于数据库位于客户端,他们将能够使用管理帐户访问系统,并获得访问函数和存储过程的权限。
我们想设置密码/加密程序进行修改。但应该有没有密码的程序和函数的执行权限。
我们正在使用postgres 11进行开发。
我们已经在Postgres数据库中开发了存储过程和函数,该数据库执行ETL过程。这是在客户端系统上部署的,因此我们需要保护我们的代码不被客户端误用/修改。
是否有任何方法可以防止查看创建的存储过程/函数。目前我们提供了专用用户帐户,该帐户没有访问函数的权限,只能访问表。由于数据库位于客户端,他们将能够使用管理帐户访问系统,并获得访问函数和存储过程的权限。
我们想设置密码/加密程序进行修改。但应该有没有密码的程序和函数的执行权限。
我们正在使用postgres 11进行开发。
1条答案
按热度按时间bnlyeluc1#
您可以通过以下方式实现这一点。
1)请随身携带超级用户凭据,并撤销与您的模式相关的所有访问权限。
编辑:在上述命令之后,只有超级用户可以在公共方案中创建新对象,这是不实际的。假设应向非超级用户foo_user授予此权限,则应使用以下命令完成此操作:
要知道ALL对于模式的含义,我们必须参考文档中的GRANT。对于模式,它似乎意味着CREATE和USAGE。
因此,您的问题的解决方案是创建具有不同权限的不同类型的PostgreSQL DB用户。
用同样的方法为客户端创建一个PostgreSQL用户,并给出详细信息。
希望这能解决你的问题。