001.MinIO简介

news/2024/9/19 16:23:54/文章来源:https://www.cnblogs.com/itzgr/p/18375564

MinIO 简介

MinIO 是天然的云原生存储,可以作为轻量级容器运行,由相关编排服务(如 Kubernetes )管理。
整个服务器是一个不到100MB的静态二进制文件,并且在使用CPU和内存资源方面即使在高负载场景也非常高效,因此可以在共享硬件上共同托管大量租户。

MinIO 可以在任何地方和任何云设施上运行,但大多数情况下是在带有本地硬盘( JBOD/JBOF )的商用服务器上运行。
集群中的所有服务器在功能上是相等的(完全对称的体系结构),即无中心节点,所有节点均衡数据,没有node节点或元数据服务器。

MinIO 将数据和元数据作为对象一起写入,从而消除了对元数据数据库的需求。此外, MinIO 将所有功能(擦除码、位校验、加密)作为内联的、严格一致的操作来执行,从而实现 MinIO 高效的弹性。

每个 MinIO 集群是分布式 MinIO 服务器的集合,每个节点有一个进程。
MinIO 作为单个进程运行在用户空间中,并使用轻量级的协同例程实现高并发性。
硬盘驱动器被分组为擦除集,并且使用确定性散列算法将对象放置在这些集上。

MinIO 是为大规模、多数据中心云存储服务而设计的。
每个租户运行自己的 MinIO 集群,与其他租户完全隔离,从而能够保护它们免受升级、更新和安全事件的干扰。
每个租户通过跨地理区域联合集群来独立扩展。

MinIO 特性

MinIO 支持多种特性,主要有:

  • Replication
  • Encryption
  • object Immutability
  • Identity + Access Mgt
  • Information Lifecycle
  • Key Management Server
  • S3 Compatibility
  • Firewall
  • Cache

Replication

在生产环境中,对象存储的主动复制是在重要场景中的重要任务, MinIO 是目前唯一提供该功能的产品。

MinIO 支持同步和近同步复制,具体取决于架构的选择以及数据的变化率,在这些场景中,复制必须尽可能接近严格一致(受限于到带宽因素和变化率)。

MinIO 的数据复制方案创建了双活存储系统,主要用于:

  • 加密或未加密的对象及其关联的元数据(自动写入 object )
  • object 版本
  • 对象标记
  • S3对象锁保留信息

由此可见, MinIO 的数据复制是为大规模恢复而设计的,主要特点包括:

  • 源 bucket 和目标 bucket 具有相同名称的能力,这是应用程序必须在不中断的情况下透明地转移到远程站点的需求。
  • 本机支持跨源和目标的自动对象锁定/保留复制。
  • 近同步复制,以便在 bucket 上发生任何变化后立即更新对象。 MinIO 严格遵循数据中心内部的一致性和数据中心之间的最终一致性来保护数据。
  • 推送复制失败事件的通知功能,应用程序可以订阅这些事件并向操作团队发出警报。

Encryption

MinIO 通过最高级别的加密和广泛的优化提供了更多的功能特性,通常这些优化又消除了与存储加密操作所带来的开销。

