brendantwhite/databasemask

使用 Faker 隐藏生产环境中的数据,以便在其他地方安全使用

v1.0.1 2022-11-04 12:01 UTC

This package is auto-updated.

Last update: 2024-09-27 17:40:27 UTC


README

使用 Faker 隐藏生产环境中的数据,以便在其他地方安全使用。

用例

是否曾想在你测试环境中使用 Laravel 项目生产数据库的副本?但你不能这样做,因为这存在安全风险?

现在,你可以获取生产数据库的副本,仅隐藏需要隐藏的值 - 名称、电话号码、电子邮件地址等,同时保持其他数据的完整性。

安装

从命令行运行

composer require brendantwhite/databasemask

配置

首先,确保为每个你想要隐藏的 Eloquent 模型类定义了模型工厂

然后,在你的 Eloquent 模型类中添加一个 $masked 属性,指定你的模型上哪些属性应该被隐藏。

    <?php

    // in app/Models/User.php

    /**
     * The attributes that should be masked by DatabaseMask.
     *
     * @var array
     */
    protected $masked = [
        'name',
        'email',
        'password',
    ];

如果你有任何不需要隐藏的模型,也添加一个 $masked 属性,但让它成为一个空数组。

    <?php

    // in app/Models/SomeOtherModel.php

    /**
     * The attributes that should be masked by DatabaseMask.
     *
     * @var array
     */
    protected $masked = [];

使用

要隐藏你的数据,运行 php artisan dbm:mask 命令。这将遍历所有你的 Eloquent 模型,查找 $masked 属性。

  • 如果 $masked 属性为空或空集合,则跳过该模型。

  • 如果缺少 $masked 属性,将对该模型标记警告。

  • 如果 $masked 属性不为空,但没有为该模型创建工厂,则返回错误。

但如果 $masked 属性包含字段名,并且已创建工厂,则将 $masked 属性中的字段替换为 Faker 值。其他字段保持不变。

备份和恢复

此包还包含对 Spatie 的优秀 laravel-db-snapshots 包的轻量级包装,以使备份和恢复更加容易。

要使用这些命令,你首先需要按照它们的安装说明安装 laravel-db-snapshots

然后,运行 php artisan dbm:backup 以在你的 snapshots 磁盘上创建数据库的备份文件。运行 php artisan dbm:restore 以选择一个备份文件并将其恢复到当前环境。

通常,你会从生产环境中备份,然后将其恢复到其他环境,然后在其他环境中隐藏这些数据。

如果你只想使用 dbm:mask 命令,则不需要安装 laravel-db-snapshots

测试 DatabaseMask

TODO: 编写一些测试。

免责声明

我不能,也不保证使用 DatabaseMask 会将你的数据 100% 匿名化。

我可以并且会尽最大的努力确保,当正确配置时,DatabaseMask 会从你的数据中删除可识别的个人身份信息。

然而,我不能保证此软件 100% 没有错误,我当然也不能保证你已正确配置它。所以请自行承担使用此软件的风险。

许可

此包是开源软件,许可协议为 MIT 许可证