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