Regras de segurança do Firebase

Use nossas regras de segurança flexíveis e extensíveis do Firebase para proteger seus dados no Cloud Firestore, no Firebase Realtime Database e no Cloud Storage.

As regras de segurança do Firebase protegem seus dados contra usuários mal-intencionados. É possível criar regras simples ou complexas que protejam os dados do seu aplicativo com o nível de granularidade necessário.

As regras de segurança do Firebase usam linguagens de configuração flexíveis e extensíveis para definir quais dados do Realtime Database, Firestore e Cloud Storage seus usuários podem acessar. As regras de segurança do Firebase Realtime Database usam JSON nas definições, e as regras de segurança do Firestore e do Cloud Storage utilizam uma linguagem exclusiva desenvolvida para lidar com estruturas de regras mais complexas e específicas.

Aprenda a configurar regras para os produtos específicos do Firebase usados no seu app e confira como o comportamento delas varia nos diferentes produtos do Firebase.

Principais recursos

Flexibilidade Escreva regras personalizadas que façam sentido para a estrutura e o comportamento do seu aplicativo. Elas utilizam linguagens que permitem usar dos seus dados para autorizar o acesso.
Granularidade Suas regras podem ser tão amplas ou tão específicas quanto necessário.
Segurança independente Como as regras são definidas fora do aplicativo (no Console do Firebase ou na Firebase CLI), os clientes não são responsáveis pela aplicação das medidas de segurança, os bugs não comprometem os dados e as informações permanecem protegidas.

Como elas funcionam?

As regras de segurança do Firebase fazem a correspondência de um padrão com os caminhos do banco de dados e, em seguida, aplicam as condições personalizadas para permitir o acesso aos dados nesses caminhos. Todas as regras nos produtos do Firebase têm um componente de correspondência de caminho e uma declaração condicional que permite acesso de leitura ou gravação. É necessário definir regras para cada produto do Firebase usado no aplicativo.

No caso do Cloud Firestore e do Cloud Storage, as regras utilizam a seguinte sintaxe:

service <<name>> {
  // Match the resource path.
  match <<path>> {
    // Allow the request if the following conditions are true.
    allow <<methods>> : if <<condition>>
  }
}

No caso do Realtime Database, as regras baseadas em JSON usam a seguinte sintaxe:

{
  "rules": {
    "<<path>>": {
    // Allow the request if the condition for each method is true.
      ".read": <<condition>>,
      ".write": <<condition>>
    }
  }
}

As regras são aplicadas como instruções OR, não como AND. Dessa forma, se várias regras corresponderem a um caminho e qualquer uma das condições correspondentes conceder acesso, as regras concederão acesso aos dados nesse caminho. Portanto, se uma regra ampla conceder acesso a dados, não será possível restringi-la com uma regra mais específica. No entanto, é possível evitar esse problema. Basta verificar se as regras não se sobrepõem em excesso. A sinalização das regras de segurança do Firebase se sobrepõe a seus caminhos correspondentes como avisos do compilador.

As regras de segurança do Firebase também podem utilizar o Authentication para conceder permissões com base em usuários, e as condições definidas podem ser bem básicas ou incrivelmente complexas. Saiba mais sobre a linguagem e o comportamento das regras antes de começar a criá-las.

Caminho de implementação

Integrar os SDKs do produto Configure o Cloud Firestore, o Cloud Storage ou o Realtime Database para seu app.
Criar as regras de segurança do Firebase Saiba mais sobre como elas funcionam e configure algumas regras básicas.
Testar as regras de segurança do Firebase Use os emuladores do Realtime Database e do Cloud Firestore para testar o comportamento do seu aplicativo e validar as regras antes de implantá-las em produção.
Implantar as regras de segurança do Firebase Use o Console do Firebase ou a Firebase CLI para implantar as regras em produção.

Próximas etapas