0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Firestoreへのアクセス(アプリ、フロントエンド、バックエンド)

Last updated at Posted at 2022-08-08

すでに同じような内容の記事もありますが、自分の中で整理したときのメモ。
相変わらず、公式ドキュメントを読んでもわかりづらい。。

■アプリから
・REST APIを使う。OAuthによる制御が必要。API
・Firestoreへのアクセス制限は、Firestoreのセキュリティルールとユーザ認証とをセットで
・ユーザに認証操作をさせたくないケースのときは、Firebaseの匿名認証を使うのが楽

■フロントエンドから
・firebase/firestoreライブラリを使う
・Firestoreへのアクセス制限は、Firestoreのセキュリティルールとユーザ認証とをセットで
・ユーザに認証操作をさせたくないケースのときは、Firebaseの匿名認証を使うのが楽

■バックエンド(Cloud Functionsなど)から
・firebase-adminライブラリ(Admin SDK)を使う
・Firestoreへのアクセス制限はバックエンドがする
・バックエンドへのアクセス制限は、フロントエンドにてユーザ認証で入手したトークンをバックエンドが検証する方法で。サンプルソース
・Firestoreのセキュリティルールは全部拒否(それでもバックエンドはadmin権限なので全アクセス可能)

3.jpg

注意事項としては、Firebaseプロジェクトの情報(api keyなど)は、秘密情報ではなく普通に他人に見れてしまいます。なので、バックエンドなしでデータを守る場合は、Firestoreのセキュリティルールに完全に頼ることになります(参考)。
これが心配な場合は、バックエンドを導入してバックエンドでFirestoreへのアクセス制限をかけつつ、さらにバックエンドへのアクセスについては、フロントエンドとバックエンド間の認証で守ることにしたほうが良さそう(フロントエンドでユーザ認証→トークン取得→バックエンドへトークン渡す→バックエンドでトークン検証。それでも不安なら追加の仕組みを入れる)。

間違っていたら指摘お願いします。。

参考

https://zenn.dev/phi/articles/firebase-auth-be-sign-in-anonymously
https://blog.flatt.tech/entry/firebase_authentication_security

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?