ファイル転送プロトコル ( FTP
) がどのくらい前から存在しているかを考えると不思議です。 1971 年に MIT の学生である Abhay Bhushan によって初めて開発され、当初は ARPANET 上のコンピュータ間でファイルを転送するために使用されていました。言うまでもなく、認証、暗号化、圧縮機能を備えて進化しました。これは、特に大きなファイルや多数のファイルを迅速かつ確実に転送する必要がある場合に、インターネット上でファイルを転送するために広く使用されているプロトコルです。
S3 API は基本的に優れていますが、 FTP/SFTP
の最低限のシンプルさと、高度に制約された環境で実行する機能が欠けています。その結果、MinIO は MinIO サーバーにFTP
とSFTP
のサポートを追加しました。この新機能により、ユーザー (またはアプリケーション) は、実際には MinIO と通信しているにもかかわらず、 FTP
サーバーと通信していると考えます。利点は明らかです。データを MinIO に移動するのがシームレスになり、アプリケーション/ユーザーの観点からは、ポリシー、セキュリティなど、すべてが本質的に同じになります。
現在サポートされているFTP/SFTP
操作は次のとおりです。
FTP クライアント コマンド | サポートされている |
---|---|
得る | はい |
置く | はい |
ls | はい |
mkdir | はい |
rmdir | はい |
消去 | はい |
追加する | いいえ |
名前を変更する | いいえ |
MinIO は、データにアクセスして管理するために、次のFTP/SFTP
ベースのプロトコルをサポートします。
Secure File Transfer Protocol ( SFTP
) – SSH 2.0 の拡張バージョンとして Internet Engineering Task Force (IETF) によって定義され、SSH 経由でのファイル転送や、Transport Layer Security (TLS) および VPN アプリケーションでの使用を可能にします。
SSL/TLS 上のファイル転送プロトコル ( FTPS
) – TLS 証明書を介した暗号化されたFTP
通信。
ファイル転送プロトコル ( FTP
) – 元々は RFC114 によって定義され、RFC765 および RFC959 の非暗号化 FTP 通信に置き換えられました。
このリリースの内容:
ローテーション認証情報を除くすべての IAM 認証情報へのアクセスが許可されます。ローテーション認証情報はFTP/SFTP
ポート経由でのログインを許可されません。ローテーション認証情報を使用している場合は、S3 API ポートを使用する必要があります。
バケットおよびオブジェクトへのアクセスは、受信したログイン認証情報に関連付けられた IAM ポリシーによって管理されます。
すべてのユーザーに認証とアクセスを許可します
バージョン管理されたバケットでは、 FTP/SFTP
最新のオブジェクトに対してのみ動作します。古いバージョンを取得する必要がある場合は、 mc
などのS3 API client
使用する必要があります。
現在バケットで使用されているすべての機能は、変更を加えることなく「現状のまま」機能します。
-SSE (サーバー側暗号化)
-レプリケーション(サーバー側レプリケーション)
基本的に、これは開発者/管理者の観点からはシームレスなプロトコルの追加である必要があります。
この機能は、 RELEASE.2023-04-20T17-56-55Z
以降で利用可能になります。
ユーザーがすでに作成され、 関連するアクセス ポリシーが設定されていることを前提としています。 MinIO では、ユーザーに必要な制限レベルを最終決定する前に、基本的な「読み取り書き込み」の定型ポリシーから開始してすべての操作をテストすることをお勧めします。
バケットおよびオブジェクトへのFTP/SFTP
アクセスに必要な「admin:*」操作はありません。制限によりスキップされる場合があります。
重要な注意事項: FTP/SFTP
デフォルトでは有効になっていません。セットアップ時に有効にする必要があります。さらに、 FTP
経由で使用できる管理機能はありません。これはコマンド ラインから行う必要があります。
FTP/SFTP
を有効にして、分散セットアップで MinIO を開始します。
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" ... ...
次の例は、 minioadmin
資格情報を使用してftp
クライアント経由で接続し、 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
を使用できます。 FTP
クライアントが対応していれば、TLS を使用して送信を保護できます。これには、秘密キーの追加フラグが必要になります。
次の例は、 minioadmin
資格情報を使用してsftp
クライアント経由で接続し、 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>
デフォルトのポート8021
は次の方法で変更できます。
--ftp="address=:3021"
デフォルトでは、 FTP
OS が空きポートを自動的に提供するように要求しますが、特定の制限された環境では、これを特定のポートに制限することもできます。
--ftp="passive-port-range=30000-40000"
デフォルトのポート8022
は次のように変更できます。
--sftp="address=:3022"
SFTP
サーバーとは異なり、 FTP
サーバーはデフォルトでは安全ではありません。 TLS モードで動作するには、次の方法で証明書を提供する必要があります。
--ftp="tls-private-key=path/to/private.key" --ftp="tls-public-cert=path/to/public.crt"
注: MinIO 分散セットアップがすでに TLS で実行するように構成されている場合、 FTP
サーバー証明書チェーンから関連する証明書を自動的に使用します。これは主にセットアップを簡素化するためです。ただし、 FTP
サーバーの別のドメインを介して TLS 証明書を終了したい場合は、上記のコマンド ライン オプションを選択できます。
先ほど、追加と名前変更はサポート機能ではないことに注意しました。
FTP
のシンプルさを考えると、バージョン管理にも問題があります。 FTP
ではバージョン管理がサポートされていないため、 FTP
クライアントはバージョン管理が実際に何であるかを知りませんが、通常、バケットにはオブジェクトの複数のバージョンが含まれます。その結果、同じオブジェクトに新しい名前が付けられたものが新しいオブジェクトになります。同じ名前の同じオブジェクトは新しいバージョンになります。ただし、 FTP
にはその概念がないため、S3 経由で管理する必要があります。データを移動することはできますが、特定の概念を理解するための S3 のような洗練さはありません。
最後に、前述したように、 FTP
経由で使用できる管理機能はありません。
FTP/SFTP
非常に長命なプロトコルであり、50 代になっても新しい使用例と有用性を発見し続けています。 FTP
使用して MinIO へのデータの取得とデータの取り出しを簡単にできるようにしました。
さらに重要なのは、 FTP/SFTP
機能が既存の MinIO 展開とシームレスに連携することです。アップグレードするだけで、以前に MinIO に変換する必要があったすべてのデータを MinIO バケットに供給することができます。
この件に関する素晴らしいビデオがここにあります。ここにGitHub ページがあります。私たちはここでコミュニティをサポートすることができます。もちろん、商用顧客の場合は、SUBNET で 24 時間 365 日いつでも私たちを見つけることができます。
ここでも公開されています。