MinIO 对存储在磁盘上和通过网络传输的数据进行加密。
MinIO 最先进的加密方案支持使用现代行业标准加密算法(如 AES-256-GCM, ChaCha20-Poly1305, 和 AES-CBC )的粒度对象级加密。
MinIO 与 S3 加密协议完全兼容,并通过包括对非AWS密钥管理服务(如 Hashicorp Vault、Gemalto KeySecure和Google Secrets Manager )的支持来扩展S3。

  • 网络传输加密
    当数据在对象存储和应用程序之间传输时,它可能在多个不守信的网络之间传递。
    在数据通过网络传输时进行加密,可以成功地减轻中间人攻击,并确保数据无论采用哪种路由都保持安全。

    MinIO 支持集群中所有组件之间的 TLS ( Transport Layer Security )v1.2+,这种方法确保在集群间或集群内加密通信中没有弱链路。
    TLS 是一种全链路的加密框架,通常用于https中,也是银行、网站和其他依赖数据存储加密的企业级系统使用的加密协议。

    MinIO 的 TLS 实现在 CPU 指令级别进行了优化,极大的降低了性能开销。
    它只需要为集群中的每个 MinIO 服务器指定 TLS 私钥和公共证书。
    对于 Kubernetes 环境, MinIO Kubernetes Operator 集成(自动)在租户部署过程中生产和分配 TLS 证书。
    MinIO 也支持多个 TLS 证书,每个证书对应一个特定/独立的域名, MinIO 使用服务器名称指示(SNI)来确定为任何给定请求提供哪个证书。

  • object 加密
    存储在磁盘上的数据完全依赖于磁盘的安全性,进而依赖于主机系统来保证数据的安全。
    MinIO 服务器端 object 加密在数据存储到磁盘之前自动加密(静态加密),这种方法保证没有数据未加密就写入了磁盘,这一安全基线确保静态数据的机密性、完整性和真实性。
    MinIO 支持客户端驱动和 object 默认自动加密的两种方式,以实现数据加密的最大灵活性。

    MinIO 服务器端加密兼容Amazon AWS-S3语义(SSE-S3),同时 MinIO 也扩展了对AWS KMS的基线支持,包括 Hashicorp Vault 和 Thales Ciphertrust 等常见企业 KMS 系统。
    MinIO 还支持客户端驱动的加密( SSE-C ),其中应用程序可以指定用于加密对象的数据密钥。
    对于 SSE-S3 和 SSE-C , MinIO 服务器执行所有加密操作,包括密钥轮换和对象的重新加密。

    通过自动服务器端加密, MinIO 使用唯一的密钥对每个 object 进行加密,并使用动态加密密钥和从外部KMS或客户端提供的密钥派生的密钥应用多层附加加密。
    这种安全而复杂的方法在 MinIO 中实现,而不需要同时使用多个独立的内核和用户空间加密实用程序。

    MinIO 使用身份验证加密方案( AEAD )在 object 被写入或从 object 存储中读取时对 object 进行加密/解密。
    MinIO AEAD 加密支持 AES-256-GCM 和 ChaCha20-Poly1305 等行业标准加密协议,以保护对象数据。

    MinIO 的 cpu 级优化(如 SIMD 加速)确保了加密/解密操作的性能开销极大降低,同时可以随时运行自动的 bucket 加密,而不是被迫采用次优的安全选择。

  • MinIO 密钥加密服务
    MinIO 提供了一个内置的密钥加密选项。
    MinIO 的密钥加密服务( )是一个用于高性能应用程序的无状态分布式密钥管理系统。
    通常结合 Kubernetes 进行部署和运行,并向应用程序分发加密密钥。

    KES是 MinIO 服务器端对象加密( SSE-S3 )所需的组件,KES 支持 MinIO 集群上的加密操作,是确保可扩展和高性能加密操作的关键机制。
    KES作为 MinIO 集群和外部 KMS 之间的中介,根据需要生成加密密钥并执行加密操作,并且不受KMS限制的约束。
    因此,存在一个中央KMS保护主密钥,并充当基础设施中的信任源,KES 简化了部署和管理。

001

object Immutability

对于存储而言保护数据免受删除(意外或刻意)非常重要。
MinIO 支持一系列完整的功能,包括 object lock 、 object retention 、 legal holds 、 governance ,和 compliance 。

  • object lock
    可以与 MinIO 版本控制一起使用来确保数据不变性,消除数据篡改或破坏的风险。

  • object retention
    object 保留规则确保对象在一段时间内受到 WORM 保护。
    object 保留策略指定在对象版本上显式设置或通过 bucket 默认设置的保留周期,在 bucket 级别设置的默认所配置适用于随后创建的所有对象,而不会追溯应用于先前创建的对象的版本。

    当使用 bucket 默认设置时,以天或年为单位设置持续时间,以定义存储在 bucket 中的每个 object 版本应该受到保护的时间长度。
    存入 bucket 中的新 object 将继承该 bucket 设置的保护持续时间。

    可以为 object 版本显式地设置保留期,显式保留期为 object 版本指定保留截止日期。
    “保留到日期”设置存储在对象版本的元数据中,保护 object 版本直到保留期到期。
    在保留期到期后, object 版本才可以被删除,除非该 object 版本还存在其他约束。

    显式保留模式设置会覆盖 bucket 默认设置。

    可以通过提交新的锁请求轻松地延长保留期。

    在 retention 框架中,有两种模式用于设置 object 和 bucket 的保留期:
    + Governance Mode
    Governance Mode 用于保护对象不被标准用户删除。但是,有些用户需要保留修改保留周期设置或删除对象所需的权限,这些用户将需要特殊权限,例如 s3:BypassGovernanceRetention 权限和 Delete object 权限。
    + Compliance Mode
    Compliance Mode 的限制更大,在保留期限内不可撤销。因此,Compliance Mode可以确保在 object 的保留期内,任何人(包括root用户)都不能删除对象。

  • Legal Hold
    Legal Hold提供与 object retention 相同的 WORM 保护,但没有截止日期。
    这是一个无限期的保留,只能由授权用户删除。

    对象在具有 object retention 或 legal hold 而定义的策略时继续进行版本控制。
    对 object 的某个版本进行复制操作时,不会将源 bucket 的Legal Hold和 object retention 设置转移到目标 bucket 。

