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


関連記事

単体のORMライブラリとしてEloquentを使う

1 はじめに2 Eloquentとは3 導入3.1 Composerインストール3.2 Eloquentインストール4 DB接続4.1 illuminate/database4.2 モデルクラス作成4 ...

https-portalで既存のdocker環境をhttps化

1 はじめに2 https-portalとは3 設定ファイル3.1 docker-compose.yml3.2 default.conf4 説明4.1 docker-compose.yml4.2 de ...

【Unity】Raycastを利用して接地判定を行う

1 はじめに2 今回やりたいこと3 色々な接地判定4 Rayとは5 接地判定6 ジャンプのコードを記述7 さいごに8 おすすめ書籍 はじめに こんにちはsuzukiです。久しぶりにunityを触り色々 ...

【Swift】Xcode13XCTestの新機能、繰り返し実行で遊んでみた。

1 はじめに2 XCTestについて3 繰り返しのテストについて4 実際に使ってみる5 テストコードについて6 テストの設定7 さいごに8 おすすめ書籍 はじめに こんにちは、suzukiです。とうと ...

CircleCIを使ってみた(RailsのRSpecとデプロイのサンプル)

1 はじめに2 導入するにあたって3 項目B4 補足4.1 開発環境とCI環境でdatabase.ymlが異なる5 さいごに はじめに 個人的に作成しているアプリケーションのCIツールとして、Circ ...

フォロー

blog-page_side_responsive

2021年2月
 123456
78910111213
14151617181920
21222324252627
28  

アプリ情報

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