Comprendre les règles de sécurité Firebase pour le stockage cloud

Traditionnellement, la sécurité est l’un des éléments 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 (qui est un utilisateur) et l'autorisation (ce qu'un utilisateur peut faire). L'authentification et l'autorisation sont difficiles à mettre en place, plus difficiles à mettre en œuvre et essentielles au succès de votre produit.

De la même manière que l'authentification Firebase vous permet d'authentifier facilement vos utilisateurs, les règles de sécurité Firebase pour Cloud Storage vous permettent d'autoriser facilement les utilisateurs et de valider les demandes. Les règles de sécurité du stockage cloud gèrent la complexité pour vous en vous permettant de spécifier des autorisations basées sur le chemin. En quelques lignes de code seulement, vous pouvez écrire des règles d'autorisation qui restreignent les requêtes Cloud Storage à un certain utilisateur ou limitent la taille d'un téléchargement.

La base de données Firebase Realtime a une fonctionnalité similaire, appelée règles de sécurité de la base de données Firebase Realtime.

Authentification

Savoir qui sont vos utilisateurs est un élément important de la création d'une application, et l'authentification Firebase fournit une solution d'authentification facile à utiliser, sécurisée et uniquement côté client. Les règles de sécurité Firebase pour Cloud Storage sont liées à l'authentification Firebase pour la sécurité basée sur l'utilisateur. Lorsqu'un utilisateur est authentifié avec l'authentification Firebase, la variable request.auth dans les règles de sécurité Cloud Storage devient un objet qui contient 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 . Cela vous permet de contrôler en toute sécurité l’accès aux données par utilisateur. Vous pouvez en savoir plus dans la section Authentification .

Autorisation

L'identification de votre utilisateur n'est qu'une partie de la sécurité. Une fois que vous savez qui ils sont, vous avez besoin d'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 qui résident sur nos serveurs et de déterminer l'accès aux fichiers de votre application. Par exemple, les règles de sécurité Cloud Storage par défaut nécessitent une authentification Firebase afin d'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.

La validation des données

Les règles de sécurité Firebase pour Cloud Storage peuvent également être utilisées pour la validation des données, notamment pour valider le nom et le chemin du fichier ainsi que les propriétés des métadonnées du 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/.*');
    }
  }
}

Prochaines étapes