MinIO更多数据选项支持 - The MinIO FTP/SFTP Server
想想文件传输协议 ( FTP) 已经存在了多长时间是很奇怪的。它于 1971 年由麻省理工学院的学生 Abhay Bhushan 首次开发,最初用于在 ARPANET 上的计算机之间传输文件。毋庸置疑,它不断发展 - 具有身份验证、加密和压缩功能。它仍然是一种广泛使用的协议,用于通过 Internet 传输文件,特别是在需要快速可靠地传输大文件或大量文件的情况下。
虽然 S3 API 从根本上来说是优越的,但它缺乏基本的简单性FTP/SFTP和在高度受限环境中运行的能力。因此,MinIO 添加了FTP对SFTPMinIO 服务器的支持。有了这个新功能,用户(或应用程序)认为他们正在与服务器对话FTP,而实际上他们正在与 MinIO 对话。优势应该是显而易见的——将数据移动到 MinIO 变得无缝,从应用程序/用户的角度来看,一切本质上都是相同的——从策略、安全性等。
目前支持的FTP/SFTP操作如下:
MinIO 支持以下FTP/SFTP基于协议的访问和管理数据。
安全文件传输协议 (
SFTP) – 由互联网工程任务组 (IETF) 定义为 SSH 2.0 的扩展版本,允许通过 SSH 传输文件并用于传输层安全 (TLS) 和 VPN 应用程序。基于 SSL/TLS 的文件传输协议 (
FTPS) –FTP通过 TLS 证书进行加密通信。文件传输协议 (
FTP) – 最初由 RFC114 定义,被 RFC765 和 RFC959 取代 未加密的 FTP 通信不推荐这样做
此版本涵盖的内容:
允许访问所有 IAM 凭证,但轮换凭证除外,轮换凭证不允许通过
FTP/SFTP端口登录,如果您使用轮换凭证,则必须使用 S3 API 端口。对存储桶和对象的访问通过与传入登录凭证关联的 IAM 策略进行管理。
允许所有人进行身份验证和访问
内置 IDP 用户及其各自的服务帐户
LDAP/AD 用户及其各自的服务帐户
OpenID/OIDC 服务账户
在版本化的桶上,
FTP/SFTP只对最新的对象进行操作。如果您需要检索旧版本,则必须使用S3 API client诸如mc.您的存储桶当前使用的所有功能将“按原样”运行,无需任何更改
-SSE(服务器端加密)
-Replication(服务器端复制)
从本质上讲,从开发人员/管理员的角度来看,这应该是一个无缝的协议添加。
先决条件和注意事项
此功能从RELEASE.2023-04-20T17-56-55Z.
假设用户已经创建并配置了相关的访问策略。MinIO 建议从基本的“读写”固定策略开始,在最终确定用户需要什么级别的限制之前测试所有操作。
FTP/SFTP访问存储桶和对象不需要“admin:*”操作。它们可能会因限制而被跳过。
重要说明:FTP/SFTP默认情况下未启用。它需要在安装时启用。此外,通过 没有可用的管理功能FTP,这必须通过命令行完成。
用法
在分布式设置中启动 MinIO,并FTP/SFTP启用。
minio server http://server{1...4}/disk{1...4}
--ftp="address=:8021" --ftp="passive-port-range=30000-40000" \
--sftp="address=:8022" --sftp="ssh-private-key=/home/miniouser/.ssh/id_rsa"
...
...以下示例显示了ftp使用minioadmin凭据通过客户端进行连接,并列出了一个名为 的存储桶runner:
ftp localhost -P 8021 Connected to localhost. 220 Welcome to MinIO FTP Server Name (localhost:user): minioadmin 331 User name ok, password required Password: 230 Password ok, continue Remote system type is UNIX. Using binary mode to transfer files. ftp> ls runner/ 229 Entering Extended Passive Mode (|||39155|) 150 Opening ASCII mode data connection for file list drwxrwxrwx 1 nobody nobody 0 Jan 1 00:00 chunkdocs/ drwxrwxrwx 1 nobody nobody 0 Jan 1 00:00 testdir/ ...
以下示例显示如何列出对象并通过ftp客户端将其下载到本地:
ftp> ls runner/chunkdocs/metadata 229 Entering Extended Passive Mode (|||44269|) 150 Opening ASCII mode data connection for file list -rwxrwxrwx 1 nobody nobody 45 Apr 1 06:13 chunkdocs/metadata 226 Closing data connection, sent 75 bytes ftp> get (remote-file) runner/chunkdocs/metadata (local-file) test local: test remote: runner/chunkdocs/metadata 229 Entering Extended Passive Mode (|||37785|) 150 Data transfer starting 45 bytes 45 3.58 KiB/s 226 Closing data connection, sent 45 bytes 45 bytes received in 00:00 (3.55 KiB/s) ...
SFTP 的注意事项
如果服务器上启用了证书,则SFTP可以使用。如果FTP客户端有能力,则可以使用 TLS 来保护传输。这将需要一个额外的私钥标志。
以下示例显示了sftp使用minioadmin凭据通过客户端进行连接,并列出了一个名为 的存储桶runner:
sftp -P 8022 minioadmin@localhost minioadmin@localhost's password: Connected to localhost. sftp> ls runner/ chunkdocs testdir
以下示例显示了如何通过sftp客户端在本地下载对象:
sftp> get runner/chunkdocs/metadata metadata Fetching /runner/chunkdocs/metadata to metadata metadata 100% 226 16.6KB/s 00:00 sftp>
高级选项
更改默认 FTP 端口
默认端口8021可以通过更改
--ftp="address=:3021"
更改 FTP 被动端口范围
默认情况下,FTP操作系统请求自动提供空闲端口,但是您可能希望通过以下方式将此限制为某些受限环境中的特定端口
--ftp="passive-port-range=30000-40000"
更改默认 SFTP 端口
默认端口8022可以通过更改
--sftp="address=:3022"
传输安全协议 (FTP)
SFTP与服务器不同,FTP服务器默认是不安全的。要在 TLS 模式下运行,您需要通过以下方式提供证书
--ftp="tls-private-key=path/to/private.key" --ftp="tls-public-cert=path/to/public.crt"
注意:如果 MinIO 分布式设置已经配置为在 TLS 下运行,FTP将自动使用服务器证书链中的相关证书,这主要是为了简化设置。但是,如果您希望通过FTP服务器的不同域终止 TLS 证书,您可以选择上述命令行选项。
限制
我们之前注意到 Append 和 Rename 不是支持函数。
鉴于 - 版本控制的简单性FTP也是有问题的。不支持版本控制FTP,FTP客户端也不知道它到底是什么——但存储桶通常会有一个对象的多个版本。结果,具有新名称的同一对象将是一个新对象。具有相同名称的相同对象将是一个新版本——但FTP没有这个概念,它需要通过 S3 进行管理。它可以移动数据,但它没有 S3 的复杂性来理解某些概念。
最后,如前所述,没有可用的管理功能FTP。
概括
FTP/SFTP是非常长寿的协议,他们在 50 多岁时继续寻找新的用例和实用程序。我们已经简化了FTP将数据导入 MinIO 和将其导出的操作。
更重要的是,FTP/SFTP功能将与您现有的 MinIO 部署无缝协作——只需升级并为您提供 MinIO 桶,其中包含您之前必须转换到 MinIO 的所有数据。
我们在这里有一个关于这个主题的精彩视频。我们的 GitHub 页面在这里。我们可以在这里为社区提供支持,显然,如果您是商业客户,您可以在 SUBNET 上找到我们 24/7/365。