可扩展的数据分类以实现安全性和隐私性





根据内容对数据进行分类是一项艰巨的任务。传统的数据丢失防护(DLP)系统通过对相关数据进行指纹识别并监视指纹端点来解决此问题。考虑到Facebook上大量不断变化的数据资产,这种方法不仅无法扩展规模,而且在确定数据的位置方面无效。本文是关于一个端到端系统的,该系统旨在大规模发现Facebook上的敏感语义类型并自动执行存储和访问控制。



这里描述的方法是我们的​​第一个端到端隐私系统,它试图通过合并数据信号,机器学习和传统指纹技术来显示和分类所有Facebook数据来解决此问题。所描述的系统在生产环境中运行,在各种隐私级别处理数十个存储中的大量数据资源时,平均F2得分达到0.9+。介绍基于机器学习的Facebook的ArXiv帖子的翻译,该文章涉及可扩展的数据分类,以实现安全性和隐私性。



介绍



如今,组织以各种格式和位置收集和存储大量数据[1],然后在许多地方使用数据,有时将其复制或缓存多次,结果有价值的敏感业务信息分散在许多公司数据仓库中。当要求组织遵守某些法律或法规要求,例如遵守民事诉讼程序中的法规时,有必要收集相关数据的位置。当隐私声明指出组织与未经授权的实体共享个人信息时必须掩盖所有社会安全号码(SSN)时,自然的第一步就是在组织范围的数据存储中搜索所有SSN。在这种情况下,数据分类变得至关重要[1]。分类系统将使组织能够自动执行隐私和安全策略,例如启用访问控制策略,数据保留。 Facebook正在介绍我们在Facebook建立的系统,该系统使用各种数据信号,可伸缩的系统架构以及机器学习来发现敏感的语义数据类型。可扩展的系统架构和机器学习,以发现敏感的语义数据类型。可扩展的系统架构和机器学习,以发现敏感的语义数据类型。



查找和分类数据就是在查找和标记数据,以便您可以在需要时快速有效地检索相关信息。当前的过程本质上是手动的,包括检查相关法律或法规,确定应将哪些类型的信息视为敏感信息以及不同级别的敏感度,然后在适当的类别构建和分类策略中确定[1]。在数据丢失防护(DLP)系统之后,对数据进行指纹识别,并在下游监视端点是否有指纹。当处理具有大量资产和PB级数据的仓库时,这种方法根本无法扩展。



我们的目标是建立一个数据分类系统,以针对持久性和易失性用户数据进行扩展,而对数据类型或格式没有任何其他限制。这是一个雄心勃勃的目标,自然充满困难。任何数据记录都可以是数千个字符长。





图1.在线和离线预测流



因此,我们必须使用一组通用功能来有效地表示它,然后可以将其组合并轻松移动。这些功能不仅应提供准确的分类,还应提供灵活性和可扩展性,以便将来轻松添加和发现新的数据类型。其次,您需要处理大型独立表。持久性数据可以存储在大小为PB的表中。这可能导致扫描速度降低。第三,对于挥发性数据,我们必须遵守严格的SLA分类。这使系统高效,快速且准确。最后,我们需要为易失性数据提供低延迟的数据分类,以便实时执行分类,并针对互联网使用案例进行分类。



本文介绍了我们如何解决上述问题,并提出了一种快速且可扩展的分类系统,该系统基于一组通用功能对所有类型,格式和源的数据项进行分类。我们扩展了系统架构,并建立了自定义机器学习模型,以快速对离线和在线数据进行分类。本文的组织如下:第2节介绍了系统的总体设计。第三部分讨论了机器学习系统的各个部分。第4和5节介绍了相关工作,并概述了未来的工作方向。



建筑



为了处理Facebook规模的持久性数据和在线数据问题,分类系统有两个单独的流,我们将对其进行详细讨论。



持续数据



最初,系统需要了解各种Facebook信息资产。对于每个仓库,都会收集一些基本信息,例如包含该数据的数据中心,包含该数据的系统以及位于特定数据仓库中的资产。这形成了元数据目录,使系统可以有效地检索数据,而不会导致其他工程师使用的客户端和资源超负荷。