提示:其他更多特性参考: MinIO 特性 。

MinIO 架构

MinIO 的架构:

002

MinIO 结合 Kubernetes

MinIO 与 Kubernetes 集成后,主要能提供如下功能:

  • 存储类与分层
  • 外部负载均衡
  • 加密密钥管理
  • 身份管理
  • 证书管理
  • 监控与告警
  • 日志记录和审计

存储类和分层

在 Kubernetes 上大规模部署 MinIO 的关键要求是跨存储类( NVMe、HDD、公共云)的能力层。

MinIO 支持将老化对象从快速 NVMe 层自动过渡到更具成本效益的 HDD 层,甚至是成本更优的公有云存储层。

分层时, MinIO 在各层之间提供统一的命名空间,跨层的迁移对应用程序是透明的,并由客户策略触发。

MinIO 和 Kubernetes 通过在源头加密对象,安全可靠地实现混合和多云存储,确保客户保留对数据的完全控制。当部署在共有云中时, Kubernetes 可以跨持久性块存储和更实惠的对象存储层有效地管理数据。

外部负载平衡

MinIO 的所有通信都基于HTTP,RESTFUL API,并将支持任何标准的,兼容 Kubernetes 的入口控制器。
从而可以实现支持对接外部的nginx,实现相应的负载均衡。

加密密钥管理

建议使用 HashiCorp 保管库将密钥存储在对象存储系统之外,这是云原生应用程序的最佳实践。

建议在生产环境中的所有 bucket 上默认启用加密, MinIO 使用 AES-256-GCM 或 ChaCha20-Poly1305 加密来保护数据的完整性和机密性,对性能的影响极低。

MinIO 支持所有三种服务器端加密( SSE-KMS , SSE-S3 和 SSE-C )模式。
SSE-S3 和 SSE-KMS 与服务器端的 KMS 集成,而 SSE-C 使用客户端提供的密钥。

MinIO 支持在 KMS 中设置存储 bucket 级默认加密密钥,并支持 AWS S3 语义( SSE-S3 )。
客户端还使用 SSE-KMS 请求标头在 KMS 上指定单独的密钥。

MinIO 依靠外部 KMS 来引导其内部密钥加密服务器( KES 服务),以实现高性能的每对象加密。每个租户在隔离的命名空间中运行自己的 KES 服务器。

身份管理

通过第三方 OpenID Connect/LDAP 兼容多种身份验证(如 Keycloak , Okta/Auth0 , Google , Facebook , ActiveDirectory 和 OpenLDAP ),来管理 Kubernetes 和 MinIO 的单点登录( SSO )。

MinIO 推荐 OpenID Connect 兼容 Keycloak IDP 。

可以使用外部 IDP 集中管理用户/应用程序标识。
MinIO 增强了 IDP,提供了 AWS IAM 风格的用户、组、角色、策略和令牌服务的API。
从而可以实现独立于集群外部的身份认证的对接。

证书管理

TLS 用于加密应用程序和 MinIO 之间的所有流量,包括节点间流量。
TLS 证书可以在各连接的资源之间建立安全的网络通信。

MinIO Operator 自动为 MinIO 租户配置、 provisions 、 manages 和更新证书。
租户在自己的 Kubernetes 命名空间中彼此完全隔离,并具有自己的证书以提高安全性。

监视和警报

MinIO 建议在 Kubernetes 上运行时使用 Prometheus 进行监控和警报。
MinIO 发布所有可监测的与 Prometheus 相关的对象存储指标,从存储 bucket 容量到访问指标。这些指标可以在任何与 Prometheus 兼容的工具或 MinIO 控制台中收集和进行视化展示。

外部监测解决方案会定期抓取 MinIO Prometheus 端点。
MinIO 建议 Grafana 在 MinIO 中监控 Prometheus 指标。
同时可以配置相应的通知基线并设置警报阈值,然后可以通过 Alertmanager 将其路由到通知平台,例如 PagerDuty , Freshservice 甚至 SNMP 。

日志记录和审核

启用 MinIO 审计会为对象存储集群上的每个操作生成日志。
除了审核日志之外, MinIO 还会记录控制台错误,以便进行故障排除。

MinIO 支持将日志输出到 Elastic Stack(或其他第三方)进行分析和告警。
为了简化操作,建议对 Kubernetes 和 MinIO 使用相同的日志记录和审计工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/785988.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转载:国产麒麟v10、UOS系统在线比较两个Word文件的内容差异

调用PageOffice的WordCompare方法,同时在线打开两个Word文档,可以切换显示其中的一个文档,或者显示两个文档的对比结果,即可实现在线的文档内容比较功能。此功能可以应用在以下方面: 文档管理中,比较两个版本Word文档的差别。 在处理文档管理的Web项目中,比较两个版本的…

