Cloud Run (Firebase Functions Gen2) returns Firestore PERMISSION_DENIED despite roles/datastore.user on service account
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
Research direction
Start with the HTTP endpoint's Firebase Admin SDK Firestore write path and the Firebase Functions Gen2/Cloud Run runtime configuration. Verify which service account is used at runtime and compare it with the accounts listed in the issue. Done means the responsible configuration is identified and the write path's expected IAM behavior is documented or reproduced.
Written by the indexing model from the issue text.
Description
I am running a backend for an Android app using Firebase Functions Gen2 (Cloud Run).
The backend exposes an HTTP endpoint and uses the Firebase Admin SDK to write to Firestore.
The endpoint is reachable and processes requests, but every Firestore write fails with:
PERMISSION_DENIED: Missing or insufficient permissions
This happens consistently and results in HTTP 500 responses.
Environment
Firebase Functions Gen2 (running on Cloud Run)
Firebase Admin SDK (Node.js)
Firestore (Native mode)
Android client calling the HTTP endpoint
No client-side Firestore access involved
Expected behavior
Firestore writes via Admin SDK should succeed when the runtime service account has the required IAM role.
Actual behavior
HTTP request reaches the Cloud Run service
Business logic executes
Firestore write fails with PERMISSION_DENIED
Error persists even after redeploying the service
What I have already verified
Firestore security rules are not the cause (Admin SDK is used)
IAM role roles/datastore.user has been granted to:
App Engine default service account
A dedicated custom service account
Service was redeployed after IAM changes
No hardcoded credentials or service account keys are used
Despite this, Firestore access is still denied.
Questions
Which service account is actually used at runtime by Firebase Functions Gen2 / Cloud Run?
Is the Compute Engine default service account used by default unless explicitly overridden?
Is it considered best practice to explicitly set a runtime service account for Cloud Run when using Firestore?
Are there known cases where the Admin SDK still fails with PERMISSION_DENIED due to IAM misconfiguration in Cloud Run Gen2?
Any clarification or guidance would be highly appreciated.
- Dominant language
- TypeScript
- Stars
- 1.7k
- Forks
- 419
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 16
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from firebase/firebase-admin-node
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
firebase/firebase-admin-node#3234 ·
-
firebase/firebase-admin-node#3221 · 3 comments · 1 assignee ·
-
api: messaging
Difficulty 3/5 1-2 days Newbie friendliness 70/100
firebase/firebase-admin-node#3215 ·
-
api: messaging
Difficulty 5/5 Over a week Newbie friendliness 28/100
firebase/firebase-admin-node#3214 ·
-
api: firestore type: feature request
firebase/firebase-admin-node#3183 · 1 comment · 1 assignee ·
All issues in firebase/firebase-admin-node
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
bcgov/bc-wallet-mobile#4761 · 1 comment ·
-
external-issue to-triage
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
area-deployment area-integrations triage:bot-seen
Difficulty 2/5 Half a day Newbie friendliness 86/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
refactor
Difficulty 2/5 1-3 hours Newbie friendliness 84/100