É estranho pensar há quanto tempo o File Transfer Protocol ( FTP
) existe. Desenvolvido pela primeira vez em 1971 por Abhay Bhushan, um estudante do MIT, foi inicialmente usado para transferir arquivos entre computadores na ARPANET. Desnecessário dizer que evoluiu - com recursos de autenticação, criptografia e compactação. Ele continua sendo um protocolo amplamente utilizado para transferência de arquivos pela Internet, principalmente nos casos em que arquivos grandes ou grandes quantidades de arquivos precisam ser transferidos de forma rápida e confiável.
Embora a API do S3 seja fundamentalmente superior, ela carece da simplicidade básica do FTP/SFTP
e da capacidade de execução em ambientes altamente restritos. Como resultado, o MinIO adicionou suporte para FTP
e SFTP
no MinIO Server. Com esta nova funcionalidade, o usuário (ou aplicação) pensa que está falando com um servidor FTP
quando na verdade está falando com o MinIO. As vantagens devem ser aparentes - torna-se fácil mover dados para o MinIO e, da perspectiva do aplicativo/usuário, tudo é essencialmente o mesmo - desde políticas, segurança, etc.
As operações FTP/SFTP
suportadas atualmente são as seguintes:
comandos do cliente ftp | suportado |
---|---|
pegar | sim |
colocar | sim |
ls | sim |
mkdir | sim |
rmdir | sim |
excluir | sim |
acrescentar | não |
renomear | não |
O MinIO suporta os seguintes protocolos baseados em FTP/SFTP
para acessar e gerenciar dados.
Secure File Transfer Protocol ( SFTP
) – Definido pela Internet Engineering Task Force (IETF) como uma versão estendida do SSH 2.0, permitindo a transferência de arquivos por SSH e para uso com aplicações de Transport Layer Security (TLS) e VPN.
Protocolo de transferência de arquivos sobre SSL/TLS ( FTPS
) – Comunicação FTP
criptografada por meio de certificados TLS.
File Transfer Protocol ( FTP
) - Definido originalmente por RFC114 e substituído por RFC765 e RFC959 comunicação FTP não criptografada
O que é abordado neste lançamento:
Todas as credenciais do IAM têm acesso permitido, excluindo as credenciais rotativas, as credenciais rotativas não têm permissão para fazer login por meio de portas FTP/SFTP
. Você deve usar a porta da API S3 se estiver usando credenciais rotativas.
O acesso ao(s) bucket(s) e objeto(s) é controlado por meio de políticas IAM associadas às credenciais de login recebidas.
Permite autenticação e acesso para todos
Em buckets com versão, FTP/SFTP
opera apenas nos objetos mais recentes. Se precisar recuperar uma versão mais antiga, você deve usar um S3 API client
, como mc
.
Todos os recursos atualmente usados por seus baldes funcionarão "como estão" sem nenhuma alteração
-SSE (criptografia do lado do servidor)
-Replicação (replicação do lado do servidor)
Essencialmente, isso deve ser uma adição de protocolo perfeita da perspectiva do desenvolvedor/administrador.
Essa funcionalidade está disponível a partir de RELEASE.2023-04-20T17-56-55Z
.
Presume-se que os usuários já tenham sido criados e configurados com políticas de acesso relevantes . MinIO recomenda começar com uma política enlatada básica de "leitura" para testar todas as operações antes de finalizar qual nível de restrições é necessário para um usuário.
Não há operações "admin:*" necessárias para acesso FTP/SFTP
ao(s) bucket(s) e objeto(s). Eles podem ser ignorados por causa das restrições.
Observação importante: FTP/SFTP
não está ativado por padrão. Ele precisa ser ativado na configuração. Além disso, não há funcionalidade de administração disponível via FTP
, isso deve ser feito por meio da linha de comando.
Inicie o MinIO em uma configuração distribuída, com FTP/SFTP
ativado.
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" ... ...
O exemplo a seguir mostra a conexão via cliente ftp
usando credenciais minioadmin
e lista um bucket chamado 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/ ...
O exemplo a seguir mostra como listar um objeto e baixá-lo localmente via 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) ...
Se houver certificados ativados no servidor, SFTP
poderá ser usado. Desde que o cliente FTP
seja capaz, o TLS pode ser usado para proteger a transmissão. Isso exigirá um sinalizador adicional para a chave privada.
O exemplo a seguir mostra a conexão via cliente sftp
usando credenciais minioadmin
e lista um bucket chamado runner
:
sftp -P 8022 minioadmin@localhost minioadmin@localhost's password: Connected to localhost. sftp> ls runner/ chunkdocs testdir
O exemplo a seguir mostra como baixar um objeto localmente via cliente sftp
:
sftp> get runner/chunkdocs/metadata metadata Fetching /runner/chunkdocs/metadata to metadata metadata 100% 226 16.6KB/s 00:00 sftp>
A porta padrão 8021
pode ser alterada via
--ftp="address=:3021"
Por padrão, FTP
solicita que o sistema operacional forneça uma porta livre automaticamente, no entanto, você pode restringir isso a portas específicas em determinados ambientes restritos por meio de
--ftp="passive-port-range=30000-40000"
A porta padrão 8022
pode ser alterada via
--sftp="address=:3022"
Ao contrário do servidor SFTP
, o servidor FTP
é inseguro por padrão. Para operar no modo TLS, você precisa fornecer certificados via
--ftp="tls-private-key=path/to/private.key" --ftp="tls-public-cert=path/to/public.crt"
NOTA : se a configuração distribuída do MinIO já estiver configurada para executar em TLS, FTP
usará automaticamente os certificados relevantes da cadeia de certificados do servidor, principalmente para adicionar simplicidade de configuração. No entanto, se você deseja encerrar os certificados TLS por meio de um domínio diferente para seus servidores FTP
, pode escolher as opções de linha de comando acima.
Observamos anteriormente que Append e Rename não são funções de suporte.
Dada a simplicidade do FTP
- o controle de versão também é problemático. O controle de versão não é suportado pelo FTP
e os clientes FTP
não sabem o que realmente é - mas os baldes geralmente têm várias versões de um objeto. Como resultado, o mesmo objeto com um novo nome será um novo objeto. O mesmo objeto com o mesmo nome será uma nova versão - mas FTP
não tem noção disso, precisa ser gerenciado via S3. Ele pode mover os dados, mas não tem a sofisticação do S3 para entender certos conceitos.
Por fim, conforme observado, não há funções administrativas disponíveis no FTP
.
FTP/SFTP
são protocolos de vida excepcionalmente longa e eles continuam a encontrar novos casos de uso e utilidade bem em seus 50 anos. Simplificamos o uso FTP
para obter dados no MinIO e retirá-los.
Mais importante ainda, a funcionalidade FTP/SFTP
funcionará perfeitamente com sua implantação MinIO existente - basta atualizar e alimentar seus baldes MinIO com todos os dados que você tinha que transformar anteriormente em MinIO.
Temos um ótimo vídeo sobre o assunto aqui . Temos nossa página GitHub aqui . Estamos disponíveis para apoiar a comunidade aqui e, obviamente, se você é um cliente comercial, pode nos encontrar 24/7/365 na SUBNET.
Publicado também aqui .