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, as regras de segurança do Firebase para Cloud Storage simplificam a autorização desses usuários e a validação das solicitações. As regras de segurança do Cloud Storage 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 regras de segurança do Firebase Realtime Database.
Authentication
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 específica no lado do cliente para autenticação, fácil de usar e segura. As regras de segurança do Firebase para Cloud Storage estão vinculadas ao Authentication para definir a segurança baseada no usuário. Quando um usuário é autenticado com o Firebase Authentication, a variável request.auth
nas regras de segurança do Cloud Storage se torna um objeto que contém o ID exclusivo do usuário (request.auth.uid
) e as demais informações do usuário no token (request.auth.token
). Quando o usuário não é 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. Uma vez identificado, é preciso ter uma maneira de controlar o acesso dele aos arquivos no Cloud Storage.
O Cloud Storage permite que você especifique regras de autorização por arquivo e por caminho que estejam nos nossos servidores e determine o acesso aos arquivos no seu app. Por exemplo, as regras de segurança padrão do Cloud Storage 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; } } }
É possível editar essas regras selecionando um app Firebase no Console do Firebase e visualizando a guia Rules
da seção Armazenamento.
Validação de dados
As regras de segurança do Firebase para o 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
Comece a desenvolver regras para seus buckets do Cloud Storage.
Saiba mais sobre como proteger seus dados usando regras de segurança.