2017-05-31 39 views
1

我有興趣禁止從服務器以外的任何站點對我的PostgreSQL服務器進行pgAdmin訪問。是否可以使用pg_hba.conf來做到這一點? PostgreSQL服務器仍應允許從其他工作站訪問我的應用程序的服務器。對PostgreSQL的pgAdmin訪問控制

+2

您不能根據正在使用的SQL客戶端應用程序阻止訪問。 –

+0

雖然你可以阻止從服務器以外的任何站點通過hba_file進行訪問,不管客戶端是 –

+0

也許更適合於[dba.se] – Iceman

回答

1

不,這是不可能的。這也不明智,因爲客戶端(訪問模式)不是問題,而是你在連接上做了什麼。

如果用戶設法欺騙您的應用程序通過SQL注入或任何其他方式運行任意SQL,您將回到相同的位置。

相反,設置你的應用使用受限用戶角色:

  • 不是超級
  • 不擁有它採用
  • 表只是最小權限GRANT版吧它需要

並且最好還添加警衛,如觸發器以保持數據庫中的數據一致性。這有助於減輕如果某人從應用程序提取數據庫憑證並直接通過SQL客戶端使用它們可能造成的損害。

您也可以使它更難有人與你的應用程序的二進制文件等,以提取憑證,並用它們來通過直接連接到Postgres的:如果你使用一個單一的數據庫角色

  • 使用md5認證
  • (a)不這樣做,或者(b)在配置中某個不明顯的地方存儲數據庫密碼的模糊副本,最好是根據用戶的本地憑證進行加密
  • 使用sslmode=verify-full和a服務器證書
  • 嵌入在你的應用程序客戶端證書,並要求其按順序呈現爲連接到服務器被允許(見client certificates

真的,不過,如果你不能信任你的用途不被主動惡意並運行DELETE FROM customer;等...您需要中間件來防範SQL連接並應用更多限制。速率限制訪問,禁止批量更新等等。

+0

謝謝大家的回答。 – user2398654