linkorb / anonymizer
数据匿名化工具
Requires
- fzaninotto/faker: ~1.0
- linkorb/boost: ~1.0
- linkorb/collection: ~1.0
- linkorb/connector: ~1.0
- symfony/yaml: ^4.0|^3.0|^2.7
Requires (Dev)
- symfony/console: ~2.4
- symfony/dotenv: ~3.0
This package is auto-updated.
Last update: 2024-09-18 11:19:00 UTC
README
Anonymizer是一个工具包,可以帮助您自动对测试环境的生产数据进行匿名化处理,以满足合规性要求。
特性
- 按列混淆数据
- 保持引用完整性
- 多次运行相同源数据时保持一致的输出状态
- 截断整个表
- 删除表或单个列
- 在.env文件中存储配置(DSN + 文件名)
用法
-
扫描您应用程序的数据库模式,并决定哪些列包含敏感信息。例如:
user.email
或request.ip
等。 -
为您应用程序创建一个配置文件(以下为示例),列出所有敏感列及其匿名化方法。
-
在您的测试数据库上运行匿名化工具
vendor/bin/anonymizer
anonymizer.yml格式
该文件定义了哪些列需要匿名化,以及使用哪种方法。此外,您还可以截断或删除整个表或列。
以下是一个示例
--- columns: user.email: method: faker arguments: formatter: email cascades: - user_email.address - comment.email request.ip: method: faker arguments: formatter: ipv5 cascades: - exception.ip truncate: - table1 - table2 drop: - user.ip - request.agent - tmp* - *.password
所有列都列在tableName.columnName
格式中。对于每个列,定义了一个method
,带有一些可选的arguments
。最常见的是faker
方法,它接受一个formatter
作为参数(即电子邮件、用户名、城市、ipv4等 - 有关更多信息,请参阅faker文档)
如果您在其他表中还有引用此列的列,您可以在cascades
键中列出它们(可选)。这将确保外部列使用相同的新值进行更新,以确保它们的引用仍然有效。
通配符
您可以在drop
列表的表名中使用通配符(*, ?)。
配置
您可以使用环境(或.env文件)将ANONYMIZER_DSN(或PDO)和ANONYMIZER_FILENAME值传递给anonymizer run
命令。这些值将用于连接到数据库,并读取指定的配置yaml文件。
可选:配置ANONYMIZER_CONFIG_PATH
以指向包含数据库连接详细信息的.conf
文件目录。这将作为INI后端注册到连接器服务,以从配置文件解析数据库连接。
关于“随机”生成数据
- faker每次运行时都使用相同的种子初始化(0)。这确保了多次运行匿名化工具对同一源数据的结果是相同的匿名化数据。
- faker方法确保单个表中的所有生成的值都是唯一的。这防止了引用等问题。
- 如果您列出的级联包含在源表中未定义的值,它们将被更新为NULL。这可以防止敏感数据意外地留在级联中。在正确检查完整性的数据库中,这种情况不会发生。
详细程度/模式
匿名化工具在运行前分析模式(表名+列名)。此信息由通配符功能使用。您可以使用-v
运行匿名化工具以增加详细程度以查看此数据。这可以帮助您验证是否没有看到应该删除的任何表或列。
许可证
MIT。有关详细信息,请参阅许可证文件。
由LinkORB工程技术团队提供
请访问linkorb.com/engineering了解我们的其他项目。
顺便说一下,我们在招聘!