这个主要的 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 - 这个新的转换器生成具有可选单位(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
。