使用 OSS 的数据隐私合规架构师指南
缺乏明确的数据监管给首席信息官带来了一场噩梦,他们只能猜测如何以及何时以何种程度的谨慎对待消费者数据。有远见的组织应为不可避免的法规做好准备,确保企业数据系统旨在减少数据暴露、识别加密漏洞并以集中方式跟踪/管理敏感数据。
企业数据系统必须适当实施两种特定功能,以准备提供适当的数据隐私合规性:
检测结构化和非结构化数据源中的敏感信息,以便可以对该数据进行适当的标记和沿袭。
一旦识别出敏感信息,就需要将其存储在允许适当访问控制、审计和加密(动态和静态)的系统中。
本博客将通过一个示例来指导读者如何使用名为 DataProfiler 的开源项目识别敏感信息,然后使用 MinIO 对象存储来支持数据隐私要求。
一般隐私状态:
保护消费者信息的数据隐私法在世界范围内不断发展。虽然欧洲监管机构根据 GDPR(通用数据保护条例)制定了非常严格的隐私规则,但美国没有联邦数据保护条例。目前美国有四个州制定了强制性法规,联邦法规将于 2022 年秋季在国会进行审查。当前的企业数据架构应考虑数据保护法规并设计系统以确保企业始终了解数据所在的位置。
企业需要注意两种类型的敏感数据:个人身份信息 (PII) 和受保护的健康信息 (PHI)。PII 的一些例子是银行账户信息、社会安全号码、护照或驾驶执照号码、电话号码、家庭住址等。PHI 的一些例子包括个人的医疗状况、残疾、图表等。许多组织可能收集PHI 信息(如医院、实验室、制药公司等),但几乎所有企业都有其客户的 PII 信息。这些信息对于公司为消费者定制产品非常有价值,但是每个公司都有法律义务在法律范围内利用这些信息,并为消费者提供撤销或修改组织持有的数据的权利。
检测敏感信息:
创建遵守数据隐私法规的企业数据策略的第一步是检测数据集中是否存在敏感信息。敏感信息的识别可以通过基于规则的模型或机器学习系统进行。基于规则的模型与机器学习模型之间的主要区别在于,机器学习系统基于使用可用数据的模型训练不断发展;而基于规则的模型是根据一组规则和操作进行编程的(想想编程语言中的 if、then、else 语句)。基于规则的模型具有有限的可扩展性潜力,因为所有场景都必须预先编程,而基于机器学习的模型可以根据传入的数据流和不断发展的学习而发展。
熟悉自然语言处理 (NLP) 系统的工程组织可以实施定制的数据识别解决方案。然而,有许多专有和开源项目可以帮助实施数据识别系统。亚马逊、微软和谷歌等大多数大型云提供商都提供基于云的功能来识别敏感信息;例如 Amazon 的 Glue、Azure 信息保护服务和 Google 的 Cloud Data Loss Prevention 解决方案。
出于本博客的目的,我们将研究一个名为 Data Profiler 的开源工具,该工具最初由 Capital One 开发。Data Profiler 的源代码可根据 Apache 2.0 许可在以下 Github 存储库中获得,https://github.com/capitalone/DataProfiler。DataProfiler 原生支持 CSV、AVRO、Parquet、JSON、文本和 URL。Data Profiler 提供对预训练深度学习模型的访问,并能够使用新的实体识别管道扩展模型。Data Profiler 允许用户对结构化数据运行预测并返回 Pandas DataFrame 中的数据(想想具有不同类型列的标记数据结构)。Data Profiler 还允许用户对非结构化数据进行操作并返回 NER(命名实体识别)中的数据——基本上识别和分类文本中的关键信息。
存储敏感信息:
所有数据隐私法规都要求组织必须知道:
企业数据湖中保存了哪些 PII/PHI 信息以及这些信息所在的位置
此信息必须保留多长时间以及存在适当的访问控制(谁可以访问 PII 数据)
企业存储系统内实施了适当的违规保护,以确保消费者数据安全(传输中和静态)。
可以在特定时间范围内尊重数据主体访问请求(例如清除数据或修改数据请求)
有许多合适的方法来设置支持适当的 PII/PHI 保留和访问规则的企业数据湖架构。MinIO 团队可以审查和评论我们企业客户的数据架构,但是为了使这个博客有用和简单,让我们考虑以下场景:
想象一下,一家金融机构保留了两种类型的 PII 信息(我确实提到了一个简单的例子:)。第一类信息是高度敏感的 PII,例如社会安全号码和银行账户信息——这些数据应该只对财务部门可用。第二种信息是不太敏感的 PII,例如客户的电子邮件地址和电话号码——这些数据需要提供给营销/销售团队。

