SFTP_DOWNLOAD - Baixar Arquivo via SSH File Transfer Protocol
O que é este Node?
O SFTP_DOWNLOAD é o node responsável por baixar arquivos de forma segura de servidor SFTP usando protocolo SSH. Equivalente ao FTP_DOWNLOAD, mas com criptografia garantida.
Por que este Node existe?
Receber dados confidenciais requer proteção durante transferência. O SFTP_DOWNLOAD existe para:
- Proteção de Dados: Download criptografado end-to-end via SSH
- Compliance Regulatório: Atende exigências de segurança (LGPD, HIPAA, PCI-DSS)
- Verificação de Integridade: SSH valida checksum do arquivo automaticamente
- Auditoria: Logs de acesso SSH rastreiam todos os downloads
Como funciona internamente?
Quando o SFTP_DOWNLOAD é executado, o sistema:
- Conecta via SSH: Estabelece túnel criptografado
- Valida Arquivo Remoto: Verifica existência no servidor
- Cria Diretório Local: Prepara destino do arquivo
- Transfere Criptografado: Baixa via canal SSH seguro
- Valida Integridade: Confirma checksum
- Se falhar: Retorna erro detalhado
- Se sucesso: Arquivo baixado e validado
Código interno (sftp-executor.service.ts - não implementado ainda):
private async downloadFile(sftp: SFTP, remotePath: string, localPath: string): Promise<any> {
const localDir = path.dirname(localPath);
if (!fs.existsSync(localDir)) {
fs.mkdirSync(localDir, { recursive: true });
}
await sftp.get(remotePath, localPath);
return {
success: true,
remotePath,
localPath,
size: fs.statSync(localPath).size,
downloadedAt: new Date().toISOString(),
encrypted: true,
protocol: 'sftp'
};
}
Quando você DEVE usar este Node?
Use SFTP_DOWNLOAD sempre que precisar de baixar dados sensíveis com segurança:
Casos de uso
- Extratos Bancários: "Baixar extratos do banco via SFTP criptografado"
- Notas Fiscais: "Download de XMLs de NF-e de servidor contábil via SFTP"
- Dados Médicos: "Baixar resultados de exames em formato DICOM via SFTP"
Quando NÃO usar SFTP_DOWNLOAD
- Servidor FTP-only: Se servidor não tem SSH, use FTP_DOWNLOAD
- Arquivos Públicos: Para downloads públicos, HTTP/API pode ser mais adequado
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| host | string | Sim | Endereço servidor SFTP |
| port | number | Não | Porta SSH (padrão: 22) |
| username | string | Sim | Usuário SSH |
| password | string | Condicional | Senha (ou privateKey) |
| privateKey | string | Condicional | Chave SSH |
| operation | string | Sim | Deve ser "download" |
| remoteFilePathDownload | string | Sim | Arquivo remoto |
| localFilePathDownload | string | Sim | Destino local |
| outputVariable | string | Não | Variável resultado |
Exemplo 1: Download Seguro de Extrato Bancário
Objetivo: Baixar extrato diário do banco via SFTP
JSON para Importar
{
"name": "Download SFTP Extrato",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "sftp_1",
"type": "sftp",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Baixar Extrato",
"parameters": {
"host": "sftp.itau.com.br",
"port": 22,
"username": "empresa_conta",
"password": "SecureP@ss",
"operation": "download",
"remoteFilePathDownload": "/extratos/extrato_2025-01-15.ofx",
"localFilePathDownload": "/tmp/extrato_itau.ofx",
"outputVariable": "extrato_info"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "🔒✅ Extrato baixado com segurança!\nTamanho: {{extrato_info.size}} bytes\nArquivo: {{extrato_info.localPath}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "sftp_1" },
{ "source": "sftp_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: 🔒✅ Extrato baixado com segurança!
Tamanho: 327680 bytes
Arquivo: /tmp/extrato_itau.ofx
Resposta do Node
{
"success": true,
"data": {
"sftp_result": {
"success": true,
"remotePath": "/extratos/extrato_2025-01-15.ofx",
"localPath": "/tmp/extrato_itau.ofx",
"size": 327680,
"downloadedAt": "2025-01-15T09:00:00.000Z",
"encrypted": true,
"protocol": "sftp"
}
}
}
Boas Práticas
✅ SIM:
- Use SFTP para dados financeiros/médicos
- Valide integridade após download
- Apague arquivo remoto após baixar (se aplicável)
❌ NÃO:
- Não use FTP para dados sensíveis
- Não ignore verificação de checksum
Dicas
💡 Dica 1: SFTP garante que arquivo não foi interceptado ou alterado durante download (integridade criptográfica).
💡 Dica 2: Para processar múltiplos arquivos: SFTP_LIST + LOOP + SFTP_DOWNLOAD.
Próximos Nodes
→ SFTP_UPLOAD - Enviar via SFTP → SFTP_LIST - Listar antes de baixar → SFTP_DELETE - Apagar após baixar