文件

檔案傳輸協定 (FTP/SFTP)

新版本:Operator: v5.0.7

概述

從 Operator 5.0.7 和 MinIO Server RELEASE.2023-04-20T17-56-55Z 開始,您可以使用 SSH 檔案傳輸協定 (SFTP) 來與 MinIO Operator 租戶部署上的物件互動。

網際網路工程任務組 (IETF) 將 SFTP 定義為 SSH 2.0 的擴充功能。它允許透過 SSH 進行檔案傳輸,以用於 傳輸層安全性 (TLS) 和虛擬私人網路 (VPN) 應用程式。

啟用 SFTP 不會影響其他 MinIO 功能。

支援的命令

啟用後,MinIO 支援以下 SFTP 操作

  • get

  • put

  • ls

  • mkdir

  • rmdir

  • delete

MinIO 不支援 appendrename 操作。

MinIO Operator 僅支援 SFTP 檔案傳輸協定。其他協定(例如 FTP)不支援存取租戶。

注意事項

版本控制

SFTP 用戶端只能對物件的 最新版本 進行操作。具體來說

  • 對於讀取操作,MinIO 只會將所請求物件的最新版本傳回給 SFTP 用戶端。

  • 對於寫入操作,MinIO 會套用正常的版本控制行為,並在指定的命名空間建立新的物件版本。rmrmdir 操作會建立 DeleteMarker 物件。

驗證和存取

SFTP 存取需要與任何其他 S3 用戶端相同的驗證。MinIO 支援以下驗證提供者

STS 憑證無法透過 SFTP 存取儲存桶或物件。

經過驗證的使用者可以根據指派給使用者或父使用者帳戶的 原則 存取儲存桶和物件。

SFTP 通訊協定不需要任何 admin:* 權限。您可能無法使用 SFTP 執行其他 MinIO 管理動作。

先決條件

  • MinIO Operator v5.0.7 或更新版本。

  • 為伺服器啟用 SFTP 連接埠 (8022)。

  • 一個用於 SFTP 命令的連接埠,以及一個連接埠範圍,允許 SFTP 伺服器請求用於資料傳輸。

步驟

  1. 為所需的租戶啟用 SFTP

    • 在 Operator 控制台中,點擊要啟用 SFTP 的租戶。

    • 組態 標籤中,將 SFTP 切換至 已啟用

    • 點擊 儲存

    • 點擊 重新啟動 以重新啟動 MinIO 並套用您的變更。

    使用以下 Kubectl 命令編輯租戶 YAML 組態

    kubectl edit tenants/my-tenant -n my-tenant-ns
    

    my-tenantmy-tenant-ns 替換為所需的租戶和命名空間。

    features: 區段中,將 enableSFTP 的值設定為 true

    spec:
      configuration:
        name: my-tenant-env-configuration
      exposeServices:
        console: true
        minio: true
      features:
        enableSFTP: true
    

    Kubectl 會重新啟動 MinIO 以套用變更。

    您也可以在您的 Helm chartKustomize 組態中設定 enableSFTP,以便為新建立的租戶啟用 SFTP。

  2. 如果需要,請根據您的本地政策設定 SFTP 連接埠的輸入。

  3. 使用您偏好的 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-tenantmy-tenant-ns 替換為所需的租戶和命名空間。

如果啟用 SFTP,則輸出類似如下

enableSFTP: true

使用憑證金鑰檔案透過 SFTP 連線至 MinIO

RELEASE.2024-05-07T06-41-25Z 版本中的新功能。

MinIO 支援 SFTP 上的相互 TLS (mTLS) 基於憑證的驗證,其中伺服器和用戶端都會驗證彼此的真實性。

此類型的驗證需要以下項目

  1. 用於受信任憑證授權單位的公開金鑰檔案

  2. 由受信任憑證授權單位鑄造和簽署的 MinIO 伺服器的公開金鑰檔案

  3. 由受信任憑證授權單位鑄造和簽署的用戶端公開金鑰檔案,用於透過 SFTP 連線,並位於使用者 .ssh 資料夾(或作業系統的等效資料夾)中

金鑰必須包含可使用該金鑰驗證的使用者 主體清單

ssh-keygen -s ~/.ssh/ca_user_key -I miniouser -n miniouser -V +1h -z 1 miniouser1.pub
  • -s 指定用於產生此金鑰的憑證授權單位公開金鑰的路徑。指定的公開金鑰必須具有包含此使用者的 principals 清單。

  • -I 指定公開金鑰的金鑰識別碼。

  • -n 建立此金鑰有效的使用者 principals 清單。您必須包含此金鑰有效的使用者,且該使用者必須與 MinIO 中的使用者名稱相符。

  • -V 限制產生的金鑰有效的時間長度。在此範例中,金鑰有效時間為一小時。請根據您的需求調整時間長度。

  • -z 將序號新增至金鑰,以區分此產生的公開金鑰與由相同憑證授權單位公開金鑰簽署的其他金鑰。

MinIO 需要指定用於簽署 SFTP 存取憑證的憑證授權單位。啟動或重新啟動 MinIO 伺服器,並使用 --sftp="trusted-user-ca-key=PATH" 旗標指定受信任憑證授權單位的公開金鑰路徑

minio server {path-to-server} --sftp="trusted-user-ca-key=/path/to/.ssh/ca_user_key.pub" {...other flags}

使用 SFTP 連線至 MinIO 伺服器時,用戶端會驗證 MinIO 伺服器的憑證。然後,用戶端會將其自己的憑證傳遞至 MinIO 伺服器。MinIO 伺服器會將上述建立的金鑰值與伺服器啟動時提供的憑證授權單位已知公開金鑰進行比較,藉此驗證該金鑰。

一旦 MinIO 伺服器驗證用戶端的憑證後,使用者即可透過 SFTP 連線至 MinIO 伺服器

sftp -P <SFTP port> <server IP>

需要服務帳戶或 LDAP 進行驗證

若要強制使用 LDAP 或服務帳戶認證驗證 SFTP,請在使用者名稱附加後綴。有效的後綴為 =ldap=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 伺服器的位址。