How to modify Firebase firestore security rules for deployment [duplicate] - firebase

This question already has answers here:
Your Cloud Firestore database has insecure: any user can read your entire database
(2 answers)
Basic Firebase Rules [duplicate]
(2 answers)
Closed 10 months ago.
I’m trying to modify my security rules such that I can deploy an app to play store, I tried the following:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**}{
allow read: if true;
allow write: if request.auth != null
}
}
}
But still I received an email that says:
We've detected the following issue(s) with your security rules:
any user can read your entire database
any user can write to your entire database
Any solutions?

Related

Firestore rules don't seem to work with firebase node js API function [duplicate]

This question already has answers here:
Cloud Firestore ignores rules
(1 answer)
Firestore security rules, allowing access from nodejs API
(2 answers)
Closed 6 months ago.
I have a Firebase rule for a collection but it doesn't seem to work. Currently I am disallowing writes to the doc but it doesn't seem to have any effect when I try to update it. The rules fail when the database is interacted via the firebase node js API function.
match /accounts/{accId} {
allow read: if (request.auth != null &&
((resource.data.userId == request.auth.uid) ||
(request.auth.uid == 'e6aaXxP6PsMWvuhCo6oOYqTTL8p2')));
allow write: if false;
}
If you are using the nodejs SDK initialized with a service account, that code will always bypass security rules. Security rules only apply to web and mobile applications using their platform SDKs. They do not apply to any backend SDKs. The assumption is that your code running on a secure backend is fully controlled by you and not subject to abuse.

Firestore - How to give access to subcollection to different user?

i am working on a project in flutter with firebase firestore as a database. It has two users Admin and User. Admin has subcollection food_item . is it possible to access the subcollection food_item from the User.
i heard that altering some security rules will help to get access to that subcollection.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
So if it is possible through changing rules can anyone help me. If not can you provide me other alternative reliable solutions.

How to write security rules in cloud fire store for read if I want my users to read all news and updates from my application without sign in?

My application is a local news application that publishes the news and happenings of my village and nearby surroundings. I want people to read all the news without any authentication and only the app owner or publisher can write the news. So, in this case, I have the following rules:
allow read: if true;
allow write: if request.auth.uid =="My uid"
But when I do this I get this message in my email from Firestore:
Your Cloud Firestore database has insecure rules.
We've detected the following issue(s) with your security rules:
any user can read your entire database
You're not showing the entire rules, but if they look like this:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if true;
allow write: if request.auth.uid =="My uid"
}
}
}
Firestore finds that to be insecure because you are applying universal read access to every single document in the entire database. This can lead to unexpected security problems.
Instead, you should call out individual collections that should have read and write access. Don't use the wildcard /{document=**}.
match /collection-name/{id} {
allow read: if true;
allow write: if request.auth.uid =="My uid"
}
I suggest reading the documentation on security rules thoroughly (not just the first page) to learn how they work.

Allow Read access to one specific collection in Firebase Firestore

On my android app, I am using Firebase Firestore to store a collection of "usernames" to be queried BEFORE the user signs in to check whether the chosen username is available or not.
Currently my project has 2 main collections: "users" and "usernames". I am trying to allow Read access only in the "usernames" collection. My program fails because when I try to query the "usernames" collection before the user is authenticated it says I don't have the right permissions.
My rules are very basic, but I was wondering if it is possible to modify them in some way for my project to work. Rules are as follows:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
A visual idea what the firestore database looks like:
If you want to treat the "usernames" collection differently than everything else, call it out by name, and assign full read access to everyone:
match /usernames/{id} {
allow read: if true;
}
I suggest taking some time to study the documentation on security rules to better understand how they work, an learn how to make rules on your own.

Firebase Allow only the cloud functions access to read and write [duplicate]

This question already has answers here:
Cloud Firestore Security Rules allow write only from Firebase function
(3 answers)
Closed 3 years ago.
For security reasons I would only like the cloud functions to be able to access my Firestore data. Then have my app call my cloud functions for data.
I can't find any docs about locking down your database so that only your cloud functions can access them.
You just have to deny all access as follows
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
As a matter of fact, Cloud Functions run with administrative privilege and therefore they will totally bypass the security rules.

Resources