此元数据目录为所有扫描资产提供了可靠的来源,并允许您跟踪各种资产的运行状况。该信息用于基于收集的数据和来自系统的内部信息来确定调度的优先级,例如上一次成功扫描资产的时间和创建时间,以及该资产的先前内存和处理器要求(如果先前已对其进行扫描)。然后,对于每个数据资源(随着资源变得可用),将调用该资源的实际扫描作业。



每个作业都是一个已编译的二进制文件,它根据每个资产可用的最新数据运行伯努利样本。资产被拆分到单独的列中,其中每个列的分类结果将独立处理。另外,系统会扫描列中的任何丰富数据。会扫描JSON,数组,编码结构,URL,base 64序列化数据等。由于单个表可以在blob中包含数千个嵌套列,因此可以大大增加扫描执行时间json



对于数据资产中选择的每一行,分类系统从内容中提取浮点数和文本对象,并将每个对象与获取该对象的列相关联。特征提取步骤的结果是数据资产中每个列的所有特征的映射。



有什么迹象?



特征的概念是关键。除了浮动和文本特征,我们还可以传递直接从每个数据资源获取的原始字符串模式。此外,可以直接在每个样本上训练机器学习模型,而不是仅尝试近似样本的数百个特征计算。有几个原因:



  1. : , , . , . , , .
  2. : . . , , .
  3. : , . .



然后将特征发送到预测服务,在此我们使用基于规则的分类和机器学习来预测每列的数据标签。该服务依赖于规则分类器和机器学习,并从每个预测对象中选择最佳预测。



规则分类器是手动试探法,使用计算和系数对0到100范围内的对象进行归一化。一旦为每种数据类型和与该数据相关联的列名生成了这样的初始分数,它就不会包含在任何“拒绝列表”中,规则分类器会在所有数据类型中选择最高的标准化分数。



由于分类的复杂性,使用纯手动启发式方法会导致分类准确性低,尤其是对于非结构化数据。因此,我们开发了一种机器学习系统来处理非结构化数据的分类,例如用户生成的内容和地址。机器学习使我们开始摆脱手工启发法,并应用其他数据信号(例如列名,数据来源),从而大大提高了检测精度。稍后我们将深入研究我们的机器学习架构。



Prediction Service将每列的结果以及有关扫描时间和状态的元数据存储起来。任何依赖此数据的使用者和下游流程都可以从每日发布的数据集中读取它。该集合将汇总所有这些扫描作业的结果或数据目录的实时API。已发布的预测是自动执行隐私和安全策略的基础。



最后,在预测服务写入所有数据并保存所有预测之后,我们的数据目录API可以实时返回资源的所有数据类型预测。每天,系统都会发布一个数据集,其中包含每个资产的所有最新预测。



易失数据



尽管上述过程是针对持久性资产而设计的,但非持久性流量也被视为组织数据的一部分,这可能很重要。由于这个原因,系统提供了一个在线API来生成任何易变流量的实时分类预测。实时预测被广泛用于对出站流量,机器学习模型中的入站流量和广告客户数据进行分类。



该API在此处采用两个主要参数:分组密钥和要预测的原始数据。该服务执行与上述相同的对象检索,并针对同一密钥将对象分组在一起。这些症状在持久性高速缓存中也支持故障转移。对于每个分组密钥,该服务确保按照上述过程,在调用预测服务之前已看到足够的样本。



优化



我们使用库和热存储读取优化技术[2]来扫描某些存储库,并确保不会因访问同一存储库的其他用户而造成干扰。



对于极大的表(超过50 PB),尽管进行了所有优化和内存效率优化,但系统仍会在内存耗尽之前进行扫描和计算。毕竟,扫描是在内存中完全计算出来的,并且在扫描过程中不会存储。如果大型表包含数千列具有非结构化数据块的列,则在为整个表进行预测时,由于内存资源不足,作业可能会失败。这将减少覆盖范围。为了解决这个问题,我们优化了系统,以使用扫描速度作为系统处理当前负载情况的中介。我们将速度用作预测机制,以查看内存问题并主动计算特征图。但是,我们使用的数据比平时少。



数据信号



