You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
사용자를 인식하는 ID체계가 복수일 경우, group 값을 이용해 처리 컨텍스트를 분리할 수 있습니다.
@PiiColumn Decorator
Options
maskingMethod(required) : 마스킹 방식
null : null로 데이터를 변경합니다. 컬럼 타입이 nullable 인지 확인하세요.
zero : 0 으로 변환
blank : "" 으로 변환
edge1 ~ edge8 : 앞뒤로 1~8글자를 마스킹합니다.
center1 ~ center8 : 가운데부터 1~8글자를 마스킹합니다.
email : @를 중심으로 앞뒤 최대 5글자를 마스킹합니다.
(<T>(value: T) => Promise<T> | T) : 변환 콜백으로 별도의 변환 수행
Usage 1. PiiDisposalStrategy.DELETE
개인 식별 정보가 포함된 entity를 삭제하기 위해 필터링에 사용할 user ID 컬럼에 @PiiId decorator를 설정해 주세요.
// 최상위 유저 테이블
@Entity()exportclassUserextendsBaseEntity{
@PrimaryGeneratedColumn()
@PiiId({strategy: PiiDisposalStrategy.DELETE,hierarchyLevel: PiiHierarchyLevel.TOP})id!: number;// ... other columns}// 유저에게 종속된 정보 테이블들 예시
@Entity()exportclassOrderHistoryextendsBaseEntity{
@PrimaryGeneratedColumn()seq!: number;
@Index()
@ManyToOne((type)=>User,(parent)=>parent.id)
@PiiId({strategy: PiiDisposalStrategy.DELETE,hierarchyLevel: PiiHierarchyLevel.LEAF})user!: User;// ... other columns}constservice=newPiiComplianceService();/* * User.id가 9999인 유저가 탈퇴한 경우 아래와 같이 호출하면 OrderHistory -> User entity 순서대로 삭제가 진행됩니다. */awaitservice.process(// User ID값9999,// 파기 처리되기 전에 호출되는 콜백async(type,entity)=>{console.log(type,entity);});
Usage 2. PiiDisposalStrategy.MASKING
Entity 삭제 대신 일부 정보를 마스킹처리하려면 @PiiColumn decorator를 사용하세요.
// 최상위 유저 테이블
@Entity()exportclassUserextendsBaseEntity{
@PrimaryGeneratedColumn()
@PiiId({strategy: PiiDisposalStrategy.MASKING,hierarchyLevel: PiiHierarchyLevel.TOP})id!: number;
@Column()
@PiiColumn({maskingMethod: 'edge2'})firstName!: string;
@Column()
@PiiColumn({maskingMethod: 'edge2'})lastName!: string;
@Column()
@PiiColumn({maskingMethod: 'email'})email!: string;// ... other columns}// 유저에게 종속된 정보 테이블들 예시
@Entity()exportclassOrderHistoryextendsBaseEntity{
@PrimaryGeneratedColumn()seq!: number;
@Index()
@ManyToOne((type)=>User,(parent)=>parent.id)
@PiiId({strategy: PiiDisposalStrategy.DELETE,hierarchyLevel: PiiHierarchyLevel.LEAF})user!: User;// ... other columns}constservice=newPiiComplianceService();/* * User.id가 9999인 유저가 탈퇴한 경우 아래와 같이 호출하면 OrderHistory -> User entity 순서대로 마스킹과 삭제가 진행됩니다. */awaitservice.process(// User ID값9999,// 파기 처리되기 전에 호출되는 콜백async(type,entity)=>{console.log(type,entity);});