本博客的其余部分将实现上述创建两个 PII 存储桶(高敏感和低敏感)的简单场景,我们将指导读者如何创建存储桶,为两个存储桶创建适当的访问控制(用于财务和营销) /sales groups),确保 MinIO 部署是安全的,并且适当的数据保留策略已经到位。
创建桶:
MinIO 控制台可用于一般管理任务,如存储桶创建、用户创建、身份和访问管理等。我们尝试从上面实现的示例,如果需要使用对象锁定和特定时间创建敏感的 PII 存储桶retention 那么它可以实现如下:

在这种情况下,我们创建了一个名为sensitive-pii对象锁定的新存储桶(因此它可能不会被错误删除)并将保留设置为 180 天。可以根据组织需要在指定的时间段内携带此敏感数据来设置保留期,但不会更长。通过将此期限设置为在创建时指定,组织可以确保敏感 PII 信息不会在组织内保留超过必要的时间。
类似地,可以创建第二个less-sensitive-pii数据存储桶,类似于我们上面创建敏感 PII 存储桶的方式,对于不太敏感的数据,将不定义“对象锁定”或“保留”。
DataProfiler 工具(我们在上面突出显示)可用于识别将持久保存到存储桶中的社会保障和银行帐户信息,sensitive-pii而任何具有电子邮件或电话号码(但没有社会保障或银行帐户信息)的对象都应路由到less-sensitive-pii桶。
控制对敏感数据的访问:
MinIO 使用基于策略的访问控制 (PBAC) 来定义经过身份验证的用户可以访问的授权操作和资源。每个策略都描述了一个或多个操作和条件,这些操作和条件概述了一个用户或一组用户的权限。
身份和访问管理可以通过利用内置的 MinIO 身份提供程序或连接到外部功能来完成,例如 OpenID Connect 访问管理解决方案(如 Okta、KeyCloak、Google、Facebook 等)或基于 Active Directory / LDAP 的访问管理。
在 MinIO 控制台的“身份”选项卡下,用户可以创建一个组,例如在我们的案例中,Finance 和 MarketingSales,并将策略分配给该组以及属于这些组的成员。在上面的架构图中,我们创建了一个属于 Finance 组的“Finance User”和一个属于 MarketingSales 组的“MarketingSales User”。
例如,管理员可能需要做的第一件事就是创建可以分配给用户访问的策略。想象一下可能适用于两个不同组的两个不同策略:Finance 和 MarketingSales。
允许用户访问存储桶(从上方)的 sensitive-pii 策略sensitive-pii可能如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::sensitive-pii",
"arn:aws:s3:::sensitive-pii/*"
]
}
]}不太敏感的 pii 访问策略,称为lesssensitivePII策略,可能允许访问存储less-sensitive-pii桶,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::less-sensitive-pii",
"arn:aws:s3:::less-sensitive-pii/*"
]
}
]}在 MinIO 中创建用户时,可以在创建时定义策略和组,以便用户继承适当的属性。例如,您可以创建一个 MarketingSales 组用户(在下面的屏幕截图中我们将此用户称为 marketingsalesuser;此名称可以是任何名称,例如在架构图中我们将此用户称为“MarketingSales User”)并将策略分配lesssensitivePII给该用户如下:

sensitive-pii同样,您可以创建一个财务用户(称为 spiiuser;同样,此名称可以是任何类似 FinanceUser 的名称),该用户可以使用sensitive-pii策略和存储桶访问存储less-sensitive-pii桶。在这种情况下,我们建议 spiiuser 不仅可以访问敏感数据,还可以访问不太敏感的数据。

营销和销售用户将只能访问该lesssensitivepii策略。

您可以在我们的文档中找到有关访问管理以及如何自定义访问的详细信息,如下所示:
违规保护/保护 MinIO:
每项隐私法规的最基本要求之一是确保消费者数据不会暴露给不良行为者。MinIO 提供业界最高级别的数据保护。MinIOp 可以配置为使用 TLS 证书保护传输中的数据。MinIO 还提供了使用行业标准 KMS(密钥管理系统)或称为 KES 的内置 MinIO 解决方案来保护静态数据的能力。关键的考虑因素是了解如何为飞行中的数据设置 TLS 环境或连接到 KMS 环境。
我的同事 Andreas Auernhammer 有一篇关于如何最好地设置安全环境的详细博客,它可以作为希望减轻信息安全威胁向量的组织的蓝图,请参考以下内容:
https://blog.min.io/secure-minio-1/
结论:
企业数据架构师有责任创建企业数据湖,使数据隐私合规性成为架构的一部分,而不是事后才想到的。数据的识别和标记是实现合规性的第一步。安全存储此数据、按需查询内容以及根据数据主体(消费者)的请求访问/修改此数据的能力至关重要。MinIO 提供了最基本的构建块之一,可以创建市场上最全面的数据隐私环境之一。MinIO 有高级架构师可以验证企业的数据架构,并根据我们如何帮助全球数百家组织实现其对象存储需求提供反馈。