Postgresql请求由HTTP服务器代理



我使用的是一个直接连接到数据库实例(Postgres(的移动应用程序,因此,我必须为从互联网(4G,移动应用程序(生成的流量保持端口开放。

这个移动应用程序(QFIELD,QGIS的移动版本(与数据库有直接连接,这就是为什么可以通过公共ip从互联网访问数据库的原因,但这对数据的安全性和可以发送到数据库的请求来说是一个关键问题。

我想代理请求,这样数据库只对本地计算机可用,而不直接打开以进行连接。

移动应用程序会将请求发送到一个HTTP url,该url会将该请求发送到本地ip和端口,这样我就可以避免将数据库暴露在互联网上。

理想情况下,我想从这个应用程序(使用postgres连接字符串连接到服务器(转到本地路由请求的HTTP服务器,例如:

  • APP连接到https://myproxy/postgres
  • 请求被代理到本地服务器

我能用Apache2做到这一点吗?有什么想法吗?

目前,我无法编写一个中间件来代理从APP到本地postgres的请求。

如果你的应用程序希望直接连接到PostgreSQL数据库,而你不想改变这一点,那么你需要连接到;说";PostgreSQL的客户端协议。

你可以在它前面放置一个代理,比如pgbouncer或pgpool,但它们本身并不能保证更大的安全性。这与任何代理都是相同的问题——它只是将请求和响应转发到实际的服务器,因此任何漏洞都会暴露出来。

你能做的是:

  • 限制代理点的连接数
  • 限制哪些用户可以非本地连接到PostgreSQL集群
  • 限制他们可以从何处连接到您的代理
  • 限制这些用户在数据库中的权限

最后一点特别重要-假设您的应用程序的任何用户帐户都可能被恶意使用。限制帐户以防止大规模更新或删除数据。还要特别注意限制对其他用户数据的访问。

如果我被迫允许这样的访问,我希望每个实际用户至少有一个PostgreSQL用户帐户。在实践中,对于生产应用程序,我不会达到这一点。

最新更新