indeev / laravel-rapid-db-anonymizer
快速匿名化大量数据
v3.0
2023-02-27 09:37 UTC
Requires
- php: ^8.0.2
- illuminate/support: ^9.0
Requires (Dev)
- orchestra/testbench: ^7.22
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-27 13:03:24 UTC
README
该包可以快速匿名化数据库中的大量敏感数据。
安装
您可以通过composer安装此包
composer require indeev/laravel-rapid-db-anonymizer
用法
在任何包含敏感数据的模型中,使用 use Anonymizable; 特性和 const ANONYMIZABLE = []; 常量。
class Customer { use Anonymizable; const ANONYMIZABLE = [ 'name' => [ 'faker' => ['provider' => 'firstName'], ], ]; // ... }
ANONYMIZABLE 定义为一个数组,形式为 'column_name' => [what_to_do]。
准备 ANONYMIZABLE 常量
截断表
const ANONYMIZABLE = ['truncate'];
使用 faker 的提供者替换列值(不带参数)
const ANONYMIZABLE = [ 'name' => [ 'faker' => ['provider' => 'firstName'], ], // next columns ];
使用带参数的 faker 的提供者替换列值
const ANONYMIZABLE = [ 'secret_code' => [ 'faker' => ['provider' => 'randomNumber', 'params' => [6, true]], ], // next columns ];
替换为确切值
- 如果 setTo 的值为数组类型,则将其转换为 JSON 字符串。例如
['foo' => 'bar']转换为{"foo":"bar"}。 - 如果 setTo 的值为
null,则将其转换为 NULL。请注意,列被设置为 可空。
const ANONYMIZABLE = [ 'favorite_politician' => [ 'setTo' => 'CONFIDENTIAL', ], 'favorite_numbers' => [ 'setTo' => [7, 13], ], 'favorite_meals' => [ 'setTo' => null, ], // next columns ];
也替换 NULL 值
默认情况下,NULL 值会被跳过。如果您还想匿名化它们,必须将 anonymizeNull 添加到列中,并设置其值为 true。
const ANONYMIZABLE = [ 'shipping_address' => [ 'faker' => ['provider' => 'address'], 'anonymizeNull' => true, ], // next columns ];
运行匿名化
要为整个数据库(具有 Anonymizable 特性的所有模型)运行匿名化,请使用
php artisan db:anonymize
要针对特定模型运行匿名化,请使用带有 --model= 选项的命令
php artisan db:anonymize --model=\\App\\Models\\VerificationCode
要为整个数据库中的特定列运行匿名化,请使用带有 --columns= 选项的命令。各个列名必须用逗号分隔
php artisan db:anonymize --columns=name,surname
使用前两个选项的组合来匿名化特定模型上方的特定列
php artisan db:anonymize --model=\\App\\Models\\User --columns=name,surname
测试
composer test
配置
您可以通过以下方式导出配置文件
php artisan vendor:publish --provider="Indeev\LaravelRapidDbAnonymizer\LaravelRapidDbAnonymizerServiceProvider"
在配置中,您可以修改
- 块大小 (默认:500) - 所有 500 行通过一个查询更新
- 禁止的环境 (默认:生产,prod)
- 自定义模型目录 (默认:app/Models)
- 自定义模型命名空间 (默认:\App\Models)
- Faker 的区域设置 (默认:en_US)
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 katerinak@indeev.eu 而不是使用问题跟踪器。
鸣谢
许可
MIT 许可证(MIT)。请参阅 许可文件 了解更多信息。
Laravel Package Boilerplate
此包是使用 Laravel Package Boilerplate 生成的。