Introdução às regras de segurança
Com as regras de segurança do Firestore, pode concentrar-se na criação de uma excelente experiência do utilizador sem ter de gerir a infraestrutura nem escrever código de autenticação e autorização do lado do servidor.
As regras de segurança oferecem controlo de acesso e validação de dados num formato simples, mas expressivo. Para criar sistemas de acesso baseados em utilizadores e funções que mantenham os dados dos seus utilizadores seguros, tem de usar a autenticação do Firebase com as regras de segurança do Firestore.
Regras de segurança versão 2
Desde maio de 2019, a versão 2 das regras de segurança do Firestore está
disponível. A versão 2 das regras altera o comportamento dos caracteres
universais recursivos {name=**}
. Tem de usar a versão 2 se planear usar consultas de grupos de recolha. Tem de optar pela versão 2, tornando rules_version = '2';
a primeira linha nas suas regras de segurança:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
Regras de escrita
Escreve e gere regras de segurança do Firestore adaptadas ao modelo de dados que cria para a base de dados predefinida e cada base de dados adicional no seu projeto.
Todas as regras de segurança do Firestore consistem em match
declarações, que identificam documentos na sua base de dados, e allow
expressões, que controlam o acesso a esses documentos:
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
Cada pedido de base de dados de uma biblioteca de cliente Web/para dispositivos móveis do Firestore é avaliado em função das suas regras de segurança antes de ler ou escrever dados. Se as regras recusarem o acesso a qualquer um dos caminhos de documentos especificados, todo o pedido falha.
Seguem-se alguns exemplos de conjuntos de regras básicos. Embora estas regras sejam válidas, não são recomendadas para aplicações de produção:
É necessária autorização
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Recusar todas
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Permitir todas
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
O caminho {document=**}
usado nos exemplos acima corresponde a qualquer documento em toda a base de dados. Continue para o guia sobre como estruturar regras de segurança para saber como fazer corresponder caminhos de dados específicos e trabalhar com dados hierárquicos.
Regras de teste
O Firestore oferece um simulador de regras que pode usar para testar o seu conjunto de regras. Pode aceder ao simulador a partir do separador Regras na secção do Firestore da consola do Firebase.
O simulador de regras permite-lhe simular leituras, escritas e eliminações autenticadas e não autenticadas. Quando simula um pedido autenticado, pode criar e pré-visualizar tokens de autenticação de vários fornecedores. Os pedidos simulados são executados com base no conjunto de regras no editor e não no conjunto de regras implementado atualmente.
Implementar regras
Antes de poder começar a usar o Firestore a partir da sua app para dispositivos móveis, tem de implementar regras de segurança. Pode implementar regras na consola do Firebase, através da Firebase CLI ou com a API REST de gestão do Firestore.
As atualizações às regras de segurança do Firestore podem demorar até um minuto a afetar novas consultas e ouvintes. No entanto, a propagação completa das alterações pode demorar até 10 minutos e afetar os ouvintes ativos.
Use a consola do Firebase
Para configurar e implementar o seu primeiro conjunto de regras para a base de dados predefinida no seu projeto, abra o separador Regras na secção do Firestore da consola do Firebase.
Escreva as regras no editor online e, de seguida, clique em Publicar.
Use a Firebase CLI
Também pode implementar regras através da Firebase CLI. A utilização da CLI permite-lhe manter as suas regras sob controlo de versões com o código da aplicação e implementar regras como parte do seu processo de implementação existente.
// Set up Firestore in your project directory, creates a .rules file
firebase init firestore
// Edit the generated .rules file to your desired security rules
// ...
// Deploy rules for all configured databases
firebase deploy --only firestore
Passos seguintes
- Saiba como estruturar regras de segurança.
- Escrever condições de regras de segurança personalizadas.
- Leia a referência das regras de segurança.