Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Possibilidade de liberar arquivos de um bucket, mas restringindo o acesso com usuário e senha

Boa tarde,

Vamos imaginar que eu tenha alguns arquivos em meu Bucket da S3 e precise compartilhar com algum cliente, por exemplo. Uma situação hipotética seria um Bucket de backups.

Quando crio aquela URL pública qualquer um pode acessar os arquivos. Há alguma maneira de limitar o acesso com base em usuário e senha que forneço ao cliente?

Cheguei a achar uns exemplos na internet, mas o bloqueio era baseado em IPs de redes, utilizando um recurso chamado VPC.

Estou iniciando o estudo nos recursos da AWS, então ainda não conheço muito bem tudo que podemos usar. Se puderem dar alguma luz aqui, agradeço.

1 resposta
solução!

Oii, Allisson.

A intuição de proteger o dado é correta, mas o S3 funciona de uma forma um pouco diferente de serviços de armazenamento pessoal (como Google Drive ou Dropbox), onde estamos acostumados a colocar senha em um link.

O S3 não possui, nativamente, um recurso de "pedir usuário e senha" ao clicar em uma URL de objeto. O controle de acesso na AWS é focado em identidades internas ou permissões assinadas.

Para o seu cenário (compartilhar arquivo privado com um cliente externo sem abrir para o público geral), a solução mais indicada é o uso de Presigned URLs (URLs pré-assinadas).

Funciona assim:

  1. O arquivo continua privado no seu bucket.
  2. Você usa suas credenciais (via código ou AWS CLI) para gerar um link especial para aquele arquivo.
  3. Nesse link, você define um tempo de expiração (por exemplo, 2 horas ou 1 dia).
  4. Você envia o link para o cliente.

Quem tiver esse link consegue baixar o arquivo dentro do prazo estipulado. Após o tempo acabar, o link deixa de funcionar. Isso garante a segurança sem que você precise criar um usuário e senha para cada cliente e sem precisar configurar redes (VPC).

A outra alternativa seria criar, de fato, um usuário para seu cliente no serviço de identidades da AWS (o IAM). Porém, isso exigiria que o cliente fizesse login no console da AWS para baixar o arquivo, o que costuma ser trabalhoso e pouco prático para quem não é da área técnica.

Comece pesquisando sobre como gerar essas URLs pré-assinadas, pois resolverá a maioria dos casos de compartilhamento pontual de arquivos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!