Você pode compartilhar arquivos do Amazon S3 sem nunca tornar o bucket público. Mantenha-o privado, deixe o Block Public Access ativado e dê às pessoas acesso assinado a objetos específicos: uma URL pré-assinada para um arquivo pontual, URLs assinadas do CloudFront quando você já tem uma CDN na frente do bucket, ou um link de compartilhamento que acrescenta senha, data de expiração e limite de downloads. As três opções funcionam do mesmo jeito em provedores compatíveis com S3, como o Cloudflare R2, o DigitalOcean Spaces, o Wasabi e o Backblaze B2 (o CloudFront é exclusivo da AWS).
Opções de compartilhamento seguro no S3 em resumo
| Método | Ideal para | Senha | Limite de downloads | Revogar um link | Pastas inteiras | Código necessário |
|---|---|---|---|---|---|---|
| Objeto ou bucket público | Recursos realmente públicos (um site) | Não | Não | Não | Sim | Não |
| URL pré-assinada | Um arquivo, uma vez, pela CLI ou pelo seu app | Não | Não | Não | Não | CLI ou SDK |
| URL assinada do CloudFront | Apps que já autenticam usuários | Não | Não | Não | Com cookies assinados | Sim |
| Link de compartilhamento do Nubbo | Compartilhamento recorrente com pessoas de fora | Sim | Sim | Sim | Sim, com ZIP | Não |
Por que não simplesmente tornar o arquivo público
O jeito mais rápido de compartilhar um arquivo do S3 é torná-lo público e enviar a URL do objeto. É também o mais arriscado: qualquer coisa pública pode ser obtida por quem encontre ou adivinhe o endereço, sem senha, sem expiração e sem registro de quem a levou. Os buckets públicos esquecidos são uma fonte clássica de vazamentos de dados e expõem tanto os nomes dos arquivos quanto o conteúdo.
A AWS informa que os buckets, pontos de acesso e objetos novos não permitem acesso público por padrão. Além disso, o S3 Block Public Access tem quatro configurações (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy e RestrictPublicBuckets) que se sobrepõem a qualquer política ou ACL que viesse a abrir o bucket mais tarde. Elas podem ser definidas por bucket, por conta ou para toda uma AWS Organization, e o S3 aplica a combinação mais restritiva. A AWS recomenda ativar as quatro no nível da conta, a menos que você realmente hospede conteúdo público, como um site estático.
Mantenha essa chave ligada. Tudo o que vem a seguir funciona com ela ativada.
Opção 1: URLs pré-assinadas
Uma URL pré-assinada é uma URL de objeto com uma assinatura na query string. Ela concede uma operação (normalmente um download) sobre um objeto até expirar, e o S3 verifica a assinatura em cada requisição.
aws s3 presign s3://my-bucket/reports/q3.pdf --expires-in 86400
Essa URL funciona por 24 horas. O padrão da CLI é uma hora e o máximo é de 604.800 segundos (7 dias) quando você assina com chaves de usuário IAM. Se você assinar com credenciais temporárias, como uma função assumida, a URL morre quando essas credenciais expiram.
O que você ganha:
- Nenhuma alteração no bucket nem nas suas políticas.
- Controle preciso: um objeto, um método, uma expiração.
- Funciona em qualquer provedor que suporte pré-assinatura SigV4.
O que você não ganha:
- Sem senha. Quem tiver a URL pode usá-la, quantas vezes quiser, até expirar.
- Sem limite de downloads nem revogação por link. Você só pode matar uma URL antes do tempo revogando as chaves que a assinaram.
- Sem pastas. Você assina objeto por objeto, então compartilhar uma pasta com 300 arquivos significa 300 URLs.
- Nomes à vista. A URL mostra o nome do seu bucket, a chave do objeto e o ID da sua chave de acesso.
Para conhecer o mecanismo a fundo, incluindo uploads, cada parâmetro X-Amz-* e código de SDK, confira as URLs pré-assinadas do S3 explicadas.
Opção 2: URLs assinadas e cookies assinados do CloudFront
Se você já serve o bucket pelo Amazon CloudFront, pode exigir URLs assinadas ou cookies assinados em um comportamento de cache. O bucket continua privado por trás do origin access control (OAC), que a AWS recomenda no lugar do antigo origin access identity: uma política do bucket só deixa a sua distribuição ler os objetos. Você registra chaves públicas em um trusted key group e assina com a chave privada correspondente.
- As URLs assinadas servem para arquivos individuais. Com uma política personalizada, você também pode definir um horário de início e um intervalo de IP, e reutilizar uma política para muitos arquivos com wildcards. Elas podem durar pouco tempo ou anos.
- Os cookies assinados servem para muitos arquivos de uma vez, como todos os segmentos de um vídeo, sem alterar as URLs deles.
É a ferramenta certa quando você tem um app que já autentica usuários e serve conteúdo em grande escala. Para entregar alguns arquivos a pessoas de fora da sua equipe, isso significa configurar uma distribuição, gerenciar chaves e escrever código que assine cada requisição.
Restringir uma política do bucket a um intervalo de IP fixo é outra opção nativa, mas só ajuda quando você conhece as redes de quem recebe, o que raramente acontece com pessoas de fora da sua organização.
Opção 3: links de compartilhamento com o Nubbo
O Nubbo se conecta ao seu bucket e oferece links de compartilhamento com os controles que faltam às URLs pré-assinadas, sem escrever código. Por baixo ele continua usando URLs pré-assinadas: o Nubbo verifica primeiro as regras do link e só depois emite uma URL de curta duração, então os arquivos individuais viajam diretamente do seu bucket para o navegador de quem os recebe.
Passo 1: Conecte o seu bucket
Cadastre-se gratuitamente, confirme o seu email, abra Buckets e clique em Conectar bucket. O assistente pede o seu provedor (Amazon S3, Cloudflare R2, DigitalOcean Spaces, Wasabi, Backblaze B2 ou um endpoint personalizado compatível com S3), a forma de conectar (uma configuração automática com uma chave de acesso total ou uma chave limitada a um bucket), a sua chave e o seu bucket. Ele verifica a chave e o bucket e termina testando o CORS com um upload real a partir do seu navegador. O bucket continua privado e as suas chaves são armazenadas criptografadas com AES-256-GCM. O plano Gratuito inclui 2 conexões.
Passo 2: Escolha o arquivo ou a pasta
Encontre o item no explorador e escolha Compartilhar. Você também pode ir à página Compartilhados, clicar em Novo link e escolher ali o bucket e o arquivo ou a pasta.
Passo 3: Defina a proteção
Os três controles são opcionais e estão disponíveis em todos os planos:
| Controle | Como funciona |
|---|---|
| Senha | De 4 a 50 caracteres. Depois de 10 tentativas erradas, o link fica bloqueado por 15 minutos. |
| Data de expiração | Desativada por padrão: o link fica ativo enquanto o arquivo ou a pasta existir no seu armazenamento. |
| Downloads máximos | Em branco significa ilimitado. Quando o número é atingido, o link deixa de servir o arquivo. |
Passo 4: Crie e envie o link
Clique em Criar link, copie e envie por email, chat ou o que você usar. Quem recebe abre uma página de download limpa e não precisa de conta. Um link de pasta permite navegar pela pasta, baixar arquivos individuais ou levar tudo em um ZIP, que o navegador de quem recebe monta baixando cada arquivo diretamente do seu bucket.
Passo 5: Envie a senha separadamente
Enviar a senha na mesma mensagem que o link anula o objetivo. Se o link tiver senha, Enviar senha por email entrega a senha como um link de visualização única: a senha é mostrada uma vez, o link de visualização expira depois de 24 horas, 3 dias ou 7 dias, e você pode acrescentar uma nota curta. Você recebe uma notificação quando ele é aberto.
Passo 6: Acompanhe e revogue
A página Compartilhados lista cada link com o seu status e o número de downloads. Você pode editar a senha, a expiração ou o limite, desativar um link (ele deixa de emitir novas URLs de download na hora) e reativá-lo mais tarde com o mesmo endereço.
Compartilhar com pessoas específicas em vez de um link
Um link funciona para qualquer pessoa que o tenha. Quando você quer que só pessoas específicas entrem, o recurso Compartilhar com pessoas do Nubbo (nos planos Personal e Pro) envia um arquivo ou uma pasta para endereços de email específicos com permissão de visualização ou de download, uma expiração opcional e um limite de downloads, e registra cada acesso. As pessoas que recebem precisam de uma conta no Nubbo e encontram o item em Compartilhados comigo. O Personal permite 10 pessoas por item e 50 compartilhamentos ativos; o Pro permite 50 e 500.
Os planos pagos também oferecem links criptografados: o navegador cria uma cópia selada do arquivo e a chave viaja apenas no próprio link, então o Nubbo não consegue lê-la.
Qual opção você deve usar?
- Um arquivo, uma vez, e você tem a AWS CLI configurada: uma URL pré-assinada é o caminho mais rápido.
- Um app que já autentica usuários e serve muito conteúdo: URLs ou cookies assinados do CloudFront.
- Compartilhamento recorrente com pessoas de fora da sua equipe, pastas inteiras ou qualquer coisa que precise de senha ou de limite: um link de compartilhamento economiza tempo e erros.
Além de um único link
Dois recursos relacionados cobrem os outros casos comuns. Os Pedidos de arquivos oferecem um link público de upload para que as pessoas possam enviar arquivos para o seu bucket sem ver mais nada lá dentro. As Galerias transformam uma pasta de fotos ou vídeos em uma página navegável com layouts, marca d’água e senha própria. No plano Gratuito você tem 3 de cada e links de compartilhamento ilimitados; o Personal e o Pro eliminam esses limites. Uma nota honesta: as miniaturas são geradas no servidor do Nubbo e armazenadas no seu próprio bucket em .nubbo-thumbs/.
Perguntas frequentes
Como compartilho um arquivo do S3 sem torná-lo público?
Mantenha o bucket privado e entregue acesso assinado: uma URL pré-assinada para um objeto (pela AWS CLI ou por um SDK), uma URL ou um cookie assinado do CloudFront se você já serve o bucket pelo CloudFront, ou um link de compartilhamento de uma ferramenta como o Nubbo, que acrescenta senha, expiração e limite de downloads por cima das URLs pré-assinadas.
O Amazon S3 é seguro para compartilhar arquivos?
Sim, desde que o bucket continue privado. Os buckets novos não permitem acesso público por padrão e o S3 Block Public Access impede que alguém os abra mais tarde. O risco vem de tornar objetos públicos ou de vazar links assinados, que funcionam para qualquer pessoa que os tenha até expirarem.
Os buckets novos do S3 são privados por padrão?
Sim. A AWS informa que os buckets, pontos de acesso e objetos novos não permitem acesso público por padrão, e as quatro configurações do Block Public Access se sobrepõem a qualquer política ou ACL que viesse a abri-los mais tarde.
Quem recebe precisa de uma conta da AWS ou do Nubbo?
Não. Uma URL pré-assinada, uma URL assinada do CloudFront e um link de compartilhamento do Nubbo funcionam em qualquer navegador sem conta. Só Compartilhar com pessoas, que envia um item a pessoas específicas, exige que elas tenham conta no Nubbo.
Quanto tempo pode durar um link compartilhado do S3?
Uma URL pré-assinada dura no máximo 7 dias quando é assinada com chaves de usuário IAM, e menos com credenciais temporárias. As URLs assinadas do CloudFront duram o que a sua política definir. Um link de compartilhamento do Nubbo não expira a menos que você defina uma data, porque ele emite uma URL nova de curta duração a cada download.
Os arquivos passam pelo Nubbo quando alguém baixa um link compartilhado?
Não: o navegador baixa os arquivos individuais diretamente do seu bucket com uma URL pré-assinada. Os downloads ZIP de vários arquivos são montados no navegador, que baixa cada arquivo diretamente do seu bucket: o Nubbo nunca vê o conteúdo.
Fontes
Os preços e limites vêm das páginas oficiais abaixo. Os provedores mudam esses valores, então confirme antes de fechar qualquer compromisso.
- Amazon S3: bloquear o acesso público ao seu armazenamento
- Amazon S3: baixar e enviar objetos com URLs pré-assinadas
- Referência da AWS CLI: s3 presign
- Amazon CloudFront: restringir o acesso a uma origem Amazon S3 (OAC)
- Amazon CloudFront: usar URLs assinadas
- Amazon CloudFront: escolher entre URLs assinadas e cookies assinados