web-dev-qa-db-fra.com

Les règles de sécurité Cloud Firestore autorisent l'écriture uniquement à partir de la fonction Firebase

J'aimerais vraiment pouvoir sécuriser ma base de données firestore en n'autorisant que des fonctions firebase à écrire dans la collection spécifique ... comment procéder En regardant la documentation, je ne trouve rien qui puisse indiquer comment vous pouvez le faire. Par exemple, je cherche quelque chose comme:

service cloud.firestore {
  match /databases/{database}/documents {

    // Match any document in the 'cities' collection
    match /cities/{city} {
      allow read;
      allow write: if <from firebase function>;
    }
  }
}
7
realroo

Les fonctions de cloud pour le code Firebase accèdent généralement à d’autres produits Firebase à l’aide du SDK d’administrateur Firebase. Le SDK d'administration aura un accès complet en lecture et en écriture à Firestore, quelle que soit la manière dont les autorisations sont définies. Vous ne pouvez ni explicitement autoriser ni refuser l'accès au SDK d'administration, ce qui signifie que vous ne pouvez pas non plus explicitement autoriser ou refuser l'accès aux fonctions de cloud.

Si vous voulez simplement que votre back-end lise et écrit une partie de votre base de données mais aucune de vos applications client mobiles, refusez simplement l'accès à tous les clients et laissez le SDK d'administration faire son travail.

service cloud.firestore {
  match /databases/{database}/documents {

    // Match any document in the 'cities' collection
    match /cities/{city} {
      allow read: if false;
      allow write: if false;
    }
  }
}
23
Doug Stevenson

Donc, j'utilise cette règle:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read: if false;
      allow write: if false;
    }
  }
}

C'est basé sur la réponse ci-dessus. Il interdit tout accès depuis n'importe quelle application cliente, à l'exception du SDK d'administration.

1
Yumin Gui