PostgreSQL臺灣使用者社群召集人古永忠,在今年的臺灣資安大會上,分享企業使用PostgreSQL時,應採取的安全管理策略。

圖片來源: 

圖/iThome

開源資料庫PostgreSQL可說是近兩年來最熱門的資料庫軟體之一,根據資料庫流行度排行榜DB-Engines的統計,PostgreSQL流行度從2017年初超越MongoDB後,就蟬聯第4至今,名列Oracle、MySQL、Microsoft SQL Server之後,若以開源資料庫來看,排名更僅次於MySQL,因成本低、開源、社群活躍的特性,受到許多開發者青睞。不過,隨者PostgreSQL用戶越來越多,伴隨而來的安全管理問題也需更加重視,PostgreSQL臺灣使用者社群召集人古永忠就在今年的臺灣資安大會上,分享企業使用PostgreSQL時,應採取的安全管理策略。

「在發展初期,駭客攻擊機率沒那麼高,比較容易出問題的反而是自己人。」古永忠表示,談到安全性,許多人都先聯想到外部的惡意入侵,但現實上,多數時候造成資料庫無法運作的原因,是內部工程師操作失誤使然,因此,企業使用資料庫需要遵循一套安全策略,來協助開發者自然防呆。

連線前:需避免不慎連入資料庫的風險

古永忠將這套安全策略分為資料庫連線前、連線中、連線後三個階段來討論。

首先,在連線前,最主要的任務,就是要避免工程師在多應用程式的開發環境下,不小心連入、連錯資料庫。古永忠解釋,由於工程師在開發多個資料庫時,都會有命名及結構設定的慣性,導致有時連錯資料庫而不自知,一旦改錯資料,就會造成資料損壞的風險。

要防止用戶連錯資料庫,古永忠提出3項作法。第一,在網路限制方面,建議將資料庫主機兜在同一個子網路,訂定較嚴格的管理規則,比如將防火牆需設定為正面表列,預設為拒絕。此外,PostgreSQL也具有資料庫連線管理的機制pgBouncer,也就是連線池(Connection Pool)的功能,能用來保護資料庫不受異常連線影響、維持正常作業。

第二,在連線主機的操作環境上,古永忠表示,資料庫操作這類重要的任務,應離開原先熟悉的辦公環境,在虛擬桌面(VDI)或特定實體主機來執行,以免喝個咖啡、聊個天就忘了正在進行的作業流程或任務。

第三,由於PostgreSQL預設可供所有使用者登入,應重新授權,設定每個資料庫可登入的使用者白名單。同時,古永忠也建議,若要完全避免攻擊者或非白名單者透過遠端連線登入的風險,可以限制​資料庫系統管理者(postgres)的登入途徑,不要設定密碼,而是讓管理者只能透過作業系統的一般使用者登入,再授權管理者以sudo(Superuser Do)的功能切換登入權限,來提高系統安全性。

連線中:需避免用戶越權更新資料的風險

而在資料庫連線中容易碰到的安全問題,則是要避免使用者不小心越權更新資料,以免對資料庫帶來巨大損害。

首先,在權限方面,古永忠建議將大部分的權限最小化。由於PostgreSQL預設任何使用者都能建立資料庫物件,為了提高安全性,應盡量縮小權限,調整為僅資料庫擁有者能建立資料庫物件,再依使用者需求額外授權操作資料庫物件。且資料庫結構(schema)維護者,與資料存取者也應分開授權,限制存取者無法隨意調整資料庫結構。

第二,應使用statement_timeout指令,限制查詢的最長回應時間,因為過長時間的查詢,可能代表查詢程式邏輯與資料分布不一致,限制查詢時間,才能在資源互相排擠之前提早回報錯誤。

第三,則是可以安裝側錄軟體,來紀錄使用者操作行為,包含操作畫面、SSH傳輸內容等。古永忠表示,有些操作不容易透過log看出來,運用側錄軟體,不僅能在事件發生後追蹤用戶行為,有些軟體也具備即時告警的功能,比如在用戶下特殊指令時先行通報。

第四,是部分行業可能會碰到資料遮蔽的問題。古永忠指出,真實的資料與遮蔽後的資料,最好獨立放置在不同的資料庫中,或者依權限顯示真假資料,且在應用時,只有在必須存取個資時才接觸個資,應用程式設計也不應與特定個資有關聯。若需要進行系統測試,用戶可以自定遮蔽函數,使用遮蔽過的資料來測試,保持正式系統使用正式資料、測試系統使用測試資料的習慣,來減少正式資料被竄改或外洩的意外發生。

連線後:透過備份、版本還原將可能的損害降到最低

不過,縱使已經建立了完整一套安全管理機制,還是不可能達到全然的安全,需要考量到意外發生後的彌補措施,盡量將傷害降到最低。

首先,永遠必須要備份,即使有增量備份的功能可以使用,還是必須時常重新完整備份,因為增量備份只要發生一次失敗,部分備份資料就可能損壞、無法還原。古永忠也提醒,備份資料也可能成為竊取目標,因此,備份主機的安全等級甚至要比資料庫本身來的更高,來保障資料安全。

第二,要盡量將資料庫更新到最新版本,在安全性與效能才更有優勢。第三,由於pgdata磁碟空間不足時,可能會連刪除資料都無法運作,因此,需要在儲存空間8成滿就限制使用,或擴充磁碟空間,否則若磁碟用盡,會造成資料不一致、影響資料安全。最後,則是要將config檔案納入版本管理,若不慎因設定出錯而影響資料庫運作時,才能快速回復可用的設定。

古永忠認為,資料庫安全的三個要素分別是保密(Confidentiality)、完整(Integrity)及可用性(Availability),任何一項被破壞,都可能代表資料庫安全性已經不足。而企業的安全策略,也隱含了重視客戶資料的程度,他也建議,企業制訂的策略不應打高空,應循序漸進、制定能實際能執行的內容,一步步讓使用者養成具有安全意識的操作習慣。

熱門新聞

Advertisement