Primeiros passos com as Storage Security Rules

Em aplicativos típicos, os desenvolvedores precisam criar e manter muitos servidores que executam autenticação, autorização e validação de dados, além da lógica de negócios do desenvolvedor. Os aplicativos que usam o Cloud Storage processam a autenticação, a autorização e a validação de dados sem servidor com o Firebase Authentication e as regras de segurança do Firebase para Cloud Storage.

Usar o Cloud Storage e as as regras de segurança do Storage significa que você pode se dedicar à criação de uma experiência excelente do usuário, sem ter de gerenciar a infraestrutura ou escrever código complexo de autenticação e de autorização de servidor.

Visão geral

As regras de segurança do Storage são usadas para determinar quem tem acesso para leitura e gravação de arquivos armazenados no Cloud Storage, como os arquivos são estruturados e quais metadados eles contêm. O tipo básico de regra é a regra allow que permite operações read e write se uma condição especificada opcionalmente for atendida. Veja alguns exemplos de regras:

// Rules can optionally specify a condition
allow write: if <condition>;

As regras correspondem (match) aos caminhos de arquivos que representam as referências do Cloud Storage. As regras podem corresponder (match) a um ou mais caminhos de arquivo, e mais de uma regra pode corresponder (match) ao caminho de arquivo em determinada solicitação (request):

// Rules match specific paths
match /images/profilePhoto.png {
  allow write: if <condition>;
}

match /images/croppedProfilePhoto.png {
  allow write: if <other_condition>;
}

O contexto da avaliação da regra também é exposto por meio dos objetos request e resource, que incluem informações como o contexto de autenticação (request.auth) e o tamanho do objeto existente (resource.size).

// Rules can specify conditions that consider the request context
match /images/profilePhoto.png {
  allow write: if request.auth != null && request.resource.size < 5 * 1024 * 1024;
}

Saiba mais sobre as regras de segurança do Storage na seção Proteger arquivos.

Exemplos de regras

As regras de segurança do Storage precisam primeiro especificar o service (neste caso, firebase.storage) e o intervalo do Cloud Storage (via match /b/{bucket}/o) com os quais as regras são comparadas. As regras padrão exigem o Firebase Authentication, mas estes são alguns exemplos de outras regras comuns com controle de acesso diferente.

Padrão

// Only authenticated users can read or write to the bucket
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

Público

// Anyone can read or write to the bucket, even non-users of your app.
// Because it is shared with Google App Engine, this will also make
// files uploaded via GAE public.
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

Usuário

// Grants a user access to a node matching their user ID
service firebase.storage {
  match /b/{bucket}/o {
    // Files look like: "user/<UID>/path/to/file.txt"
    match /user/{userId}/{allPaths=**} {
      allow read, write: if request.auth.uid == userId;
    }
  }
}

Privado

// Access to files through Firebase Storage is completely disallowed.
// Files may still be accessible through Google App Engine or GCS APIs.
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}

Durante o desenvolvimento, você pode usar as regras públicas no lugar das padrão para definir seus arquivos que podem ser lidos ou gravados publicamente. Isso é muito útil para a prototipagem, pois você pode começar sem configurar o Firebase Authentication. No entanto, como o Cloud Storage compartilha um intervalo com seu aplicativo padrão do Google App Engine, essa regra também torna públicos todos os dados usados por esse aplicativo.

Com as regras de usuário, você dá a cada um dos seus usuários autenticados o próprio armazenamento de arquivos pessoais deles. Também é possível bloquear seus arquivos totalmente usando as regras privadas, mas esteja ciente de que seus usuários não poderão ler nem gravar nada por meio do Cloud Storage com essas regras. Os usuários que acessam arquivos por meio do aplicativo do Google App Engine ou das APIs do GCS ainda podem ter acesso.

Editar regras

O Cloud Storage oferece uma maneira fácil de editar as regras de segurança do Storage por meio da guia Regras, na seção "Storage" do Console do Firebase. Na guia Regras, você visualiza e edita suas regras atuais fácil e rapidamente. As regras são implantadas quando você clica em Publicar ou salva o arquivo (ctrl/cmd + s). As regras são enviadas imediatamente para os servidores do Cloud Storage, mas pode levar até cinco minutos para que estejam ativas.

A Firebase CLI também pode ser usada para implantar regras. Se você selecionar "Storage" ao executar firebase init, será criado um arquivo storage.rules com uma cópia das regras padrão no diretório do seu projeto. Você pode implantar essas regras com o comando firebase deploy. Se você tiver vários intervalos no seu projeto, poderá usar os destinos de implantação para implantar regras em todos os intervalos de uma só vez a partir da mesma pasta do projeto.

Saiba mais sobre como funciona a segurança com base em arquivos na seção Proteger arquivos ou conheça a segurança baseada em usuários na seção Segurança do usuário.

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.