分类系统仅与来自数据的信号一样好。在这里,我们将研究分类系统使用的所有信号。



  • 基于内容:当然,最重要的信号是内容。对于我们扫描的每个数据资产均采用伯努利样本,并按数据内容进行特征提取。许多迹象来自内容。可能有任意数量的浮点数,这些浮点数表示对某种特定类型的模式已看到多少次的计算。例如,对于样本中看到的电子邮件数量,我们可能有口号,或者指示样本中看到了多少表情符号。这些特征计算可以在不同扫描之间进行归一化和汇总。
  • : , , . — . , , . , .
  • : , . . , .
  • — , , . , , , , . , . , .




一个重要的组成部分是用于度量指标的严格方法。分类改进迭代的主要指标是每个标签的准确性和召回率,其中F2分数最为重要。



计算这些指标需要一种独立的方法来标记数据资产,该方法与系统本身无关,但可用于直接与之进行比较。下面,我们描述了如何从Facebook收集基本真相,并使用它来训练我们的分类系统。



收集可靠的数据



我们从下表中列出的每个来源收集可靠的数据。每个表负责汇总来自该特定来源的最新观测值。每个来源都有数据质量检查,以确保每个来源的观察值都是高质量的,并包含最新的数据类型标签。



  • 日志记录平台配置:“蜂巢”表中的某些字段填充有属于某种类型的数据。此数据的使用和传播是可靠数据的可靠来源。
  • : , , . , , .
  • , .
  • : Facebook . , , , . .
  • : , , , , . , .
  • : , . , , GPS.
  • : , , . .


我们将所有主要有效数据来源与所有这些数据合并为一个语料库。准确性的最大问题是确保它可以代表数据存储。否则,分类引擎可能会过拟合。为了与之抗争,在训练模型或计算指标时,上述所有资源均用于提供平衡。此外,人类营销人员在商店中均匀选择不同的列并适当地标记数据,以保持有效值的收集不偏不倚。



持续集成



为了实现快速迭代和改进,始终实时测量系统性能非常重要。与当今的系统相比,我们可以衡量分类的每项改进,因此从战术上讲,我们可以将数据定位为进一步的改进。在这里,我们看一下系统如何完成由有效数据驱动的反馈回路。



当调度系统遇到从受信任来源标记的资产时,我们将调度两个任务。首先使用我们的制造扫描仪,从而使用我们的制造能力。第二项任务使用具有最新标志的最新版本扫描仪。每个任务将其输出写入其自己的表中,标记版本以及分类结果。



这就是我们实时比较发布候选者和生产模型的分类结果的方式。



当数据集比较RC和PROD功能时,会记录预测服务的ML分类引擎的许多变体。最新构建的机器学习模型,生产中的当前模型以及任何实验模型。相同的方法允许我们“切片”模型的不同版本(与规则分类器无关)并实时比较指标。知道什么时候可以准备将​​ML实验投入生产非常容易。



每天晚上,将当天计算出的RC发送到ML训练管道,在该管道上对模型进行最新RC训练,并根据有效数据集评估其性能。



该模型每天早上完成训练,并自动发布为实验文件。它会自动包含在实验列表中。



一些结果



高精度标记了100多种不同类型的数据。结构良好的类型(例如电子邮件和电话号码)的f2得分超过0.95。诸如自定义内容和名称之类的免费数据类型也表现出色,F2分数超过0.85。



每天在所有商店中对大量的持久性数据和易失性数据分别进行分类。每天在10多个数据存储中扫描超过500 TB。这些存储库大多数都具有超过98%的覆盖率。



随着时间的流逝,分类变得非常高效,因为持久脱机流中的分类作业从扫描资产到计算每列预测平均需要35秒。





数字:2.描述集成的连续流程以了解RC对象如何生成并发送到模型的图。





图3.机器学习组件的高级示意图。



机器学习系统组件



在上一节中,我们深入研究了整个系统的体系结构,重点介绍了规模,优化和脱机和联机数据流。在本节中,我们将研究预测服务,并描述为预测服务提供动力的机器学习系统。



拥有100多种数据类型和一些非结构化内容(例如发布数据和用户生成的内容),使用纯手动试探法可实现子参数分类准确性,尤其是对于非结构化数据。因此,我们还开发了一种机器学习系统来处理非结构化数据的复杂性。使用机器学习可以使您开始摆脱手工启发法,并使用功能和其他数据信号(例如,列名,数据源)来提高准确性。



