一、前言
去年12月20日,某知名汽车品牌发生了数据泄露事件,而且泄露的数据包含用户个人隐私数据,也包含了公司的运营销售信息等商业机密数据。泄露的个人隐私信息将用户暴露于短信、电话骚扰甚至电信诈骗的危害之下,同时也造成了用户对企业的信任危机,企业也将会面临监管的调查。
而在不久之前的12月13号,“通信行程卡”小程序下线后,各大通信运营商随即发布了删除相关数据的通告。通信行程码中保存了个人身份信息和个人行程信息等敏感隐私数据。如果因为该数据的泄露,很可能会导致一些电信诈骗案件出现,对个人危害极大。业务下线后,运营商通过删除了个人信息来保护广大市民的敏感信息。
随着信息安全攻击的频繁发生,任何企业都面临潜在数据泄露安全事件的风险。通过一些简单的隐私数据保护措施,可以降低发生数据泄露事件的可能性,或者在发生数据泄露事件时,减少其危害性。
本文先简要介绍一下隐私数据保护基本知识,然后再介绍在数据平台中不同场景下应用对应的数据保护措施。
二、为什么需要保护隐私数据?
处理个人数据的私密和安全非常重要,原因有两个。一是遵守数据隐私法律和规定。在大多数国家和地区,都有严格的法律保护个人隐私。这些法律规定了如何收集、使用和储存个人数据,并规定了违反这些规定的后果。负责处理个人数据有助于遵守这些法律和规定,避免违反法律的后果。另一个原因是数据泄露事件会给企业带来严重的信任危机和经济成本。数据泄露会导致客户和利益相关者的信任危机,并可能导致昂贵的罚款和法律程序。
1.什么是隐私数据?
第一类隐私数据是PII。PII(Personally Identifiable Information)是指与个人身份相关的信息。这些信息包括姓名、电话号码、邮箱地址、社会安全号码、银行账号信息等,这些信息可以直接或结合其他信息用于识别某个特定个人。
第二类隐私数据是与个人相关的信息,但不属于PII。这包括个人的兴趣爱好、性格、活动和信仰、个人的行程信息、健康信息等。
第三类隐私数据是个人、企业或组织的专有且保密的信息。通常,与商业性质有关或与合同有关的数据被认为是敏感的,泄露这类数据往往会影响商业运营或面临法律风险。
2.如何识别隐私数据?
对于数据工程团队,一般来说没有统一的敏感信息的标准。不同的地区,不同的行业有不同的规定和法律。不同的公司对隐私数据的定义都不一样。在企业内,一般需要遵守数据治理团队、数据隐私团队或者企业安全团队建立的数据安全框架和安全策略。
此外我们还可以基于一些隐私扫描工具来检测数据中可能存在的隐私风险,比如微软开源的Microsoft Presidio。甚至云厂商们都不断推出隐私数据保护相关的安全产品来识别隐私数据的合规性风险。
3.怎么保护隐私数据?
对于保护隐私数据的关键技术有数据脱敏、匿名化,此外还有隐私计算和数据合成。
处理隐私数据时需要考虑两个基本的要求:
- 数据保密性:需要保证潜在的数据泄露事件发生后,攻击者无法获取到敏感信息。
- 数据可用性:保证被处理后的数据,仍然保持某些统计特性或者业务含义,在某些业务场景中是可用的。
这两个指标是矛盾的,我们需要根据实际的业务需求和安全需求来调节和平衡。
(1) 数据脱敏 (Data Masking)
数据脱敏,也叫假名化(Pseudonymous),通过用虚假信息替换PII信息或者对敏感信息进行加密来实现对隐私数据的。大部分脱敏技术处理过后数据不可逆,即没办法还原成原文。
数据脱敏
常见数据脱敏方法
脱敏后的数据不再包含PII信息但是仍然属于个人信息的范畴,受大部分数据安全保护法律法规保护。某些场景下,攻击者可以通过结合外部数据来确定个人。例如当我们能把某位职员的公司信息和职位信息和脱敏后的个人数据结合在一起,那么几乎可以确认这个人的身份。
与外部关联数据结合后,数据脱敏后仍不是完全安全
(2) 匿名化(Anonymous)
数据匿名通过完全消除PII信息来保护数据的隐私。数据匿名化的目的是使数据集中的个人身份信息不能被确定,从而使数据更加安全。匿名化的数据通常不再属于个人信息的范畴,因此也不受大部分个人数据保护相关的法律法规的限制。
常见的匿名化的技术方法有:
- 数据删除:从数据中删除某些字段,以此来消除数据中的个人身份信息。
- 数据随机化:对数据进行随机处理,以此来消除数据中的个人身份信息。
- 数据泛化、K匿名:将数据中的个人身份信息替换为区间值来保护个人隐私,同时也能保留一些数据价值。
数据匿名化
数据匿名化的好处有:
- 更安全地保护个人隐私数据数据泄漏发生后对个人造成的危害性是较小的
- 更安全地进行数据协作和共享
- 没有了法律法规上对个人信息数据使用的限制
匿名化后的数据带来数据安全的同时也会降低数据质量和数据可用性。匿名化的数据也不是绝对安全的。
(3) 其他技术
除了最基本的隐私数据处理技术外,还有一些在快速发展的隐私数据保护技术。
隐私计算是一种技术,旨在保护数据的隐私和安全,同时允许在不泄露原始数据的情况下进行数据处理和分析。它通过在受信任的执行环境中进行数据处理来实现这一目的,以便在数据处理完成后将结果返回给请求方。
合成数据是人为生成的数据,而不是由真实世界事件产生的数据。它通常使用算法生成,可用于验证数学模型和训练机器学习模型。合成数据可以帮助保护原始数据的隐私,因为它不是真实的个人信息。
三、数据平台隐私数据保护实践
1.数据平台隐私数据保护架构
数据平台接收上游数据源中各种数据,其中包括大量的用户和雇员的个人信息,以及公司运营、财务等机密信息。同时,数据平台中会有数据工程师、数据分析师和数据科学家使用这些数据。作为企业数据集中采集、处理和共享的平台,数据泄露发生的风险和危害程度都很高。
因此,数据平台和数据仓库承担着隐私数据保护的重要责任。为了降低在数据平台中发生数据泄露的可能性和危害性,数据平台需要应用数据脱敏、数据加密等隐私数据保护技术。架构上,数据在数据平台中生命周期中的不同阶段会采取数据脱敏、数据加密等方式来构建端到端内建隐私数据保护的企业数据管道。
在基础设施上:
- 业务平台和数据平台均使用了HashiCorp Vault作为安全管理和访问密钥的基础设施
在数据源上:
- RDS中的数据一般依赖于上游业务系统的数据保护措施,数据平台很难进行预先干预。
- 数据平台运维的对象存储AWS S3 Buckets,一般会让上游业务系统放入文件级别加密后的文件。对于非技术用户采用AWS KMS对S3 Buckets进行数据加密。
在数据仓库中:
- 数据集成工具支持对行级别的加密和数据脱敏等操作,对于PII信息数据需要脱敏后或者加密后存储到数据仓库中。加密和数据脱敏所需要的加密密钥和密码学算法的参数,数据集成工具会从Vault的KV Secret Engine进行读取。
- 数据仓库内部通过创建Masking Policy来实现动态数据脱敏。针对不同角色的查询操作员进行不同程度的数据遮蔽。
- 当下游的业务系统需要PII数据支持时,我们会在数据导出时对PII字段进行解密,再通过密码学算法使用数据平台的私钥和下游数据消费方的公钥对解密后的数据进行字段级别或者文件级别的加密,再写入到数据仓库应用层的数据集市中或者AWS S3 Buckets的文件中。
数据平台隐私数据保护架构
2.数据脱敏(Data Masking):避免暴露敏感信息
数据脱敏的目的是避免暴露敏感信息给大部分数据消费方。
在数据平台中,数据脱敏主要有两种实现方式:
- 静态脱敏:通过数据脱敏技术,将生产数据脱敏后导出到目标的存储中,被存储的数据已经改变了信息内容。
- 动态脱敏:通过准确地解析SQL语句匹配脱敏条件,在匹配成功后,改写查询语句或者返回数据,将脱敏后的数据返回。
静态脱敏实现方式主要是在数据管道中内建数据脱敏。我们可以在数据集成工具中内建脱敏功能,使数据在进入数据仓库后就已经是脱敏数据。动态脱敏主要基于数据库系统或者云数据仓库的RBAC机制和内建的数据脱敏功能,通过针对特定操作角色和数据列创建脱敏规则,在数据被查询时,执行引擎会根据查询上下文来决定返回的数据是源文本还是脱敏后的值。
动态脱敏更为灵活,能轻松应对数据安全需求的变化,但需要数据库查询引擎支持。静态脱敏实现上更为简单,但当数据安全需求变化时,我们通常也需要完全重建数据仓库相关数据模型。
例如在Snowflake云数据仓库中,我们可以设立如下规则对email列进行动态脱敏。当数据仓库用户角色为数据分析师的时候返回源文本,而其他角色查询返回完全屏蔽的值。
3.数据加密(Data Encryption):安全数据分享
与数据脱敏不同,数据加密的主要目标是共享数据给授权过的可信方。
处理加密时需要考虑的问题:
- 如何管理加密密钥,如何保证密钥安全地和其他系统集成?
- 多个实体之间安全地共享加密密钥?
对于问题1,我们选择了开源的密钥管理系统HashiCorp Vault。Hashicorp Vault是一个用于管理和保护机密信息的工具。它允许用户存储,管理和控制对机密信息的访问。机密信息可以是密码,API密钥,证书或其他敏感信息。Vault可以很好地和Kubernetes结合,我们可以安全地在应用Pod启动时将机密信息注入到Pod中。此外,Vault还可以动态生成或者定期刷新数据库凭证,避免数据库密码泄露风险。
对于问题2,我们选择了AES-256-GCM作为数据加密的算法同时使用ECDH算法来交换两个实体的公钥来创建共享AES-256-GCM的加密密钥,来保证加密密钥的安全性。
ECDH图示
ECDH(Elliptic Curve Diffie–Hellman Key Exchange)算法过程如下图:
- Alice和Bob通过ECC算法创建各自的公私钥对,需采用相同的椭圆曲线。
- Alice和Bob互相交换公钥。
- Alice计算加密密钥 = Bob公钥 * Alice私钥
- Bob计算加密密钥 = Alice公钥 * Bob私钥
- Alice和Bob的加密密钥是相等的,Alice加密的数据,Bob也能解密。
使用OpenSSL命令行工具实现该过程。
端到端隐私数据加密解密过程如下:
- PII隐私数据加密后进入数据仓库,加密密钥是数据平台自己维护的密钥,从Vault中读取
- 数据仓库中存在的是密文数据,下游数据需要PII信息时,使用特定下游数据使用方的公钥和数据平台私钥生成共享加密密钥对数据文件进行加密,这样只有该下游数据使用方才能解密数据。
- 下游去访问或者接收到加密后的数据文件后,再用数据平台的公钥和该系统的私钥生成共享加密密钥对数据文件进行解密。当下游数据使用方无需给数据平台共享数据时,我们可以在加密文件时,运行时生成一组新的公私钥对,在数据文件中嵌入公钥和相关密码学参数。这样只要双方保持一致的加解密协议,下游在确保隐私数据的获取和使用的同时,数据平台方人员也不能解密数据文件,进一步减少了数据泄露的风险。
数据管道中加密过程
业务系统中解密过程
4.数据哈希(Data Hashing):跨数据域隐私数据关联
有些场景期望与外部数据域的数据进行数据融合和数据共享时,通常需要通过个人隐私信息或者其他敏感信息将双方数据域的数据关联在一起。同时在数据传输、处理和存储的过程中不期望暴露隐私信息。此时,我们可以利用数据哈希的特性来实现跨数据域的隐私数据关联。
跨数据域隐私数据关联
图中场景存在三个数据域,数据平台所属公司B,母公司A和合作公司C,其隐私数据关联过程如下:
- 母公司A选择哈希算法Hashing(H1)和盐值SaltA计算得到ID信息的哈希值ID_NUMBER_A_HASHED,提供给数据平台。
- 合作公司C选择哈希算法Hashing(H1)和盐值SaltC计算得到ID信息的哈希值ID_NUMBER_C_HASHED,提供给数据平台。
- 数据平台公司B为了完全考虑,先对ID_NUMBER进行加密。
- 经过数据管道接入数据时,数据平台先对ID_NUMBER进行解密,再根据不同公司的哈希算法和盐值分别计算出对应的相等的哈希值。
- 在数据进入数据平台之前,再次采用不同的哈希算法进行一次哈希,将得到的哈希值存入数据仓库中。避免数据平台和数据域中采用相同哈希算法导致可能存在的哈希字典攻击。
- 数据仓库里就可以通过不同数据域隐私信息的哈希值进行数据关联,获取来源于各个数据域的共享数据(Payload)。
四、总结
- 个人隐私数据受到法律法规的保护,企业越来越关注对个人隐私数据的处理。数据平台数据仓库作为数据的集中式采集处理场所也应该提高对个人隐私数据处理的关注度。
- 保护隐私数据的关键技术主要有数据脱敏、匿名化和加密技术。此外,隐私计算和合成数据等技术也值得关注和实践。
- 在数据平台隐私数据保护实践中,数据脱敏用于避免暴露隐私数据给大部分数据消费者,数据加密技术用于分享隐私数据给可信方,最后数据哈希技术用于跨数据域的隐私数据关联场景。此外我们还需要如
- 还没有人评论,欢迎说说您的想法!