【问题标题】:Protecting the function and stored procedure on postgres保护 postgres 上的函数和存储过程
【发布时间】:2020-02-21 14:26:00
【问题描述】:

我们在执行 ETL 过程的 Postgres 数据库中开发了存储过程和函数。这部署在客户端系统中,因此我们需要保护我们的代码被客户端误用/修改。

有什么方法可以防止查看创建的存储过程/函数。 目前我们提供了专用的用户帐户,该帐户无权访问该功能,只能访问表格。由于数据库位于客户端,他们将能够使用管理帐户访问系统并访问函数和存储过程。

我们想设置密码/加密程序进行修改。但应具有程序和函数的无密码的执行权限。

我们正在使用 postgres 11 进行开发。

【问题讨论】:

  • Features we don't want: "混淆函数源代码"
  • 您可以“混淆”您的函数的唯一方法是用 C 语言编写它们并将它们部署为共享库(例如,作为扩展的一部分)
  • 我对 c 不了解,你能帮我完成在 c 上编写脚本的示例步骤和预先请求吗

标签: postgresql password-protection protected copy-protection


【解决方案1】:

您可以通过以下方式实现。

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 用户的相同方式提供了该详细信息。

希望这能解决您的问题。

【讨论】:

  • 我已经完成了这项工作。但我的实际情况是服务器由客户端管理,我们在那里部署了我们的程序和功能。我不希望管理团队访问我们的程序和功能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
相关资源
最近更新 更多