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


関連記事

DockerのQuickstart:Compose and Railsをやってみた

1 はじめに1.1 環境1.2 Docker for Macのインストール2 Railsプロジェクトを作成するまで2.1 Railsのプロジェクトディレクトリの作成2.2 Dockerfileの作成2 ...

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

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

DockerでLAMP環境をつくり、LimeSurveyを動かしてみた

1 はじめに2 Docker関連ファイルの作成2.1 docker-compose.yml2.2 MySQL2.2.1 個人的に詰まったこと2.3 PHP3 Docker起動4 リポジトリを作りました ...

ReactNative環境構築[Android/iOS]

1 はじめに2 準備2.1 HomeBrewをインストール2.2 node.jsのインストール2.3 Watchmanのインストール2.4 React Native CLIのインストール2.5 サンプ ...

aws

MyCoachの本番環境をAWS上に構築する 〜EC2編〜

1 はじめに1.1 関連記事2 MyCoachで利用しているインスタンス3 設定する項目4 キーペアの作成5 セキュリティグループの作成6 インスタンスの作成6.1 Webサーバのインスタンスを作成6 ...

フォロー

blog-page_side_responsive

2021年2月
 123456
78910111213
14151617181920
21222324252627
28  

アプリ情報

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