并发编程[5]_wait和notify

1. wait 和 notify wait() 方法是Object类中的方法,他的作用是让当前线程进入等待状态,而使用notify() 方法可以唤醒。wait(long): void ,参数是毫秒,表示等待毫秒数,直到时间结束或被唤醒; wait(long, int): void ,第一个参数是毫秒,第二个参数是纳秒,如果纳秒在0-99…

【2024-08-23】邬贺铨院士:大模型赋能企业数字化转型

一、AI的演进之路:从生成式AI到通用A1二、大模型的构建与应用:自建与协作开发的行业大模型2.1 自建基础大模型2.2 合作开发行业大模型三、对MaaS及其工具链的探索四、大模型推动云服务创新4.1 大模型时代对算力网络的要求4.2 大模型推动IaaS创新发展4.3 大模型催生AI PaaS创新…

.NET 8 + Vue 3 极简 RABC 权限管理系统

前言 在日常工作中,几乎每家公司都需要一个后台管理系统来处理各种任务。为了帮助大家快速搭建这样一个系统,给大家介绍一个基于最新技术 .NET 8 和前端框架 Vue 3 实现的极简 RABC(基于角色的访问控制)权限管理系统。 该系统后端采用经过精心精简的 ABP框架,前端则使用了…

ToDesk支持多系统互控,使用教程来了!

能多系统跨设备进行远控的软件被我找到了! 就是ToDesk远程控制👍官网就能免费下载使用 遇到公司电脑window系统,但家里笔记本手机是苹果再也不会束手无策了! 电脑手机平板都能互相远程控制,一个账号可登录多个设备 传输文件速度高达12m/s,画质高清还能匹配网速流畅度进行…

初识 Flutter

一、Flutter 简介 Flutter 是 Google 推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart 语言开发 App,一套代码同时运行在 iOS 和 Android平台。 Flutter 提供了丰富的组件、接口,开发者可以很快地为 Flutter 添加 Native(即原生开发,指基于…

Windows11下安装Docker

一、准备工作 先下载以下资源,暂时不要安装: Docker安装包 Wsl2安装包 二、开始安装 1.打开主板BIOS的虚拟化选项,可以在任务管理器中确实是否已经打开2.勾上虚拟机平台所有选项(建议完成这一步骤重启)3.用管理员身份打开PowerShell,执行下面命令启动wsl dism.exe /onlin…

振弦式应变计 可同步测量温度,监测混凝土结构的应力与应变

振弦式应变计 可同步测量温度,监测混凝土结构的应力与应变振弦式应变计广泛适用于长期埋设在水工建筑物或其他混凝土结构物内部,如梁、柱、桩基、挡土墙、衬砌、墩以及基岩等,用于测量埋设点的线性变形(应变)和应力,同时也可兼测埋设点的温度。GEO SFxxxx系列振弦式应变计…

iPhone 16 即将推出,,这将是苹果最大的升级, 这里有 7 个你不敢相信 的功能

iPhone 16 即将推出,,这将是苹果最大的升级, iphone16有哪些新功能呢?iPhone16值得买么?这里有 7 个你不敢相信 的功能,让我们先睹为快。iphone16有哪些新功能 1. 您现在可以链接两部 iPhone 以在 iOS 18 中发送现金 2.新的AI智能计算器 3.用眼睛控制你的iPhone 4. 阻止使…

苹果电脑如何远程控制?ToDesk三步操作就成功!

随着电子设备深入我们的日常生活,远程控制也成为了人们电脑手机中的常备软件,无论是为了工作、学习还是生活便利,远程控制软件能让我们跨越空间实现不同设备之间的远控连接。目前市面上有众多国内外远控软件,但小社长最常用的还属ToDesk远程控制。它的操作界面简单还易上手…

一个开源完全免费的无损视频或音频的剪切/裁剪/分割/截取和视频合并工具

大家好,今天给大家分享一款致力于成为顶尖跨平台FFmpeg图形用户界面应用的软件工具LosslessCut。LosslessCut是一款致力于成为顶尖跨平台FFmpeg图形用户界面应用的软件工具,专为实现对视频、音频、字幕以及其他相关媒体资产的超高速无损编辑而精心打造。 项目介绍 LosslessCu…

python socket编辑示例 tcp

服务端代码:from socket import socket, AF_INET, SOCK_STREAM# 1. 创建socket对象 AF_INET:用于internet之间的进程通信,SOCK_STREAM:表示TCP协议 server_socket = socket(AF_INET, SOCK_STREAM)# 2. 绑定ip和端口号 ip = 127.0.0.1 port = 8888 server_socket.bind((ip…