orange-rt / anonymize-bundle
用于匿名化敏感数据库数据的包
Requires
- doctrine/annotations: ^1.5
- doctrine/orm: ^2.5
- fzaninotto/faker: ^1.7
- jms/metadata: ^1.6
- nyholm/symfony-bundle-test: ^1.2
- phpunit/phpunit: ^6.4
- roave/security-advisories: dev-master
- symfony/console: ~2.7|~3.0|~4.0
- symfony/dependency-injection: ~2.7|~3.0|~4.0
- symfony/framework-bundle: ~2.7|~3.0|~4.0
This package is not auto-updated.
Last update: 2021-07-10 11:11:27 UTC
README
安装
步骤 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问题跟踪器中可能存在开放问题。我愿意接收新的拉取请求,并会在尽可能快的时间内进行检查。
问题
如果您发现任何错误,请请在问题跟踪器中报告。我会尽快查看它们。