Ir para o console

Primeiros passos com as regras de segurança do Cloud Firestore

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 mantenham os dados dos usuários seguros, é 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. Essa versão altera o comportamento dos caracteres curinga recursivos {name=**}. Escolha essa versão se planeja usar consultas do grupo de coleções. Para ativá-la, torne rules_version = '2'; a primeira linha das suas regras de segurança:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

Como escrever regras

Todas as regras de segurança do Cloud Firestore consistem em declaraçõ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.uid != 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. Continue no guia sobre como estruturar regras de segurança para aprender a combinar caminhos de dados específicos e trabalhar com dados hierárquicos.

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 a partir do seu aplicativo para dispositivos móveis, você precisará implantar regras de segurança. É possível implantar regras no Console do Firebase ou usar a Firebase CLI.

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, abra a guia Regras na seção do Cloud Firestore, no Console do Firebase.

Escreva suas regras no editor on-line e clique em Publicar.

Na Firebase CLI

Você também pode implantar regras por meio da Firebase CLI. O uso da CLI permite que você mantenha suas regras sob controle da versão com o código do seu aplicativo e implemente regras como parte do seu processo de implantaçã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 your .rules file
firebase deploy --only firestore:rules

Próximas etapas