Com as regras de segurança do Cloud Firestore, você pode 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 protegem os dados dos usuários, é necessário usar o Firebase Authentication com as regras de segurança do Cloud Firestore.
Versão 2 das regras de segurança
A versão 2 das regras de segurança do Cloud 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ê gravará e gerenciará as regras de segurança do Cloud 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 Cloud Firestore consistem em instruções match
, que identificam documentos no
seu 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 Cloud Firestore para seu banco de dados é avaliada em relação às suas 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,
acesse 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 Cloud 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 Cloud Firestore pelo seu aplicativo para dispositivos móveis, você precisará implantar regras de segurança. É possível implantar regras no Console do Firebase usando a Firebase CLI ou com a API REST de gerenciamento do Cloud Firestore.
As atualizações nas regras de segurança do Cloud 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 em seu projeto, abra a guia Regras na seção do Cloud 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 CLI do Firebase. Assim é possível manter as regras sob o controle de versões 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
Reforçar a segurança do Cloud Storage
Os apps vão se beneficiar dos recursos robustos do Cloud Firestore para bancos de dados e dos recursos de armazenamento e gerenciamento de arquivos do Cloud Storage. Usados juntos, esses produtos também reforçam a segurança do app, já que o Cloud Firestore pode capturar requisitos de autorização que podem ser usados pelas regras de segurança do Firebase em ambos os produtos. Para mais informações, consulte o guia do Cloud Storage.
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.