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

本博客的其余部分将实施上述创建两个 PII 存储桶(高度敏感和敏感度较低)的简单场景,我们将指导读者如何创建存储桶、为这两个存储桶创建适当的访问控制(供财务和营销/销售团队使用)、确保 MinIO 部署安全以及适当的数据保留策略到位。
创建存储桶
MinIO 控制台可用于执行常规管理任务,例如创建存储桶、创建用户、身份和访问管理等。我们尝试从上面实施的示例,如果需要使用对象锁定和特定基于时间的保留来创建敏感 PII 存储桶,则可以按如下方式实现

在这种情况下,我们创建了一个名为 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 控制台的“身份”选项卡下,用户可以创建一个组,例如在我们的案例中,财务和营销销售,并将策略分配给该组以及属于这些组的成员。在我们上面的架构图中,我们创建了一个属于财务组的“财务用户”和一个属于营销销售组的“营销销售用户”。
例如,管理员可能需要做的第一件事之一是创建可以分配给用户以供访问的策略。想象一下可能适用于两个不同组的两种不同策略:财务和营销销售。
允许用户访问 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/*"
]
}
]
}
名为 lesssensitivePII
策略的敏感度较低的 pii 访问策略可能允许访问 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 中创建用户时,可以在创建时定义策略和组,以便用户继承相应的属性。例如,您可以创建一个营销销售组用户(在下面的屏幕截图中,我们将其用户命名为 marketingsalesuser;此名称可以是任何名称,例如,在架构图中,我们将其用户命名为“营销销售用户”),并将 lesssensitivePII
策略分配给此用户,如下所示

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

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

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