orange-rt/anonymize-bundle

此包已被废弃,不再维护。没有建议的替代包。

用于匿名化敏感数据库数据的包

安装数: 4,325

依赖: 0

建议者: 0

安全: 0

星标: 5

关注者: 3

分支: 2

开放问题: 1

类型:symfony-bundle

0.1.0 2017-10-22 07:41 UTC

This package is not auto-updated.

Last update: 2021-07-10 11:11:27 UTC


README

Scrutinizer Code Quality

安装

步骤 1: 下载包

打开命令行,进入您的项目目录,然后执行以下命令以下载此包的最新稳定版本

$ composer require orange-rt/anonymize-bundle "^0.1.0"

此命令要求您全局安装 Composer,如 Composer 文档的 安装章节 中所述。

步骤 2: 启用包

然后,通过将其添加到项目 app/AppKernel.php 文件中注册的包列表中来启用该包

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new OrangeRT\AnonymizeBundle\OrangeRTAnonymizeBundle(),
        );

        // ...
    }

    // ...
}

用法

可以通过注释要匿名化的属性来匿名化 Doctrine 管理的实体。有两个可用的注释,即 @Anonymize@AnonymizeEntity

匿名化属性

可以使用 @Anonymize 注释来匿名化属性,如下所示

<?php

use OrangeRT\AnonymizeBundle\Mapping\Anonymize;

/**
 * A doctrine managed entity
 */
class Person
{
    /**
     * @Anonymize(faker="email")
     */
    private $username;
}

调用 php bin/console anonymize:anonymize 后,属性 username 将更新为 $faker->email。Faker 在驱动程序中生成。

匿名化回调

有时需要使用高级或自定义方式对实体进行匿名化。如果一个方法被 @Anonymize 注释,那么该方法将被调用。如果您需要一个 faker,可以在下面的示例中指定参数类型

<?php

use OrangeRT\AnonymizeBundle\Mapping\Anonymize;

class Person
{
    private $username;
    private $email;
    
    /**
     * @Anonymize() 
     */
    public function anonymize(\Faker\UniqueGenerator $generator)
    {
        $this->username = $this->email = $generator->email;
    }
}

匿名化人员时,将创建一个 UniqueGenerator 并调用该方法。用户名将与电子邮件相同,并且将是一个唯一生成的电子邮件。

排除实体

可以跳过属性,或者跳过一个整个对象。

跳过对象

可以通过键值对进行黑名单或白名单对象。排除使用键(属性名称)和值(直接匹配或正则表达式)进行。

以相同的方式执行包含,如果匹配到任何包含项,则对象将被匿名化。

在下面的示例中,除了以 @orangert.nl 结尾的用户名的人之外,每个人都会被匿名化。

<?php

use OrangeRT\AnonymizeBundle\Mapping\AnonymizeEntity;
use OrangeRT\AnonymizeBundle\Mapping\Anonymize;

/**
 * 
 * @AnonymizeEntity(exclusions={"username": "/@orangert.nl$/"})
 */
class Person
{
    /**
     * @Anonymize(faker="email", unique=true)
     */
    private $username;
    
    /**
     * @Anonymize(faker="firstName")
     */
    private $firstname;
    
    /**
     * @Anonymize(faker="lastName")
     */
    private $lastname;
}

更改 faker 区域设置

默认的 faker 区域设置为 nl_NL。要设置区域设置

# app/config/parameters.yml
    // ...
    orange_rt_anonymize.default_locale: 'en_US'

唯一变量

对于像电子邮件和用户名这样的属性,应该使用唯一值。匿名化属性有一个unique=true标志来设置使用Faker库提供的UniqueGenerator。如果回调需要UniqueGenerator,请使用UniqueGenerator的类型提示。

贡献

拉取请求

在GitHub问题跟踪器中可能存在开放问题。我愿意接收新的拉取请求,并会在尽可能快的时间内进行检查。

问题

如果您发现任何错误,请请在问题跟踪器中报告。我会尽快查看它们。