Introdução à Presigned URLs na Cloudflare


Presigned URLs na Cloudflare

As Presigned URLs na Cloudflare são um conceito do S3 que permite o compartilhamento de acesso direto ao seu bucket sem expor seu token secreto.

Essencialmente, um Presigned URL autoriza qualquer pessoa com o URL a executar uma ação no endpoint de compatibilidade S3 para um bucket R2 específico. Por padrão, o endpoint S3 exige um cabeçalho de AUTHORIZATION assinado pelo seu token.

Cada Presigned URL possui parâmetros S3 e parâmetros de pesquisa contendo as informações de assinatura que estariam presentes em um cabeçalho de AUTHORIZATION. A ação realizável é restrita a um recurso específico, uma operação e possui um tempo limite associado.

Existem três tipos de recursos em R2:

  1. Conta (Account): Para operações no nível da conta (como CreateBucket, ListBuckets, DeleteBucket), o identificador é o ID da conta.
  2. Bucket: Para operações no nível do bucket (como ListObjects, PutBucketCors), o identificador é o ID da conta e o nome do bucket.
  3. Objeto (Object): Para operações no nível do objeto (como GetObject, PutObject, CreateMultipartUpload), o identificador é o ID da conta, o nome do bucket e o caminho do objeto.

Observação

Todas as partes do identificador fazem parte do Presigned URL.

Não é possível alterar o recurso sendo acessado após a assinatura da solicitação. Por exemplo, tentar alterar o nome do bucket para acessar o mesmo objeto em um bucket diferente resultará em um código de erro 403 com o código de erro SignatureDoesNotMatch.

O R2 suporta os seguintes métodos HTTP ao gerar uma URL pré-assinada:

  • GET para recuperar um objeto
  • HEAD para obter metadados
  • PUT para enviar um objeto
  • DELETE para excluir um objeto.

Atenção

POST, utilizado para uploads via formulários HTML nativos, não é atualmente suportado.

Referências