Tech Server

Firestoreのルール設定とdumpやrestoreが簡単に行えるfsrpl

投稿日:2021年2月8日 更新日:

はじめに

こんにちは、nukkyです。
今回は、実際に使用しているFirestoreの本番用のルール設定の話と、Firestoreのデータのdumpや、restoreを簡単に行える fsrpl を紹介したいと思います。

Firestoreのルール設定

Firestoreのルールとは、データベースへのセキュリティルールを定め、アクセス制御を行うことが出来る機能です。

全て許可

Firestore作成時や開発時などはこちらのルールになっていると思います。

この記述で、Firestoreのデータベースのルートを表しており、その中にルールを記述していきます。

{document=**} のワイルドカード表記によって、このパス以降の全てのドキュメントを対象にルールが適用されます。
ですので、上の記述、match /{document=**} だと全てのドキュメントが対象になっています。
ルールの基本的な書き方は、以下の通りです。

つまり、例の記述である以下のルールだと、

read (get, list)と write (create, update, delete)を常に許可という記述になります。
このように、ドキュメントのパスに対してルールを設定していきます。

本番環境でのルール設定例

例えばログインしているユーザーへの読み書きを許可する場合は、以下のようにします。

request.auth が null でなければログインしているとみなし、read と write の許可を出しています。

ユーザー同士がアクセスしあい、共有化されているドキュメントなら上記でもいいかもしれませんが、ユーザーが自分のデータのみを読み書きしたい場合は以下の様に設定します。

パスの中に{}で囲っている箇所がありますが、これは変数として使用することができます、

この場合、ログインしておりパスの{userId}に当たる箇所がユーザーのuidと一致している場合は読み込み、更新、削除が許可されます。
今まで write で記述していたのを分けたのは二つ目のルールのためです。

初回のアクセス時など、users 以下にドキュメントがない場合に作成許可を出すため、create は ログインしていれば許可としています。

fsrpl

私も大変お世話になっている、Firestoreの運用に便利な fsrpl (Firestore Replication Tool) の使い方を解説していきます。

fsrplとは

公式にも記載されていますが fsrpl はシンプルに以下の3つの機能があります。

  • copy 特定のドキュメントを、別のCollection配下にコピーできる。また、ワイルドカードを利用することでコレクション配下のすべてのドキュメントをコピーできる。
    • さらに、特定のProjectのFirebaseから他のFirebaseへ、特定のドキュメントのデータをコピーできる
  • dump 特定のドキュメントをローカルのJSONファイルとしてバックアップができる。
  • restore ローカルのJSONファイルからドキュメントを復元できる。 firestore emulator へもデータの復元ができるため、テストデータ作成にも利用できる

インストール

今回は homebrew を使ってインストールします。

秘密鍵

fsrpl を使用するにはFirestoreの秘密鍵が必要になります。
サービス アカウント用の秘密鍵ファイルを生成するには、

  1. Firebase コンソールで、[設定] > [サービス アカウント] を開きます。
  2. [新しい秘密鍵の生成] をクリックし、[キーを生成] をクリックして確定します。
  3. キーを含む JSON ファイルを保管します。

取得した秘密鍵は、下記いずれかの方法で指定できます

  • 環境変数 FSRPL_CREDENTIALS に、秘密鍵のPATHを指定する方法
  • CLIのオプション --cred で、秘密鍵のPATHを指定する方法

copy

特定のドキュメントをコピーするために、 copy コマンドを利用します。

FSRPL_CREDENTIALS にPATHを通していない場合は、以下の様に指定します。

また、ワイルドカード * の指定ですべてのドキュメントをコピーできます。

開発環境から、本番環境へコピーする

開発環境と本番環境の秘密鍵があれば、CLIのオプション --dest_cred で、コピー先の秘密鍵のPATHを指定することで環境をまたいでコピーすることが出来ます。

dump

dump することで、ドキュメントからローカルJSONファイルとしてデータをバックアップすることができます。

restore

restore は、dump でバックアップしたJSONファイルを使用してデータを復元することができます。

さいごに

fsrpl はめちゃくちゃ便利なので、使ったことのない方はぜひ使ってみてください。

おすすめ書籍

実践Firestore Firebaseによるサーバーレスシングルページアプリケーション サーバーレス開発プラットフォーム Firebase入門

blog-page_footer_336




blog-page_footer_336




-Tech, Server
-,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

React初心者のRedux解説

1 はじめに2 Reduxとは2.1 そもそもReduxってなに?2.2 Fluxとは2.3 Reduxの3原則2.3.0.1 Single source of truth2.3.0.2 State ...

aws

Amazon EC2を使ってみる

1 はじめに2 事前準備2.1 ルートアカウントのMFAを有効化2.2 個々のIAMユーザの作成(及びグループの作成)2.3 IAMユーザのMFAを有効化2.4 IAMパスワードポリシーの適用3 EC ...

mkcertで簡単にオレオレ証明書を発行する

1 はじめに2 前提3 mkcert3.1 概要3.2 インストール3.3 証明書作成3.4 証明書設置と設定3.5 接続確認4 さいごに5 おすすめ書籍 はじめに ローカルのwebサーバにhttps ...

Go言語

GoフレームワークGinでミドルウェアを使ってログインAPIを実装

1 はじめに2 ログインAPIの作成3 ログインのセッション管理4 ミドルウェア4.1 gin.Default()4.2 Logger4.3 Recovery4.4 sessions5 独自ミドルウェ ...

Sign in with Appleの実装

1 はじめに2 Sign in with Appleとは2.1 iOS レビューガイドライン2.2 つまり3 準備4 実装5 デザイン6 さいごに7 おすすめ書籍 はじめに こんにちは、nukkyです ...

フォロー

blog-page_side_responsive

2021年2月
 123456
78910111213
14151617181920
21222324252627
28  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。