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 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