0

请,

我在空闲时间在 supbase(PG 13.3) 中开发 PoC,尽管我将主要功能分解为更小的功能(出于重用目的),但我希望应用程序/客户端只能访问其中的三个(“公共”功能)。所以大部分功能只被这三个主要功能使用。

考虑到托管解决方案(RDS 或 Google Cloud SQL),限制对应用程序/客户端的访问仅限于这三个功能并阻止它们查看和执行其他“私有”功能的最佳方法是什么。

我用谷歌搜索了它,但还没有找到答案。

任何帮助将非常感激。

谢谢

4

1 回答 1

3

您可以采取两种方法:

  1. 将您不希望用户使用的辅助功能放在不在的不同模式中,search_path并且不要记录它们。

    那么它们只能用不同的模式限定来调用,所以它们不会被意外调用。但是,这并不能阻止用户使用这些功能,只是不鼓励他们。

  2. REVOKE辅助功能的权限,PUBLIC仅授予主要功能的所有者。然后将这些主要功能声明为SECURITY DEFINER(并确保对其进行设置search_path)。

    这种方法的主要缺点是所有函数都作为所有者执行,因此您不能使用 PostgreSQL 的正常权限检查来确保调用者不会访问它没有权限的任何数据。

我个人更喜欢第一种方法。

于 2021-11-02T04:16:21.900 回答