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 參數中選擇任何網域。

  • NoiseDateNoiseFloatNoiseInt - 這些轉換器支援隨機和確定性引擎,提供動態模式參數,用於控制 minmax 範圍內的雜訊閾值。 與之前使用單個 ratio 參數的實作不同,新版本具有 min_ratiomax_ratio 參數,可以更精確地定義雜訊值。 在這些轉換器中使用 hash 引擎可通過使攻擊者的統計分析複雜化來增強安全性,尤其是在長時間一致地使用相同的 salt 時。

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

  • RandomChoice - 現在支援 hash 引擎

  • RandomDateRandomFloatRandomInt - 現在透過雜湊引擎支援進行增強。 閾值參數 minmax 已更新以支援動態模式,從而允許更靈活的配置。

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

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

  • RandomUnixTimestamp - 這個新的轉換器會產生 Unix 時間戳記,並可選擇單位 (secondmillisecondmicrosecondnanosecond)。其功能與 RandomDate 類似,它支援雜湊引擎和動態參數,用於設定 minmax 閾值,並且能夠使用 min_unitmax_unit 參數覆寫這些單位。

  • RandomUuid - 新增了雜湊引擎支援

  • RandomPerson - 實作了一個新的轉換器,取代了 RandomNameRandomLastNameRandomFirstNameRandomFirstNameMaleRandomFirstNameFemaleRandomTitleMaleRandomTitleFemale。這個新的轉換器提供了更強大的客製化能力,同時提供了與先前版本類似的功能。它會根據提供的 gender 參數(現在支援動態模式)產生個人資料,例如 FirstNameLastNameTitle。未來的次要版本將允許覆寫預設的名稱資料庫。

  • 新增了 tsModify - 一個用於修改 time.Time 物件的新範本函式

  • 引入了一個新的 RandomIp 轉換器,能夠根據指定的網路遮罩產生隨機 IP 位址。

  • 新增了一個新的 RandomMac 轉換器,用於產生隨機 Mac 位址。

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

實用連結