這個重要的 beta 版本 引入了新功能和重構的轉換器,顯著增強了 Greenmask 的彈性,使其更能滿足業務需求。 幫助我們改進 GreenMask,使其更能滿足社群的需求。 我們歡迎您在 GitHub 上的發布討論中提供回饋。
Greenmask 是一個多功能的開源工具,用於資料庫備份、匿名化和還原。 它使用純 Go 語言編寫並移植了 PostgreSQL 函式庫,與平台無關且無狀態,不需要修改結構描述。 它是可自訂的,並且與現有的 PostgreSQL 實用程式相容。
random
或 hash
引擎,使其適用於任何使用案例。如果您想要為 beta 版本執行 Greenmask playground,請執行
git checkout tags/v0.2.0b1 -b v0.2.0b1 docker-compose run greenmask-from-source
cast_to
存取。 這些函數涵蓋常見的操作,例如 UnixTimestampToDate
和 IntToBool
。random
- 根據偽隨機演算法產生轉換器值。hash
- 使用雜湊函數產生轉換器值。 目前,它使用 sha3
雜湊函數,該函數是安全的但執行速度較慢。 在穩定版本中,將可以選擇 sha3
和 SipHash
。Parametrizer
介面,現在已針對動態和靜態參數實作。Driver
初始化邏輯。Driver
中覆寫的類型新增驗證警告。Parametrizer
介面。TransformationContext
,作為啟用新功能轉換條件的第一步 (#34)。文件已大幅重構。 新增了有關功能和更新到轉換器描述的新資訊。
RandomEmail - 引入了一個新的轉換器,支援隨機和確定性引擎。 它允許靈活的電子郵件值產生; 您可以在範本中使用欄位值,並選擇保留原始網域或從 domains
參數中選擇任何網域。
NoiseDate、NoiseFloat、NoiseInt - 這些轉換器支援隨機和確定性引擎,提供動態模式參數,用於控制 min
和 max
範圍內的雜訊閾值。 與之前使用單個 ratio
參數的實作不同,新版本具有 min_ratio
和 max_ratio
參數,可以更精確地定義雜訊值。 在這些轉換器中使用 hash
引擎可通過使攻擊者的統計分析複雜化來增強安全性,尤其是在長時間一致地使用相同的 salt 時。
NoiseNumeric - 一個新實作的轉換器,與 NoiseInt
和 NoiseFloat
共用功能,但專為數值(大整數或浮點數)設計。 它提供一個 decimal
參數來處理帶有小數的值。
RandomChoice - 現在支援 hash
引擎
RandomDate、RandomFloat、RandomInt - 現在透過雜湊引擎支援進行增強。 閾值參數 min
和 max
已更新以支援動態模式,從而允許更靈活的配置。
RandomNumeric - 一個專為數值類型(大整數或浮點數)設計的新轉換器,與 RandomInt
和 RandomFloat
共享類似的功能,但專為處理巨大的數值而客製化。
RandomString - 現在支援雜湊引擎模式
RandomUnixTimestamp - 這個新的轉換器會產生 Unix 時間戳記,並可選擇單位 (second
、millisecond
、microsecond
、nanosecond
)。其功能與 RandomDate
類似,它支援雜湊引擎和動態參數,用於設定 min
和 max
閾值,並且能夠使用 min_unit
和 max_unit
參數覆寫這些單位。
RandomUuid - 新增了雜湊引擎支援
RandomPerson - 實作了一個新的轉換器,取代了 RandomName
、RandomLastName
、RandomFirstName
、RandomFirstNameMale
、RandomFirstNameFemale
、RandomTitleMale
和 RandomTitleFemale
。這個新的轉換器提供了更強大的客製化能力,同時提供了與先前版本類似的功能。它會根據提供的 gender
參數(現在支援動態模式)產生個人資料,例如 FirstName
、LastName
和 Title
。未來的次要版本將允許覆寫預設的名稱資料庫。
新增了 tsModify - 一個用於修改 time.Time 物件的新範本函式
引入了一個新的 RandomIp 轉換器,能夠根據指定的網路遮罩產生隨機 IP 位址。
新增了一個新的 RandomMac 轉換器,用於產生隨機 Mac 位址。
由於引入了更靈活和統一的選項,已刪除的轉換器包括 RandomMacAddress
、RandomIPv4
、RandomIPv6
、RandomUnixTime
、RandomTitleMale
、RandomTitleFemale
、RandomFirstName
、RandomFirstNameMale
、RandomFirstNameFemale
、RandomLastName
和 RandomName
。