所实现的模型分别研究密集和稀疏对象上的矢量表示[3]。然后将它们组合形成一个向量,该向量经过一系列批量归一化[4]和非线性步骤以产生最终结果。最终结果是每个标签的[0-1]之间的浮点数,表明该示例具有给定灵敏度类型的可能性。对模型使用PyTorch可使我们更快地移动,从而使团队外部的开发人员能够快速进行和测试更改。



设计体系结构时,由于它们的内部差异,分别对稀疏(例如文本)和密集(例如数字)对象进行建模很重要。对于最终架构而言,执行参数扫描以找到学习速率,数据包大小和其他超参数的最佳值也很重要。优化器选择也是重要的超参数。我们发现流行的Adam优化器经常导致过度拟合,而SGD模型更稳定。我们还必须将其他细微差别直接包含在模型中。例如,当要素具有特定值时,可确保模型进行确定性预测的静态规则。这些静态规则由我们的客户定义。我们发现,将它们直接包含在模型中会导致结构更完备,更健壮,而不是实施后处理步骤来处理这些特殊情况。另请注意,在训练过程中禁用了这些规则,以免干扰梯度下降训练过程。



问题



收集高质量,可靠的数据是挑战之一。该模型需要每个类的有效性,以便它可以学习对象和标签之间的关联。在上一节中,我们讨论了用于测量系统和训练模型的数据收集方法。分析表明,信用卡和银行帐号之类的数据类别在我们的存储中不是很常见。这使得很难为训练模型收集大量可靠的数据。为了解决此问题,我们开发了用于获取这些类的综合有效数据的过程。我们针对敏感类型生成此类数据,包括SSN信用卡号IBAN-模型无法预测的数字。这种方法允许处理敏感数据类型,而没有与隐藏真实敏感数据相关的隐私风险。



除了数据完整性问题之外,我们还在处理开放式体系结构问题,例如隔离更改及早停止。... 变更的隔离很重要,因此,当对网络的不同部分进行各种变更时,其影响与特定类别无关,并且不会对整体预测性能产生广泛的影响。改善提前停止的标准也很关键,这样我们就可以在所有班级的稳定点停止训练,而不是在某些班级受到再训练而其他班级没有再训练的时候。



标志重要性



将新功能引入模型后,我们想知道其对模型的总体影响。我们还想确保这些预测是人类可以解释的,以便我们可以准确了解每种数据类型使用了哪些功能。对于这一点,我们已经开发并推出的逐类功能对PyTorch模型的重要性。请注意,这与特质的一般重要性不同,后者通常得以维护,因为它没有告诉我们哪些特质对于特定类别很重要。我们通过计算重新布置对象后预测误差的增加来衡量对象的重要性。当值的排列增加模型的误差时,特征是``重要的'',因为在这种情况下,模型依赖于预测中的特征。当特征的值改组使模型误差保持不变时,特征是``不重要的'',因为在这种情况下模型忽略了它[5]。



该功能对于每个类别的重要性使我们能够使模型易于解释,以便我们可以看到预测标签时模型要注意的内容。例如,当我们分析ADDR,那么我们确保每个类的特征相关性表中与地址相关的特征(例如AddressLinesCount)都排在较高的位置,以便我们的直觉与模型所学知识相匹配。



评定



定义成功的通用指标很重要。我们选择F2-召回率和准确性之间的平衡(召回偏差略大)。在隐私用例中,反馈比准确性更重要,因为对于团队来说,当务之急是不要泄漏任何敏感数据(同时确保合理的准确性)。我们模型的F2性能的实际估计超出了本文的范围。但是,通过仔细调整,对于最重要的敏感类别,我们可以获得较高的(0.9+)F2分数。



相关工作



有很多算法可以使用各种方法(例如模式匹配,文档相似性搜索和各种机器学习方法(贝叶斯,决策树,k最近邻和其他方法))对非结构化文档进行自动分类[6]。这些中的任何一个都可以用作分类的一部分。但是,问题在于可伸缩性。本文中的分类方法偏向于灵活性和性能。这使我们能够在将来支持新的类并保持较低的延迟。



