Entender as regras de segurança do Firebase para o Cloud Storage

Tradicionalmente, a segurança tem sido uma das partes mais complexas do desenvolvimento de apps. Na maioria dos apps, os desenvolvedores precisam criar e executar um servidor que realize a autenticação (quem o usuário é) e a autorização (o que um usuário pode fazer). A autenticação e a autorização são difíceis de configurar, mais difíceis ainda de otimizar e essenciais para o sucesso do seu produto.

Da mesma maneira que o Firebase Authentication facilita a autenticação dos usuários, o Firebase Security Rules para Cloud Storage facilita a autorização de usuários e a validação de solicitações. As Cloud Storage Security Rules gerenciam a complexidade para que você especifique as permissões com base no caminho. Com apenas algumas linhas de código, você escreve regras de autorização que restringem as solicitações do Cloud Storage a um determinado usuário ou limitam o tamanho de um upload.

O Firebase Realtime Database tem um recurso semelhante, chamado Firebase Realtime Database Security Rules

Autenticação

Saber quem são seus usuários é uma parte importante da criação de um app. Com o Firebase Authentication, você tem uma solução fácil de usar, segura e no lado do cliente para autenticação. As Firebase Security Rules para Cloud Storage são vinculadas ao Firebase Authentication para segurança baseada no usuário. Quando um usuário é autenticado com o Firebase Authentication, a variável request.auth em Cloud Storage Security Rules torna-se um objeto que contém o ID exclusivo do usuário (request.auth.uid) e todos os demais informações do usuário no token (request.auth.token). Quando o usuário não está autenticado, request.auth é null. Isso permite que você controle o acesso aos dados de maneira segura para cada usuário. Saiba mais na seção Autenticação.

Autorização

A identificação do usuário é apenas uma parte do processo de segurança. Depois de saber quem são eles, é preciso ter uma maneira de controlar o acesso deles aos arquivos no Cloud Storage.

Com o Cloud Storage, você especifica regras de autorização por arquivo e por caminho que estão nos nossos servidores e determina o acesso aos arquivos no seu app. Por exemplo, as Cloud Storage Security Rules padrão exigem o Firebase Authentication para executar qualquer operação read ou write em todos os arquivos:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

Para editar essas regras, selecione um app do Firebase no console do Firebase e veja a guia Rules da seção do Storage.

Validação de dados

As Firebase Security Rules para Cloud Storage também podem ser usadas para validar dados, incluindo validação do nome e do caminho do arquivo, bem como propriedades de metadados do arquivo, como contentType e size.

service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {
      // Only allow uploads of any image file that's less than 5MB
      allow write: if request.resource.size < 5 * 1024 * 1024
                   && request.resource.contentType.matches('image/.*');
    }
  }
}

Próximas etapas