文件传输协议(FTP/SFTP)
在 Operator 版本加入: v5.0.7
概述
从Operator 5.0.7和 MinIO Server RELEASE.2023-04-20T17-56-55Z 开始,您可以使用SSH文件传输协议(SFTP)与MinIO Operator Tenant部署上的对象进行交互。
SFTP是由互联网工程任务组(IETF)定义的SSH 2.0的一个扩展。 它允许通过SSH进行文件传输,用于与 :ref:`传输层安全性(TLS) <minio-tls>`和虚拟私人网络(VPN)应用程序一起使用。
启用SFTP不会影响MinIO的其他功能。
支持的命令
启用后,MinIO 支持以下 SFTP 操作:
- get
- put
- ls
- mkdir
- rmdir
- delete
MinIO 不支持 append 或 rename 操作。
MinIO 运营商只支持 SFTP 文件传输协议。 其他协议,如 FTP,不支持访问租户。
考虑因素
版本控制
SFTP 客户端只能对对象的 最新版本 进行操作。 具体来说:
- 对于读取操作,MinIO 只将请求的对象的最新版本返回给 SFTP 客户端。 
- 对于写入操作,MinIO 应用正常的版本控制行为,并在指定的命名空间中创建一个新的对象版本。 - rm和- rmdir操作会创建- DeleteMarker对象。
身份验证和访问
SFTP 访问需要与任何其他 S3 客户端相同的认证。 MinIO 支持以下认证提供者:
- MinIO IDP 用户及其服务账号 
- Active Directory/LDAP 用户及其服务帐户 
- OpenID/OIDC 服务帐户 
- Certificate Key File 
STS 凭据 无法 通过 SFTP 访问存储桶或对象。
已认证的用户可以根据分配给用户或父用户账户的 策略 来访问存储桶和对象。
SFTP 协议不需要任何 admin:* 权限。
使用 SFTP 您可能无法执行其他 MinIO 管理操作。
先决条件
- MinIO Operator v5.0.7 或更高版本。 
- 为服务器启用 SFTP 端口(8022)。 
- 一个用于 SFTP 命令的端口,以及一个端口范围,用于允许 SFTP 服务器请求用于数据传输的端口。 
操作步骤
- 为所需租户启用 SFTP: - 在Operator控制台中,点击您要启用SFTP的租户。 
- 在 配置 标签页中,将 SFTP 切换为 启用。 
- 单击 保存。 
- 点击 重启 以重启 MinIO 并应用您的更改。 
 - 使用以下 kubectl 命令编辑租户的 YAML 配置: - kubectl edit tenants/my-tenant -n my-tenant-ns- 将 - my-tenant和- my-tenant-ns替换为所需的租户和命名空间。- 在 - features:部分,将- enableSFTP的值设置为- true:- spec: configuration: name: my-tenant-env-configuration exposeServices: console: true minio: true features: enableSFTP: true - Kubectl 会重启 MinIO 以应用此更改。 - 您还可以在您的 Helm 图表 或 Kustomize 配置 中设置 enableSFTP,以在新的租户中启用 SFTP。 
- 如果需要,请根据您当地的政策配置 SFTP 端口的入口。 
- 使用您偏好的 SFTP 客户端连接到 MinIO 部署。 您必须作为具有对所需存储桶和对象访问权限的用户进行连接。 - 连接到 MinIO 部署的具体步骤取决于您的 SFTP 客户端。 请参阅您的客户端文档。 
示例
以下示例使用 Linux 系统上的 SFTP CLI 客户端 。
使用 SFTP 连接到 MinIO
以下示例连接到 SFTP 服务器,列出名为 test-bucket 的桶的内容,并下载一个对象。
sftp -P 8022 my-access-key@localhost
my-access-key@localhost's password:
Connected to localhost.
sftp> ls
test-bucket
sftp> ls test-bucket
test-bucket/test-file.txt
sftp> get test-bucket/test-file.txt
Fetching /test-bucket/test-file.txt to test-file.txt
test-file.txt                    100%    6     1.3KB/s   00:00
检查租户是否启用了 SFTP
以下 kubectl get 命令使用 yq 来显示 enableSFTP 的值,指示是否启用了 SFTP:
kubectl get tenants/my-tenant -n my-tenant-ns -o yaml | yq '.spec.features'
将 my-tenant 和 my-tenant-ns 替换为所需的租户和命名空间。
如果启用 SFTP,输出将类似于以下内容:
enableSFTP: true
使用 SFTP 连接 MinIO 服务器时, 客户端验证 MinIO 服务器的证书. 然后,客户端将自己的证书传递给 MinIO 服务器. MinIO 服务器会将上面创建的密钥值与服务器启动时提供的证书颁发机构的已知公钥进行比较,从而验证密钥.
一但 MinIO 服务器验证了客户端的证书, 用户可以通过 SFTP 连接到 MinIO 服务器:
sftp -P <SFTP port> <server IP>
要求使用服务帐户或 LDAP 进行身份验证
强制使用 LDAP 或服务帐户凭据对 SFTP 进行身份验证, 为用户名添加后缀.
有效的后缀是 =ldap or =svc .
> sftp -P 8022 my-ldap-user=ldap@[minio@localhost]:/bucket
> sftp -P 8022 my-ldap-user=svc@[minio@localhost]:/bucket
- 将 - my-ldap-user替换为要使用的用户名.
- 将 - [minio@localhost]替换为 MinIO 服务器的地址.
