arrilot/data-anonymization

匿名化您的SQL数据库中的任何数据

1.1.3 2023-01-10 22:03 UTC

This package is auto-updated.

Last update: 2024-09-11 01:22:21 UTC


README

Latest Stable Version Scrutinizer Quality Score

数据匿名化

  • 这个简单的框架无关包可以帮助您替换开发数据库中的任何敏感数据。

安装

如果您使用列表中的任何东西,您最好安装相应的桥接包

否则只需composer require arrilot/data-anonymization

使用方法

工作流程

  1. 创建一个php可执行文件。

  2. 在这个文件中使用fluent api定义您想要如何匿名化数据(参见以下示例)。

  3. 确保它不能通过Web等途径访问。

  4. 每次需要时运行它。

以下是一个很好的示例文件,它很好地说明了API。

#!/usr/bin/env php
<?php

use Arrilot\DataAnonymization\Anonymizer;
use Arrilot\DataAnonymization\Blueprint;
use Arrilot\DataAnonymization\Database\SqlDatabase;

require './vendor/autoload.php';

$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'testuser';
$password = 'test';

$database = new SqlDatabase($dsn, $user, $password);
$anonymizer = new Anonymizer($database);

// Describe `users` table.
$anonymizer->table('users', function (Blueprint $table) {
    // Specify a primary key of the table. An array should be passed in for composite key.
    // This step can be skipped if you have `id` as a primary key.
    // You can change default primary key for all tables with `Blueprint::setDefaultPrimary('ID')`
    $table->primary('id');

    // Replace with static data.
    $table->column('email1')->replaceWith('john@example.com');

    // Use #row# template to get "email_0@example.com", "email_1@example.com", "email_2@example.com"
    $table->column('email2')->replaceWith('email_#row#@example.com');

    // To replace with dynamic data a $generator is needed.
    // Any generator object can be set like that - `$anonymizer->setGenerator($generator);`
    // A simpler way is just to do `require fzaninotto/Faker` and it will be set automatically.
    $table->column('email3')->replaceWith(function ($generator) {
        return $generator->email;
    });

    // Use `where` to leave some data untouched.
    // If you don't list a column here, it will be left untouched too.
    $table->column('email4')->where('ID != 1')->replaceWith(function ($generator) {
        return $generator->unique()->email;
    });
});

$anonymizer->run();

echo 'Anonymization has been completed!';