aerticket/data-anonymizer

通过注解在模型中匿名化敏感数据

0.2.0 2019-07-23 07:10 UTC

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;
  }

限制

目前有以下限制

  • 此包仅适用于具有其自身存储库的实体。
  • 嵌套属性的匿名化尚未实现。