Firebase関数のみが特定のコレクションに書き込むことを許可することにより、firestore dbを保護できるようにしたいのですが、どうすればそれを実行できますか?そこにあるドキュメントを見ると、どうすればそれができるかを示すものは見つかりません。たとえば、私は次のようなものを探しています:
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>;
}
}
}
Cloud Functions for Firebaseコードは通常、Firebase Admin SDKを使用して他のFirebase製品にアクセスします。 Admin SDKは、権限の設定に関係なく、Firestoreへの完全な読み取りおよび書き込みアクセス権を持ちます。 Admin SDKへのアクセスを明示的に許可または拒否することはできません。つまり、Cloud Functionsへのアクセスを明示的に許可または拒否することもできません。
バックエンドでデータベースの一部を読み書きするだけで、モバイルクライアントアプリはまったく使用しないようにするには、すべてのクライアントへのアクセスを完全に拒否し、Admin SDKに機能を任せます。
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;
}
}
}
そこで、このルールを使用します。
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if false;
allow write: if false;
}
}
}
上記の答えに基づいています。 Admin SDKを除くすべてのクライアントアプリからのアクセスを許可しません。