还有大量的数据指纹识别工作。例如,[7]中的作者描述了一种解决方案,该解决方案着重于捕获机密数据泄漏的问题。主要假设是数据指纹有可能与一组已知的敏感数据匹配。 [8]中的作者描述了一个类似的隐私泄漏问题,但是他们的解决方案基于特定的Android架构,并且仅在用户操作导致发送个人信息时或在底层应用程序中泄漏了用户数据时才进行分类。这里的情况略有不同,因为用户数据也可以高度非结构化。因此,我们需要比打印照片更复杂的技术。



最后,为了处理某些类型的敏感数据的数据不足,我们引入了综合数据。关于数据增强的文献很多,例如,[9]中的作者研究了噪声注入在学习过程中的作用,并在监督学习中观察到了积极的结果。我们引入隐私的方法有所不同,因为引入嘈杂的数据可能适得其反,而我们专注于高质量的合成数据。



结论



在本文中,我们介绍了一个可以对数据进行分类的系统。这使我们可以创建系统来确保遵守隐私和安全策略。我们已经表明,可扩展的基础架构,持续集成,机器学习和高质量的数据保真度是我们许多隐私计划成功的关键。



未来的工作有很多领域。它可以包括提供对非示意图数据(文件)的支持,不仅对数据类型进行分类,还对灵敏度级别进行分类,并在训练期间通过生成准确的综合示例直接使用自我监督学习。反过来,这将有助于模型最大程度地减少损失。未来的工作可能还会集中在调查工作流程上,在此我们将超越检测范围,并为各种隐私泄露行为提供根本原因分析。这将在诸如敏感性分析(即数据类型的隐私的敏感性是高(例如,用户的IP)还是低(例如,Facebook的内部IP))的情况下有所帮助。



参考书目
  1. David Ben-David, Tamar Domany, and Abigail Tarem. Enterprise data classification using semantic web technolo- gies. In Peter F.Ï Patel-Schneider, Yue Pan, Pascal Hitzler, Peter Mika, Lei Zhang, Jeff Z. Pan, Ian Horrocks, and Birte Glimm, editors, The Semantic Web – ISWC 2010, pages 66–81, Berlin, Heidelberg, 2010. Springer Berlin Heidelberg.
  2. Subramanian Muralidhar, Wyatt Lloyd, Sabyasachi Roy, Cory Hill, Ernest Lin, Weiwen Liu, Satadru Pan, Shiva Shankar, Viswanath Sivakumar, Linpeng Tang, and Sanjeev Kumar. f4: Facebook’s warm BLOB storage system. In 11th USENIX Symposium on Operating Systems Design and Implementation (OSDI 14), pages 383–398, Broomfield, CO, October 2014. USENIX Association.
  3. Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg S Corrado, and Jeff Dean. Distributed representations of words and phrases and their compositionality. In C. J. C. Burges, L. Bottou, M. Welling, Z. Ghahramani, and K. Q. Weinberger, editors, Advances in Neural Information Processing Systems 26, pages 3111–3119. Curran Associates, Inc., 2013.
  4. Sergey Ioffe and Christian Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In Francis Bach and David Blei, editors, Proceedings of the 32nd International Conference on Machine Learning, volume 37 of Proceedings of Machine Learning Research, pages 448–456, Lille, France, 07–09 Jul 2015. PMLR.
  5. Leo Breiman. Random forests. Mach. Learn., 45(1):5–32, October 2001.
  6. Thair Nu Phyu. Survey of classification techniques in data mining.
  7. X. Shu, D. Yao, and E. Bertino. Privacy-preserving detection of sensitive data exposure. IEEE Transactions on Information Forensics and Security, 10(5):1092–1103, 2015.
  8. Zhemin Yang, Min Yang, Yuan Zhang, Guofei Gu, Peng Ning, and Xiaoyang Wang. Appintent: Analyzing sensitive data transmission in android for privacy leakage detection. pages 1043–1054, 11 2013.
  9. Qizhe Xie, Zihang Dai, Eduard H. Hovy, Minh-Thang Luong, and Quoc V. Le. Unsupervised data augmentation.


图片


, Level Up , - SkillFactory:





E







All Articles