文章
Michael Lei · 十二月 27, 2021 阅读大约需 5 分钟

翻译文章--数据匿名化 IRIS-Disguise 工具介绍

freepik- freepik.com
首先,什么是数据匿名化?

根据维基百科 Wikipedia:

数据匿名化 是一类以隐私保护为目的的 信息清洁  . 是从数据集中去除可确定个人的信息  , 使得该数据描述的个人保持匿名.

换句话讲, 数据匿名化是保留数据但同时要确保数据源的匿名.
基于所采用的匿名技术,数据被编辑、屏蔽或替换。
这就是IRIS-Disguise的目的,提供一套匿名化工具。
您可以使用两种不同的方式,通过方法执行或在持久类定义本身内部指定匿名化策略。

当前版本的IRIS-Disguise提供了6种匿名化数据的策略

  • 销毁Destruction
  • 加扰Scramble
  • 洗牌Shuffling
  • 部分掩蔽Partial Masking
  • 随机化Randomization
  • 伪造Faking

让我解释每种策略,我将用一个例子展示一个方法执行,正如前面提到的,我还将展示如何在持久类定义中应用。

要以这种方式使用IRIS-Disguise,您需要“戴上伪装眼镜”

在持久类中,可以扩展dc.Disguise.Glasses 类,并根据您选择的策略更改数据类型的任何属性。

之后,在任何时候,只需调用类上的congoverProcess方法。将使用数据类型的策略替换所有值。

让我们开始吧。

销毁 Destruction

此策略将用一个单词(默认为“机密”)替换整个列。

Do ##class(dc.Disguise.Strategy).Destruction("classname", "propertyname", "Word to replace")

第三个参数是可选的。如果没有的话,可以使用“机密”一词。

Class packageSample.FictionalCharacter Extends (%Persistent, dc.Disguise.Glasses)
{
Property Name As dc.Disguise.DataTypes.String(FieldStrategy = "DESTRUCTION");
}
Do ##class(packageSample.FictionalCharacter).DisguiseProcess()

1

Scramble 加扰

此策略将对属性中的所有字符进行扰乱。

Do ##class(dc.Disguise.Strategy).Scramble("classname", "propertyname")

Class packageSample.FictionalCharacter Extends (%Persistent, dc.Disguise.Glasses)
{
Property Name As dc.Disguise.DataTypes.String(FieldStrategy = "SCRAMBLE");
}
Do ##class(packageSample.FictionalCharacter).DisguiseProcess()

scramble

Shuffling 洗牌

洗牌将重新排列给定属性中的所有值。不是掩蔽策略,因为它“垂直”工作。

这种策略对于关系非常有用,因为引用完整性将得到保持。

在此版本之前,此方法仅适用于一对多关系

Do ##class(dc.Disguise.Strategy).Shuffling("classname", "propertyname")

Class packageSample.FictionalCharacter Extends (%Persistent, dc.Disguise.Glasses)
{
Property Name As %String;
Property Weapon As dc.Disguise.DataTypes.String(FieldStrategy = "SHUFFLING");
}
Do ##class(packageSample.FictionalCharacter).DisguiseProcess()

shuffling

Partial Masking 部分掩盖

此策略将掩盖部分数据,例如,信用卡号码可以替换为456X XXXX XXXX X783

Do ##class(dc.Disguise.Strategy).PartialMasking("classname", "propertyname", prefixLength, suffixLength, "mask")

PrefixLength, suffixLength and mask are optional. If not provided, the default values will be used.

Class packageSample.FictionalCharacter Extends (%Persistent, dc.Disguise.Glasses)
{
Property Name As %String;
Property SSN As dc.Disguise.DataTypes.PartialMaskString(prefixLength = 2, suffixLength = 2);
Property Weapon As %String;
}
Do ##class(packageSample.FictionalCharacter).DisguiseProcess()

partialmsk

Randomization随机化

此策略将生成纯随机数据。有三种随机类型:整数integer、数字numeric和日期date。

Do ##class(dc.Disguise.Strategy).Randomization("classname", "propertyname", "type", from, to)

类型:“整数”、“数字”或“日期”。“整数”是默认值。

取值范围是可选的。定义随机化的范围。

对于整数类型,默认范围为1到100。对于数字类型,默认范围为1.00到100.00。

Class packageSample.FictionalCharacter Extends (%Persistent, dc.Disguise.Glasses)
{
Property Name As %String;
Property Age As dc.Disguise.DataTypes.RandomInteger(MINVAL = 10, MAXVAL = 25);
Property SSN As %String;
Property Weapon As %String;
}
Do ##class(packageSample.FictionalCharacter).DisguiseProcess()

rand

Fake Data 数据伪造

伪造的想法是用随机但可信的数值替换数据。

IRIS-Disguise提供了一组生成虚假数据的方法。

Do ##class(dc.Disguise.Strategy).Fake("classname", "propertyname", "type")

type: "firstname", "lastname", "fullname", "company", "country", "city" and "email"

Class packageSample.FictionalCharacter Extends (%Persistent, dc.Disguise.Glasses)
{
Property Name As dc.Disguise.DataTypes.FakeString(FieldStrategy = "FIRSTNAME");
Property Age As %Integer;
Property SSN As %String;
Property Weapon As %String;
}
Do ##class(packageSample.FictionalCharacter).DisguiseProcess()

fake

 期待您的反馈!

请告诉我您对这个工具的看法,它是如何满足您的需求的,以及缺少哪些功能。

特别感谢 @Henrique Dias, @Oliver Wilms, @Robert Cemper, @YURI MARX GOMES and @Evgeny Shvarov 给予的评论,review 和建议启发我撰写和完善了 IRIS-Disguise.

10
1 1 0 40
登录或注册以继续