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 ...

aws

AWSのT3インスタンスの特徴

1 はじめに2 T3インスタンスとは2.1 T3インスタンスのスペック2.2 Unlimited Modeがデフォルトで有効2.3 ハイパーバイザはNitro3 T2インスタンスとの比較3.1 仮想C ...

Bluetooth Low Energy(BLE)とは? Bluetoothの開発が初めての人向け!

1 はじめに2 Bluetoothの規格2.1 Bluetooth Classic2.2 BLE(Bluetooth Low Energy)3 BLEの役割4 サービスとキャラクタリスティック4.1 ...

React+axiosでhttpリクエスト

1 はじめに2 axiosとは2.1 XMLHttpRequest2.2 Promise3 準備4 実装4.1 resultsの中身4.2 エラーハンドリング4.3 カスタムヘッダーの付与5 Reac ...

icon

ドキュメント作成の技術「テクニカルライティング」とは

1 はじめに2 テクニカルライティングとは3 少しでも分かりやすく、簡潔にする3.1 一文一義3.2 長くしすぎない、繋げすぎない3.3 長さの目安は?4 伝わりやすく書く4.1 まず主題を書く4.2 ...

フォロー

blog-page_side_responsive

2021年2月
 123456
78910111213
14151617181920
21222324252627
28  

アプリ情報

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