indeev/laravel-rapid-db-anonymizer

快速匿名化大量数据

v3.0 2023-02-27 09:37 UTC

This package is auto-updated.

Last update: 2024-09-27 13:03:24 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

该包可以快速匿名化数据库中的大量敏感数据。

安装

您可以通过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 生成的。