這個重要的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 引擎可以提高安全性,因為它可以使攻擊者難以進行統計分析,尤其是在長期內始終使用相同的鹽時。
NoiseNumeric - 一個新實現的轉換器,與 NoiseInt 和 NoiseFloat 共享功能,但專門為數值(大整數或浮點數)設計。它提供了一個 decimal 引數來處理帶有小數的值。
RandomChoice - 現在支援 hash 引擎
RandomDate, RandomFloat, RandomInt - 現在增強了雜湊引擎支援。閾值引數 min 和 max 已更新以支援動態模式,允許更靈活的配置。
RandomNumeric - 一個新轉換器,專門為數值型別(大整數或浮點數)設計,與 RandomInt 和 RandomFloat 共享類似的功能,但針對處理巨大的數值。
RandomString - 現在支援雜湊引擎模式
RandomUnixTimestamp - 這個新轉換器生成具有可選單位(second、millisecond、microsecond、nanosecond)的 Unix 時間戳。其功能與 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。