Dans les applications classiques, les développeurs doivent créer et gérer de nombreux serveurs qui fonctionnent l'authentification, l'autorisation et la validation des données, ainsi que la logique métier. Les applications qui utilisent Cloud Storage for Firebase utilisent Firebase Authentication et Firebase Security Rules pour Cloud Storage afin de gérer les environnements sans serveur l'authentification, l'autorisation et la validation des données.
L'utilisation de Cloud Storage et Cloud Storage Security Rules vous permet de vous concentrer sur la création d'une expérience utilisateur de qualité, sans avoir à gérer l'infrastructure ni à écrire de code d'authentification et d'autorisation côté serveur complexe.
Présentation
Les Cloud Storage Security Rules permettent de déterminer qui dispose d'un accès en lecture et en écriture à
les fichiers stockés dans Cloud Storage, ainsi que leur structure et leur
quelles métadonnées
elles contiennent. Le type de règle de base est la règle allow
, qui
autorise les opérations read
et write
si une condition facultative spécifiée est
est satisfaite. Voici quelques exemples de règles:
// Rules can optionally specify a condition allow write: if <condition>;
Chemins d'accès des fichiers match
de règles représentant des références Cloud Storage. Règles
peut match
un ou plusieurs chemins de fichier, et plusieurs règles peuvent match
le fichier
chemin d'accès dans un request
donné:
// Rules match specific paths match /images/profilePhoto.png { allow write: if <condition>; } match /images/croppedProfilePhoto.png { allow write: if <other_condition>; }
Le contexte de l'évaluation de la règle est également exposé via request
et
Des objets resource
, qui fournissent des informations telles que le contexte d'authentification
(request.auth
) et la taille de l'objet existant (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; }
Pour en savoir plus sur Cloud Storage Security Rules, consultez le Section Fichiers sécurisés.
Exemples de règles
Cloud Storage Security Rules doit d'abord spécifier le service
(dans notre cas firebase.storage
) et le bucket Cloud Storage (via match /b/{bucket}/o
) par rapport auquel les règles sont évaluées. Les règles par défaut nécessitent Firebase Authentication, mais voici quelques exemples d'autres règles courantes avec un contrôle des accès différent.
Par défaut
// Only authenticated users can read or write to the folder
service firebase.storage {
match /b/{bucket}/o {
match /someFolder/{fileName} {
allow read, write: if request.auth != null;
}
}
}
Public
// Anyone can read or write to the folder, even non-users of your app.
// Because it is shared with App Engine, this will also make
// files uploaded via App Engine public.
service firebase.storage {
match /b/{bucket}/o {
match /someFolder/{fileName} {
allow read, write;
}
}
}
Utilisateur
// Grants a user access to a node matching their user ID
service firebase.storage {
match /b/{bucket}/o {
// Files look like: "user/<UID>/file.txt"
match /user/{userId}/{fileName} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
Privé
// Access to files through Cloud Storage for Firebase is completely disallowed.
// Files may still be accessible through App Engine or Google Cloud Storage APIs.
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if false;
}
}
}
Pendant le développement, vous pouvez utiliser les règles publiques à la place des règles par défaut pour rendre vos fichiers lisibles publiquement et accessibles en écriture. Ceci est très utile pour prototypage, car vous pouvez commencer sans configurer Firebase Authentication. Toutefois, comme Cloud Storage partage un bucket avec le bucket App Engine, cette règle rend aussi toutes les données qu'elle utilise sont également publics.
Les règles utilisateur vous permettent d'attribuer à chacun de vos utilisateurs stockage de fichiers. Vous pouvez également verrouiller entièrement vos fichiers en utilisant mais n'oubliez pas que vos utilisateurs ne peuvent ni lire, ni écrire via Cloud Storage avec ces règles. Utilisateurs accédant aux fichiers depuis votre application App Engine ou le Google Cloud Storage API peut encore y avoir accès.
Modifier les règles
Cloud Storage vous permet de modifier facilement vos Cloud Storage Security Rules
via l'onglet Règles de la section "Stockage" de la console Firebase.
Dans l'onglet Rules (Règles), vous pouvez afficher et modifier rapidement et facilement vos règles actuelles. Pour déployer ces règles, cliquez sur Publier ou enregistrez le fichier.
(ctrl/cmd + s
). Les règles sont immédiatement importées dans Cloud Storage
mais il peut s'écouler jusqu'à cinq minutes avant qu'il soit mis en ligne.
La CLI Firebase permet également de déployer des règles. Si vous sélectionnez
Storage
lors de l'exécution de firebase init
, un fichier storage.rules
avec une copie de
les règles par défaut sont créées
dans le répertoire de votre projet. Vous pouvez déployer ces règles à l'aide du
firebase deploy
. Si votre projet comporte plusieurs buckets,
Utilisez des cibles de déploiement pour déployer des règles sur l'ensemble de vos
à partir du même dossier de projet.
Pour en savoir plus sur le fonctionnement de la sécurité basée sur les fichiers, consultez les Fichiers sécurisés ou à comprendre dans la section Sécurité de l'utilisateur .