aerticket / data-anonymizer
通过注解在模型中匿名化敏感数据
0.2.0
2019-07-23 07:10 UTC
Requires
- neos/flow: ^5.0
This package is auto-updated.
Last update: 2024-09-22 00:05:56 UTC
README
通过注解在模型中匿名化敏感数据
安装
通过composer安装此包
composer require aerticket/data-anonymizer
(或通过将依赖项添加到已安装包的composer声明中)
基本用法
您可以通过注解定义哪些模型应该被匿名化
use Aerticket\DataAnonymizer\Annotations as Anonymizer; /** * @Anonymizer\AnonymizableEntity(referenceDate="updatedAt") */ class SomeClass { /** * @var \DateTime */ $updatedAt; /** * @var string * @Anonymizer\Anonymize() */ $personalData; }
类注解的referenceDate选项是必填的。它是包含用于确定实体年龄的日期的属性的路径。您可以使用与查询条件相同的语法(例如:relatedObject.anotherRelatedObject.creationDate
)。
要实际触发匿名化过程,您必须调用以下流程命令
./flow anonymize:run
请注意,每个类和运行中最多匿名化100个实体。如果需要匿名化更多实体,您必须多次运行该命令。
匿名化指定实体
如果您需要手动触发数据匿名化(例如,在处理完毕后可以清除的用户数据),您可以显式匿名化指定的实体
$this->anonymizationService->anonymizeEntity($record);
您还可以通过避免使用anonymizeEntity
的第二个参数更新其在存储库中的记录来在未持久化的对象上工作。
配置选项
年龄
您可以定义实体应匿名化的年龄。默认值通过Settings.yaml配置
Aerticket: DataAnonymizer: defaults: anonymizeAfter: '30 days'
如果您想为特定类覆盖此值,您可以使用AnonymizableEntity
注解的anonymizeAfter
选项。
匿名化值
在匿名化实体时,为每个应匿名化的属性设置一个匿名化值。对于不同的属性类型(字符串、整数),通过Settings.yaml配置不同的默认值。
如果您想为特定属性使用单个值,您可以将该值添加到属性的Anonymize
注解中。
use Aerticket\DataAnonymizer\Annotations as Anonymizer; /** * @Anonymizer\AnonymizableEntity(referenceDate="updatedAt") */ class SomeClass { /** * @var \DateTime */ $updatedAt; /** * @var string * @Anonymizer\Anonymize("anonymized@anonymized.com") */ $emailAddress; }
限制
目前有以下限制
- 此包仅适用于具有其自身存储库的实体。
- 嵌套属性的匿名化尚未实现。