MinIO 中的数据真实性和完整性

组织以极大的规模和速度摄取、处理和分析数据。在一个典型的场景中,从多个来源收集到的数据被推送到数据存储中,在那里进行分析、用于机器学习训练、用额外的源数据进行丰富等等。随着人员和应用程序对数据的处理,数据可能会以多种方式被修改,但保持每个参与方对他们正在使用的是真实数据集的信心至关重要。这只有在整个数据生命周期中维护数据真实性和完整性时才能实现。
版本控制是确保数据真实性和完整性的关键组成部分。当团队处理数据时,会创建多个版本的数据文件。每个版本都可能很重要,因为它能够回退到进行特定更改之前的版本。版本可以同时用于不同的目的,或彼此替换。不同的版本可能包含不同的数据,因为数据清洗、转换、丰富或添加特定项目的数据。
如果数据要具有业务价值,跟踪不同版本的数据以了解每个版本的内容以确保其有用至关重要,同时防止未经授权的修改或删除以确保其真实性。
数据真实性和完整性是通过多种机制的组合来提供的
- 擦除编码
- 数据腐败保护
- 加密
- 数据不可变性
- 版本控制
让我们看看这些机制,了解 MinIO 如何保护和版本化数据作为对象。
擦除编码
MinIO 在对象级别使用擦除编码来保护数据免受丢失和损坏,这是对数据真实性和完整性的两个严重威胁。擦除编码将对象分解为数据块和奇偶校验块,其中奇偶校验块支持重建丢失或损坏的数据块。数据块和奇偶校验块分布在 MinIO 集群内的节点和驱动器上。使用 MinIO 的最高保护级别(8 个奇偶校验或 EC:8),您可以丢失多达一半的总驱动器并仍然恢复数据。
擦除编码非常适合典型的对象存储使用模式,即写入一次不可变对象,该对象被多次读取。MinIO 使用 Intel AVX512 指令来充分利用多个节点上的主机 CPU 资源,以实现快速擦除编码读写。有关 MinIO 如何实现擦除编码的更深入说明,请参阅我之前发布的博客文章,对象存储擦除编码与块存储 RAID。
当与 BitRot 保护相结合时,擦除编码可以维护存储在 MinIO 内驱动器上的对象的完整性和真实性。如果任何对象的任何版本都被损坏,MinIO 将对其进行修复,以继续为应用程序和用户提供可信赖的数据。
数据腐败保护
BitRot 或静默数据损坏可能是对数据真实性的严重威胁。BitRot 可能由多种因素引起,例如电源电流尖峰、驱动器固件错误或其他驱动器错误。这些错误会造成严重问题,因为它们在用户不知情的情况下发生。到确定数据已被破坏时,可能为时已晚,无法修复或重新生成它。
MinIO 使用优化的 HighwayHash 算法 实现,实时捕获和修复损坏的对象。在应用程序的 READ 操作中计算哈希,并在 WRITE 操作中进行验证,以确保对象完整性,从而消除 BitRot 对数据真实性的风险。
加密
加密是数据真实性武器库中的支柱。MinIO 采用多层方法来加密数据,无论是在网络上传输还是存储在驱动器上。加密数据 时,它在网络中传输保持数据在外部应用程序和 MinIO 之间以及 MinIO 集群内节点之间发送时的机密性、真实性和完整性。MinIO 支持普遍存在的 传输层安全 (TLS) v 1.2+ 来加密所有网络流量,维护端到端安全性。
在将对象写入驱动器和从驱动器读取对象时,MinIO 使用 带关联数据的认证加密 (AEAD) 来维护数据的机密性和真实性。AEAD 对明文数据进行加密和认证,以生成密文和认证代码。如果未经授权的访问会损坏数据,即使是更改单个位这样的小事情,解密和验证例程也会使用认证代码检测到修改。
MinIO AEAD 加密支持行业标准加密协议,例如 AES-256-GCM 和 ChaCha20-Poly1305,以保护对象数据。组织可以启用自动桶级加密,以便在将对象写入对象存储或从对象存储读取对象时对其进行加密/解密。结合 TLS,AEAD 加密可以维护外部应用程序与 MinIO 之间以及 MinIO 集群内部和之间以及写入驱动器时的数据真实性。
不可变性和防篡改
维护数据真实性的下一步是使用对象锁定、保留、法律保留、治理和合规性的组合来保护保存到 MinIO 的数据免遭删除或修改。对象锁定与版本控制(如下)相结合,以确保 数据不可变性 并完全消除数据篡改的风险。 这些功能不仅仅保护数据完整性,它们共同建立一个审计跟踪,证明数据的真实性。
对象存储保留规则保证对象在定义的时间段内受 WORM 保护。对象存储保留策略 可以设置在单个对象上,也可以通过桶默认设置继承。持续时间以天或年设置,定义对象版本及其关联元数据受到保护免遭删除的时间长度。
此外,对象和桶会受到其他控制的约束,这些控制共同确保数据的真实性。治理模式保护对象不被标准用户删除,并要求使用更高权限更改保留策略或删除对象。合规模式更加严格,确保在保留期内,包括 root 用户在内的任何人都不能删除对象。最后,法律保留使用 WORM 保护无限期地保护对象,并且只能由授权用户删除。
MinIO 的对象存储保留和数据不可变性已获得 Cohasset Associates 的积极评价,特别是在 SEC 规则 17a-4(f)、FINRA 规则 4511 和 CFTC 规则 1.31 方面。规则 17a-4 对电子数据存储有具体的要求,包括记录管理的许多方面,例如经纪自营商记录保留的持续时间、格式、质量、可用性和问责制。
版本控制
对象级版本控制是 MinIO 用于确保数据真实性的最后一个组件。版本控制为对象提供数据保护,因为对象针对 Amazon 的 S3 结构和实现进行独立版本控制。MinIO 在元数据中跟踪版本,为给定对象的每个版本使用唯一的 ID。通过指定版本 ID,应用程序可以访问给定对象的某个时间点的快照。在我之前发布的博客文章中,我解释了 MinIO 如何使用版本控制提供 连续数据保护。
版本控制保留了同一桶中的多个对象变体,并提供了一种机制来保存、读取和恢复 存储在桶中的每个对象的每个版本。这可以防止意外覆盖或删除,同时确保在整个对象生命周期中都维护数据真实性。
MinIO 的 深度版本控制功能 使多个用户和应用程序能够处理数据对象,而不会影响其他用户和应用程序。随着数据的转换、丰富和修改,每个版本都保持完整,并且可以证明真实性。
我们信任数据
依赖数据做出明智决定的组织必须能够信任数据的准确性和及时性。数据真实性和版本控制确保每个数据集都是真实的,并且具有可追溯的来源。MinIO 依赖于多种功能来确保数据团队可以信任他们正在使用的数据以及输入其模型的数据。
下载 MinIO 并开始构建您的对象存储云。它简单直观,软件定义,灵活度高,并且与 S3 API 兼容,因此可以轻松适应您的工作负载。有任何问题?加入我们的 Slack 频道 或给我们发送电子邮件至 hello@min.io。