2025年9月25日: PostgreSQL 18 釋出!

Greenmask v0.2.0b1 釋出

釋出於 2024-07-01,作者 Greenmask.io
相關開源 安全

Greenmask v0.2.0b1 釋出

PostgreSQL 邏輯備份和匿名化工具

這個重要的Beta 版釋出引入了新功能和重構的轉換器,顯著增強了 Greenmask 的靈活性,以更好地滿足業務需求。幫助我們改進 GreenMask 並根據社群需求進行定製。我們歡迎您在 GitHub 上的釋出討論區提出您的反饋。

Greenmask 概述

Greenmask 是一款用於資料庫備份、匿名化和恢復的多功能開源工具。它使用純 Go 語言編寫,並移植了 PostgreSQL 庫,因此具有跨平臺性和無狀態性,無需修改資料庫模式。它可定製,並與現有的 PostgreSQL 工具相容。

Greenmask 非常適合

  • 常規備份和恢復任務,確保資料完整性和可用性。
  • 用於暫存環境和分析的匿名化和資料脫敏,保護敏感資訊同時保持資料可用性。

主要功能

  • 確定性轉換器 — 基於雜湊函式的確定性資料轉換方法。這確保了相同的輸入資料將始終產生相同的輸出資料。幾乎每個轉換器都支援 randomhash 引擎,使其適用於任何用例。
  • 動態引數 — 幾乎每個轉換器都支援動態引數,允許從表列值動態地引數化轉換器。這有助於解決列之間的函式依賴關係並滿足約束。
  • 資料庫型別安全 - 透過驗證資料並利用資料庫驅動程式進行編碼和解碼操作來確保資料完整性。這種方法保證了資料格式的保留。
  • 轉換驗證和易於維護 - 在混淆開發過程中,Greenmask 提供驗證警告和轉換差異功能,允許您在整個軟體生命週期內有效監控和維護轉換。
  • 分割槽錶轉換繼承 - 定義一次轉換配置,並將其應用於分割槽表中的所有分割槽,從而簡化了混淆過程。
  • 無狀態 - Greenmask 作為邏輯備份執行,不會影響您現有的資料庫模式。
  • 向後相容 - 它完全支援與現有標準 PostgreSQL 工具相同的功能和協議。Greenmask 建立的備份可以使用 pg_restore 工具成功恢復。
  • 可擴充套件 - 使用者可以靈活地使用任何程式語言實現基於域的轉換,或使用預定義的模板。
  • 提供多種儲存 - Greenmask 為本地和遠端資料儲存提供了多種儲存選項,包括目錄和 S3 類儲存解決方案。

Beta 版本的 Playground 使用

如果您想執行 Beta 版本的 Greenmask Playground,請執行

git checkout tags/v0.2.0b1 -b v0.2.0b1 docker-compose run greenmask-from-source

更改概述

  • 在轉換器中引入了動態引數
    • 大多數轉換器現在都支援適用的動態引數。
    • 動態引數強制執行嚴格。如果您需要將值轉換為另一種型別,Greenmask 提供了模板和可透過 cast_to 訪問的預定義轉換函式。這些函式涵蓋了常見的操作,例如 UnixTimestampToDateIntToBool
  • 轉換邏輯已得到顯著重構,使得轉換器比以前更具可定製性和靈活性。
  • 引入了轉換引擎

    • random - 基於偽隨機演算法生成轉換器值。
    • hash - 使用雜湊函式生成轉換器值。目前,它使用 sha3 雜湊函式,該函式安全但效能較低。在穩定版本中,將提供 sha3SipHash 之間的選擇選項。
  • 引入了靜態引數值模板

重要更改

核心

  • 引入了 Parametrizer 介面,現已為動態引數和靜態引數實現。
  • 重新命名了大部分工具包型別,以提高畫質晰度和全面的文件覆蓋。
  • 重構了 Driver 初始化邏輯。
  • Driver 中被覆蓋的型別添加了驗證警告。
  • 將現有的內建轉換器遷移到使用新的 Parametrizer 介面。
  • 實現了一個新的抽象 TransformationContext,這是實現新功能轉換條件 (#34) 的第一步。
  • 優化了大多數轉換器在動態和靜態模式下的效能。雖然動態模式提供了靈活性,但靜態模式確保了高效能。僅使用必要的轉換功能有助於使轉換時間保持可預測。

文件

文件已得到顯著重構。已新增關於新功能和轉換器描述更新的資訊。

轉換器

  • RandomEmail - 引入了一個新的轉換器,支援隨機和確定性引擎。它允許靈活地生成電子郵件值;您可以在模板中使用列值,並選擇保留原始域或從 domains 引數中選擇任何域。

  • NoiseDate, NoiseFloat, NoiseInt - 這些轉換器支援隨機和確定性引擎,提供控制 minmax 範圍內噪聲閾值的動態模式引數。與之前使用單個 ratio 引數的實現不同,新版本具有 min_ratiomax_ratio 引數,可以更精確地定義噪聲值。在這些轉換器中使用 hash 引擎可以提高安全性,因為它可以使攻擊者難以進行統計分析,尤其是在長期內始終使用相同的鹽時。

  • NoiseNumeric - 一個新實現的轉換器,與 NoiseIntNoiseFloat 共享功能,但專門為數值(大整數或浮點數)設計。它提供了一個 decimal 引數來處理帶有小數的值。

  • RandomChoice - 現在支援 hash 引擎

  • RandomDate, RandomFloat, RandomInt - 現在增強了雜湊引擎支援。閾值引數 minmax 已更新以支援動態模式,允許更靈活的配置。

  • RandomNumeric - 一個新轉換器,專門為數值型別(大整數或浮點數)設計,與 RandomIntRandomFloat 共享類似的功能,但針對處理巨大的數值。

  • RandomString - 現在支援雜湊引擎模式

  • RandomUnixTimestamp - 這個新轉換器生成具有可選單位(secondmillisecondmicrosecondnanosecond)的 Unix 時間戳。其功能與 RandomDate 類似,它支援雜湊引擎以及 minmax 閾值的動態引數,並且可以使用 min_unitmax_unit 引數覆蓋這些單位。

  • RandomUuid - 添加了雜湊引擎支援

  • RandomPerson - 實現了一個新轉換器,取代了 RandomNameRandomLastNameRandomFirstNameRandomFirstNameMaleRandomFirstNameFemaleRandomTitleMaleRandomTitleFemale。這個新轉換器提供了增強的可定製性,同時提供了與先前版本類似的功能。它根據提供的 gender 引數生成個人資料,例如 FirstNameLastNameTitle,現在支援動態模式。未來的小版本將允許覆蓋預設姓名資料庫。

  • 添加了 tsModify - 一個用於修改 time.Time 物件的新模板函式

  • 引入了一個新的 RandomIp 轉換器,能夠根據指定的網路掩碼生成隨機 IP 地址。

  • 添加了一個新的 RandomMac 轉換器,用於生成隨機 MAC 地址。

  • 由於引入了更靈活和統一的選項,已刪除的轉換器包括 RandomMacAddressRandomIPv4RandomIPv6RandomUnixTimeRandomTitleMaleRandomTitleFemaleRandomFirstNameRandomFirstNameMaleRandomFirstNameFemaleRandomLastNameRandomName

有用連結