这个重要的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。