O blog da AWS

Use o IP de origem como um fator de autorização para o serviço AWS Transfer for SFTP (AWS SFTP)

Por Omner Barajas, Arquiteto de Soluções especialista em segurança na AWS México

 

O AWS Transfer for SFTP (AWS SFTP) é um serviço da AWS totalmente gerenciado que permite transferir arquivos usando o protocolo Secure File Transfer Protocol (SFTP) a partir de e também para o serviço de armazenamento Amazon Simple Storage Service (Amazon S3). O SFTP é usado em fluxos de troca de dados em vários setores, incluindo serviços financeiros, saúde, varejo entre outros.

Foi lançado recentemente um novo recurso para o serviço AWS Transfer que permite que se utilize o endereço IP do cliente como fator na autorização de acesso a buckets no Amazon S3.

Neste post, mostrarei como implementar o modelo de exemplo fornecido na guia do usuário, para usar o AWS Secrets Manager como um provedor de identidade acessado por uma função Lambda, podemos usar o endereço IP de origem da conexão do cliente com o AWS Transfer para SFTP.

Para referência, já existe uma publicação que indica como configurar a autenticação por usuário e senha usando o AWS Secrets Manager, no entanto, esta versão atualizada do modelo nos permitirá usar novos parâmetros, como SourceIP e protocol para controlar o acesso.

 

Arquitetura básica de serviços

Tomando como base a arquitetura a seguir para usar o AWS Secrets Manager como um provedor de identidade (IdP) com o Amazon API Gateway, podemos descrever o seguinte fluxo:

 

 

  1. O usuário tenta autenticar, fornecendo nome de usuário e senha ou chave privada SSH.
  2. O serviço AWS Transfer for SFTP recebe credenciais e é capaz de determinar o protocolo usado e o IP de origem a partir do qual originou a conexão. Esses valores são enviados para o ponto de acesso do serviço Amazon API Gateway, que está integrado a uma função Lambda.
  3. A função Lambda consulta o provedor de identidade personalizado, que neste caso é nosso segredo armazenado no AWS Secrets Manager.
  4. O AWS Secrets Manager retorna os valores associados ao usuário ou ao segredo que foi consultado, que contém a senha, a função que será usada pelo usuário, o diretório raiz ou o diretório de destino e, agora, o endereço IP.
  5. O acesso é validado quando a função Lambda compara os valores fornecidos pelo usuário com aqueles apresentados pelo AWS Secrets Manager. Aqui é onde podemos usar a senha, chave SSH ou IP de origem para permitir, negar ou limitar o acesso do usuário.

 

Verifique as informações que estamos recebendo

Faça download e implemente o modelo do AWS CloudFormation. Permita a criação do servidor SFTP nas opções de configuração.

 

Após alguns minutos, você deve ter um servidor SFTP com o ponto de acesso do Amazon API Gateway como seu provedor de identidade.

 

 

Vamos tentar acessar o serviço fornecendo uma senha de nome de usuário simulada como teste:

 

 

Agora analisemos os registros no Amazon CloudWatch criados pela função Lambda para validar as informações que estamos recebendo:

 

 

Podemos ver que o parâmetro SourceIP contém o endereço IP do cliente que está tentando se conectar ao serviço e que o parâmetro protocol contém o respectivo protocolo usado pela família AWS Transfer (SFTP, FTP ou FTPS).

Deve-se mencionar que a função Lambda do modelo atual não faz nenhuma validação usando o IP de origem do cliente, no entanto, você pode observar como essa informação é fornecida juntamente com a senha, e integrar algo semelhante com o endereço IP e/ou informações de protocolo, agora que você conhece os campos do evento gerado.

Para esta demonstração, foi necessário adicionar a seguinte linha de código à função Lambda para imprimir as informações recebidas quando a função foi invocada:

imprimir (evento)



Atualize o modelo de exemplo ou diretamente a função Lambda de acordo com suas necessidades.

 

Limpeza do ambiente

Se você tiver terminado de usar os recursos criados pelo modelo de exemplo, exclua-os para evitar cobranças adicionais. Confirme se os arquivos e o bucket no Amazon S3 foram removidos com êxito.

 

Opinião

Estes novos parâmetros permitem agregar uma camada adicional ao modelo de autorização para usuários do AWS Transfer para SFTP, além de fornecer permissões, diretórios ou funções granulares dependendo do protocolo que você usa ou do endereço IP a partir do qual as conexões são originadas, melhorando assim a postura de segurança conforme mencionado por dois dos princípios de design do pilar de segurança do AWS Well Architected Framework:

 

  1. Implementar bases de identidade fortes: Aplique o princípio do menor privilégio e imponha a separação de funções com a autorização apropriada para cada interação com seus recursos na AWS.
  2. Implantar segurança em todas as camadas: Em vez de se concentrar na proteção de uma única camada externa, aplique uma abordagem de defesa profunda com outros controles de segurança.

 

Este artigo foi traduzido do Blog da AWS em Espanhol.

 


Sobre o autor

Omner Barajas é arquiteto de soluções especialista em segurança na AWS México.

 

 

 

 

 

Sobre os revisores

Daniel García é arquiteto de soluções especialista em segurança na AWS Brasil.

 

 

 

 

Darío Goldfarb é arquiteto de soluções especialista em segurança na AWS LATAM.