Comprendre les règles de sécurité Firebase pour Cloud Storage

Traditionnellement, la sécurité est l'une des parties les plus complexes du développement d'applications. Dans la plupart des applications, les développeurs doivent créer et exécuter un serveur qui gère l'authentification (l'identité de l'utilisateur) et l'autorisation (ce que l'utilisateur peut faire). L'authentification et l'autorisation sont difficiles à configurer, encore plus difficiles à mettre en place correctement et essentielles à la réussite de votre produit.

Tout comme Firebase Authentication vous permet d'authentifier facilement vos utilisateurs, Firebase Security Rules pour Cloud Storage vous permet d'autoriser facilement les utilisateurs et de valider les requêtes. Cloud Storage Security Rules gère la complexité pour vous en vous permettant de spécifier des autorisations basées sur des chemins d'accès. En quelques lignes de code, vous pouvez écrire des règles d'autorisation qui limitent les requêtes Cloud Storage à un utilisateur spécifique ou limitent la taille d'une importation.

Firebase Realtime Database dispose d'une fonctionnalité similaire, appelée Firebase Realtime Database Security Rules.

Authentification

Connaître vos utilisateurs est un élément important de la création d'une application. Firebase Authentication fournit une solution d'authentification côté client simple à utiliser et sécurisée. Firebase Security Rules pour Cloud Storage est associé à Firebase Authentication pour la sécurité basée sur l'utilisateur. Lorsqu'un utilisateur est authentifié avec Firebase Authentication, la variable request.auth dans Cloud Storage Security Rules devient un objet contenant l'ID unique de l'utilisateur (request.auth.uid) et toutes les autres informations utilisateur dans le jeton (request.auth.token). Lorsque l'utilisateur n'est pas authentifié, request.auth est null. Vous pouvez ainsi contrôler de manière sécurisée l'accès aux données par utilisateur. Pour en savoir plus, consultez la section Authentification.

Autorisation

L'identification de l'utilisateur n'est qu'une partie de la sécurité. Une fois que vous savez qui ils sont, vous devez trouver un moyen de contrôler leur accès aux fichiers dans Cloud Storage.

Cloud Storage vous permet de spécifier des règles d'autorisation par fichier et par chemin d'accès qui se trouvent sur nos serveurs et déterminent l'accès aux fichiers de votre application. Par exemple, le Cloud Storage Security Rules par défaut nécessite Firebase Authentication pour effectuer des opérations read ou write sur tous les fichiers:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

Vous pouvez modifier ces règles en sélectionnant une application Firebase dans la console Firebase et en affichant l'onglet Rules de la section "Stockage".

Validation des données

Firebase Security Rules pour Cloud Storage peut également être utilisé pour la validation des données, y compris pour valider le nom et le chemin d'accès du fichier, ainsi que les propriétés des métadonnées de fichier telles que contentType et size.

service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {
      // Only allow uploads of any image file that's less than 5MB
      allow write: if request.resource.size < 5 * 1024 * 1024
                   && request.resource.contentType.matches('image/.*');
    }
  }
}

Étapes suivantes

  • Commencez à planifier le développement de règles pour vos buckets Cloud Storage.

  • Découvrez comment sécuriser vos données à l'aide de règles de sécurité.