Es extraño pensar en cuánto tiempo ha existido el Protocolo de transferencia de archivos ( FTP
). Desarrollado por primera vez en 1971 por Abhay Bhushan, un estudiante del MIT, se utilizó inicialmente para transferir archivos entre computadoras en ARPANET. No hace falta decir que evolucionó, con funciones de autenticación, cifrado y compresión. Sigue siendo un protocolo ampliamente utilizado para transferir archivos a través de Internet, especialmente en los casos en que es necesario transferir archivos grandes o una gran cantidad de archivos de forma rápida y confiable.
Si bien la API de S3 es fundamentalmente superior, carece de la simplicidad básica de FTP/SFTP
y la capacidad de ejecutarse en entornos altamente restringidos. Como resultado, MinIO agregó soporte para FTP
y SFTP
en el servidor MinIO. Con esta nueva funcionalidad, el usuario (o la aplicación) cree que está hablando con un servidor FTP
cuando en realidad está hablando con MinIO. Las ventajas deberían ser evidentes: mover datos a MinIO se vuelve fluido y, desde la perspectiva de la aplicación/usuario, todo es esencialmente igual: desde políticas, seguridad, etc.
Las operaciones FTP/SFTP
admitidas actualmente son las siguientes:
comandos ftp-cliente | soportado |
---|---|
conseguir | Sí |
poner | Sí |
ls | Sí |
mkdir | Sí |
rmdir | Sí |
borrar | Sí |
adjuntar | No |
rebautizar | No |
MinIO admite los siguientes protocolos basados en FTP/SFTP
para acceder y administrar datos.
Protocolo seguro de transferencia de archivos ( SFTP
): definido por el Grupo de trabajo de ingeniería de Internet (IETF) como una versión extendida de SSH 2.0, que permite la transferencia de archivos a través de SSH y para su uso con seguridad de la capa de transporte (TLS) y aplicaciones VPN.
Protocolo de transferencia de archivos sobre SSL/TLS ( FTPS
): comunicación FTP
encriptada a través de certificados TLS.
Protocolo de transferencia de archivos ( FTP
): definido originalmente por RFC114 y reemplazado por RFC765 y RFC959 comunicación FTP sin cifrar
Lo que se cubre en esta versión:
Se permite el acceso a todas las credenciales de IAM, excepto las credenciales rotativas, las credenciales rotativas no pueden iniciar sesión a través de puertos FTP/SFTP
. Debe usar el puerto API de S3 si está usando credenciales rotativas.
El acceso a los depósitos y objetos se rige a través de políticas de IAM asociadas con las credenciales de inicio de sesión entrantes.
Permite la autenticación y el acceso para todos
En depósitos versionados, FTP/SFTP
solo funciona en los objetos más recientes. Si necesita recuperar una versión anterior, debe usar un S3 API client
como mc
.
Todas las funciones utilizadas actualmente por sus cubos funcionarán "tal cual" sin ningún cambio
-SSE (cifrado del lado del servidor)
-Replicación (Replicación del lado del servidor)
Esencialmente, esto debería ser una adición de protocolo perfecta desde la perspectiva del desarrollador/administrador.
Esta funcionalidad está disponible a partir de RELEASE.2023-04-20T17-56-55Z
.
Se supone que los usuarios ya han sido creados y configurados con políticas de acceso relevantes . MinIO recomienda comenzar con una política enlatada básica de "lectura y escritura" para probar todas las operaciones antes de finalizar qué nivel de restricciones se necesitan para un usuario.
No se necesitan operaciones "admin:*" para el acceso FTP/SFTP
a los depósitos y objetos. Se pueden omitir por restricciones.
Nota importante: FTP/SFTP
no está habilitado de forma predeterminada. Debe habilitarse en la configuración. Además, no hay funcionalidad de administración disponible a través de FTP
, esto debe hacerse a través de la línea de comandos.
Inicie MinIO en una configuración distribuida, con FTP/SFTP
habilitado.
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" ... ...
El siguiente ejemplo muestra la conexión a través de un cliente ftp
usando las credenciales minioadmin
y enumera un depósito llamado 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/ ...
El siguiente ejemplo muestra cómo enumerar un objeto y descargarlo localmente a través del cliente 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) ...
Si hay certificados habilitados en el servidor, se puede usar SFTP
. Siempre que el cliente FTP
sea compatible, se puede usar TLS para asegurar la transmisión. Esto requerirá una bandera adicional para la clave privada.
El siguiente ejemplo muestra la conexión a través de un cliente sftp
usando las credenciales minioadmin
y enumera un depósito llamado runner
:
sftp -P 8022 minioadmin@localhost minioadmin@localhost's password: Connected to localhost. sftp> ls runner/ chunkdocs testdir
El siguiente ejemplo muestra cómo descargar un objeto localmente a través del cliente sftp
:
sftp> get runner/chunkdocs/metadata metadata Fetching /runner/chunkdocs/metadata to metadata metadata 100% 226 16.6KB/s 00:00 sftp>
El puerto predeterminado 8021
se puede cambiar a través de
--ftp="address=:3021"
Por defecto, FTP
solicita que el sistema operativo proporcione un puerto libre automáticamente, sin embargo, es posible que desee restringir esto a puertos específicos en ciertos entornos restringidos a través de
--ftp="passive-port-range=30000-40000"
El puerto predeterminado 8022
se puede cambiar a través de
--sftp="address=:3022"
A diferencia del servidor SFTP
, el servidor FTP
es inseguro por defecto. Para operar en modo TLS, debe proporcionar certificados a través de
--ftp="tls-private-key=path/to/private.key" --ftp="tls-public-cert=path/to/public.crt"
NOTA : si la configuración distribuida de MinIO ya está configurada para ejecutarse bajo TLS, FTP
utilizará automáticamente los certificados relevantes de la cadena de certificados del servidor, esto es principalmente para simplificar la configuración. Sin embargo, si desea cancelar los certificados TLS a través de un dominio diferente para sus servidores FTP
, puede elegir las opciones de línea de comando anteriores.
Señalamos anteriormente que Agregar y Renombrar no son funciones de soporte.
Dada la simplicidad de FTP
, el control de versiones también es problemático. FTP
no admite el control de versiones y los clientes FTP
no saben qué es realmente, pero los depósitos generalmente tendrán varias versiones de un objeto. Como resultado, el mismo objeto con un nuevo nombre será un nuevo objeto. El mismo objeto con el mismo nombre será una nueva versión, pero FTP
no tiene concepto de eso, debe administrarse a través de S3. Puede mover los datos, pero no tiene la sofisticación de S3 para comprender ciertos conceptos.
Finalmente, como se señaló, no hay funciones de administración disponibles a través de FTP
.
FTP/SFTP
son protocolos excepcionalmente duraderos y continúan encontrando nuevos casos de uso y utilidad hasta bien entrados los 50 años. Hemos simplificado el uso FTP
para obtener datos en MinIO y sacarlos.
Más importante aún, la funcionalidad FTP/SFTP
funcionará a la perfección con su implementación de MinIO existente: simplemente actualice y vaya alimentando sus cubos de MinIO con todos los datos que tuvo que transformar previamente en MinIO.
Tenemos un gran video sobre el tema aquí . Tenemos nuestra página de GitHub aquí . Estamos disponibles para apoyar a la comunidad aquí y, obviamente, si es un cliente comercial, puede encontrarnos 24/7/365 en SUBNET.
También publicado aquí .