Primeiros passos com regras de segurança
Com as regras de segurança do Firestore é possível se concentrar em criar uma boa experiência do usuário, sem se preocupar em gerenciar a infraestrutura ou escrever um código de autenticação e autorização no servidor.
As regras de segurança oferecem controle de acesso e validação de dados em um formato simples, mas expressivo. Para criar sistemas de acesso baseados em usuários e em papéis que mantenham os dados dos usuários seguros, é necessário usar o Firebase Authentication com as regras de segurança do Firestore.
Versão 2 das regras de segurança
A versão 2 das regras de segurança do Firestore está disponível desde
maio de 2019. A versão 2 das regras muda o comportamento dos caracteres curingas recorrentes {name=**}
. Escolha essa versão se pretende
usar consultas do grupo de coleções. Para ativar a versão 2, é preciso tornar rules_version = '2';
a primeira linha nas regras de segurança:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
Como escrever regras
Você vai gravar e gerenciar as regras de segurança do Firestore adaptadas ao modelo de dados criado para o banco de dados padrão e para cada banco de dados adicional no seu projeto.
Todas as regras de segurança do Firestore consistem em instruções match
, que identificam documentos no
banco de dados, e expressões allow
, que controlam o acesso a esses documentos:
service cloud.firestore {
match /databases/{database}/documents {
match /<some_path>/ {
allow read, write: if <some_condition>;
}
}
}
Toda solicitação de uma biblioteca de cliente da Web/para dispositivos móveis do Firestore para o banco de dados é avaliada em relação às as regras de segurança antes de ler ou gravar dados. Se as regras negarem o acesso a qualquer um dos caminhos de documento especificados, toda a solicitação falhará.
Veja abaixo alguns exemplos de conjuntos de regras básicos. Embora essas regras sejam válidas, elas não são recomendadas para aplicativos de produção:
Autenticação obrigatória
// 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;
}
}
}
Negar todos
// 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 todos
// 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 todo
o banco de dados. Para aprender a combinar caminhos de dados específicos e trabalhar com dados hierárquicos, continue consultando o guia sobre Como estruturar regras de segurança.
Como testar regras
O Cloud Firestore fornece um simulador de regras que pode ser usado para testar o conjunto de regras. Para acessá-lo, vá até a guia Regras na seção do Firestore, no Console do Firebase.
Com essa ferramenta, você simula leituras, gravações e exclusões autenticadas e não autenticadas. Ao simular uma solicitação autenticada, é possível criar e visualizar tokens de autenticação de vários fornecedores. As solicitações simuladas são executadas no conjunto de regras do seu editor, e não no conjunto de regras implantando atualmente.
Como implantar regras
Antes de começar a usar o Firestore a partir do seu aplicativo para dispositivos móveis, você precisará implantar regras de segurança. É possível implantar regras no console do Firebase usando a CLI do Firebase ou a API REST de gerenciamento do Firestore.
As atualizações nas regras de segurança do Firestore levam até um minuto para fazer efeito nas novas consultas e listeners. No entanto, pode levar até 10 minutos para que as alterações sejam propagadas totalmente e afetem os listeners ativos.
Usar o Console do Firebase
Para configurar e implantar seu primeiro conjunto de regras, para o banco de dados padrão no projeto, abra a guia Regras na seção do Firestore do console do Firebase.
Escreva suas regras no editor on-line e clique em Publicar.
Usar a CLI do Firebase
Você também pode implantar regras usando a Firebase CLI. Assim, é possível manter as regras sob controle de versão com o código do aplicativo e implementar regras como parte do processo de implantação atual.
// 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
Próximas etapas
- Saiba como estruturar regras de segurança.
- Escreva condições de regras de segurança personalizadas.
- Leia a referência de regras de segurança.