pgAdmin对PostgreSQL的访问控制

pgAdmin对PostgreSQL的访问控制,postgresql,pgadmin,Postgresql,Pgadmin,我有兴趣禁止pgAdmin从服务器以外的任何站点访问我的PostgreSQL server。是否可以使用pg_hba.conf执行此操作?PostgreSQL server仍应允许从其他站点访问我的应用程序的服务器 不,这是不可能的。这也不合理,因为客户机(访问模式)不是问题,而是您在连接上所做的事情 如果用户设法通过SQL注入或其他方式欺骗你的应用程序运行任意SQL,你就会回到原来的位置 相反,请将应用程序设置为使用以下受限用户角色: 不是超级用户 不拥有它使用的表 仅具有所需的最低权限

我有兴趣禁止pgAdmin从服务器以外的任何站点访问我的PostgreSQL server。是否可以使用pg_hba.conf执行此操作?PostgreSQL server仍应允许从其他站点访问我的应用程序的服务器

不,这是不可能的。这也不合理,因为客户机(访问模式)不是问题,而是您在连接上所做的事情

如果用户设法通过SQL注入或其他方式欺骗你的应用程序运行任意SQL,你就会回到原来的位置

相反,请将应用程序设置为使用以下受限用户角色:

  • 不是超级用户
  • 不拥有它使用的表
  • 仅具有所需的最低权限
并且优选地,还添加诸如触发器之类的保护,以保持数据库内的数据一致性。如果有人从应用程序中提取数据库凭据并通过SQL客户端直接使用它们,这将有助于减轻可能造成的损害

您还可以通过以下方式使使用您的应用程序二进制文件等的用户更难提取凭据并使用凭据直接连接到postgres:

  • 使用
    md5
    身份验证
  • 如果使用在所有用户之间共享的单个db角色,则(a)不要这样做,或者(b)在配置中不明显的位置存储一个经过良好模糊处理的db密码副本,最好根据用户的本地凭据进行加密
  • 使用
    sslmode=verifyfull
    和服务器证书
  • 在应用程序中嵌入客户端证书,并要求提供该证书,以便服务器允许连接(请参阅

实际上,如果您不相信自己的使用不会是恶意的,并且运行
DELETE FROM customer;
等…您将需要中间件来保护SQL连接并应用进一步的限制。速率限制访问、禁止批量更新等。

您不能基于正在使用的SQL客户端应用程序阻止访问。您可以阻止访问但是,无论客户机是否适合使用hba_文件,都可以从除服务器以外的任何站点访问。谢谢大家的回答。