文章目錄
- 密碼加密
- 欄位加密
- 存盤加密
- 傳輸加密
- 認證加密
- 應用加密
大家好,我是只談技術不剪發的 Tony 老師,
《中華人民共和國資料安全法》自 2021 年 9 月 1 日開始實施,這是我國第一部有關資料安全的專門法律,與此同時,《中華人民共和國個人資訊保護法》也將于 2021 年11月1日起施行,相關法律的陸續出臺,意味著國家對于資訊安全保護制度的完善,同時也對存盤和處理資料的企業和組織提出了更高的要求,
資料庫作為存盤電子資料的主要方式,需要通過加密技術保護敏感資料,如個人醫療記錄或金融交易資料,本文給大家介紹一些 PostgreSQL 提供的加密技術,PostgreSQL 支持多個不同級別的靈活加密技術,可以保護資料不因資料庫服務器被盜、內部管理員或者不安全的網路傳輸而導致泄露,
密碼加密
PostgreSQL 支持用戶密碼的加密存盤(加密方式由 password_encryption 引數決定),確保資料庫管理員無法得到用戶的密碼,
如果我們采用了 SCRAM 或者 MD5 加密的客戶端認證,明文密碼甚至不會在服務器中出現,因為客戶端在發送之前就已經進行了密碼加密,推薦使用 SCRAM 加密,因為它是一個互聯網標準,而且比 PostgreSQL 使用的 MD5 認證協議更安全,
注意,某些舊的客戶端可能不支持 SCRAM 認證機制,因此無法使用 SCRAM-SHA-256 加密后的密碼,關于密碼認證的詳細資訊可以參考官方檔案,
欄位加密
PostgreSQL pgcrypto 模塊可以用于加密指定欄位,這種方式對于敏感資料的包含非常有用,查詢資料時,客戶端提供解密密鑰,資料在服務器端解密后發送給客戶端,
解密后的資料和解密密鑰在解密以及傳輸程序中會在服務器中短暫存在,這一短暫時刻可能導致擁有資料庫服務器完全訪問權限的用戶(例如系統管理員)攔截獲取資料和密鑰,
存盤加密
存盤加密可以在檔案系統級別或者塊級別實作,Linux 檔案系統加密選項包括 eCryptfs 和 EncFS,FreeBSD 使用 PEFS 加密技術,塊級別或者整盤加密選項包括 Linux 作業系統的 dm-crypt + LUKS ,以及 FreeBSD 作業系統的 GEOM 模塊 geli 和 gbde,包括 Windows 在內的許多其他作業系統都支持加密功能,
存盤加密技術可以防止計算機被盜后未加密資料的泄露,這種方式無法組織檔案系統加載之后的攻擊,因為一旦加載檔案系統,作業系統就提供了一個未加密的資料視圖,盡管如此,為了能夠加載檔案系統,用戶必須采用某種方式將加密密鑰傳遞給作業系統,有時候密鑰就存盤在加載磁盤的主機中,
傳輸加密
SSL 連接可以加密網路傳輸中的所有資料,包括:密碼、查詢陳述句以及回傳的結果,pg_hba.conf 組態檔可以允許管理員指定哪些主機可以使用非加密連接(host),以及哪些主機需要使用 SSL 加密連接(hostssl),同時,客戶端可以指定只通過 SSL 連接到服務器,
GSSAPI 加密連接可以加密網路傳輸中的所有資料,包括查詢陳述句和回傳的結果(密碼不會通過網路傳輸),pg_hba.conf 組態檔可以允許管理員指定哪些主機可以使用非加密連接(host),以及哪些主機需要使用 GSSAPI 加密連接(hostgssenc),同時,客戶端可以指定只通過 SSL 連接到服務器(gssencmode=require),
除此之外,Stunnel 或者 SSH 也可用于加密傳輸,
認證加密
PostgreSQL 客戶端和服務器都可以提供相互的 SSL 認證,認證加密需要客戶端和服務器的一些額外配置,但是可以提供比密碼更安全的身份認證,
認證加密可以防止機器偽裝成資料庫服務器讀取客戶端發送的密碼,同時也可以防止“中間人”攻擊,也就是在客戶端和服務器中間的機器偽裝成服務器讀取和傳遞它們之間的所有資料,
應用加密
如果資料庫服務器的管理員不可信,需要使用客戶端加密技術,這樣的話明文資料首先會在客戶端應用中進行加密,網路中傳輸的就是密文資料,資料庫中不會出現明文資料,這種方式也被稱為全加密資料庫解決方案,

【圖片來源:阿里云】
注意,這種方式查詢的資料結果需要在客戶端應用中進行解密后才能使用,無法在資料庫中使用 SQL 進行操作,
如果你覺得文章有用,歡迎掃一掃:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298059.html
標籤:其他
