この記事は Sam Horlbeck Olsen、ソフトウェア エンジニアによる The Firebase Blog の記事 "Announcing the Firestore Security Rules Simulator!" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

私たちは、悪意のあるクライアントや操作ミスからデータベースを保護することが重要であることを承知しています。Cloud Firestore のセキュリティ ルールを使うと、簡単なマッチング構文やロジックを記述するだけで、とても強力なアクセス制御システムを構築することができます。

しかし今までは、そのルールをテストするのは容易ではありませんでした。デプロイ前にルールをテストすることはできず、ルールに対して自由にテストを行う(期待どおりに動作することを確認する)ことも簡単ではありませんでした。

本日は、Cloud Firestore データベースをさらに簡単に保護するための大きな第一歩として、ルール シミュレータがリリースされたことをお知らせします。

ルール シミュレータ

Firebase コンソールの新しいルール シミュレータを使うと、デプロイする前に、ルールを記述しながらテストを行うことができます!


シミュレータでは、Cloud Firestore データベースの任意の部分に対して、ドキュメントの読み取り、書き込み、削除をテストできます。さらに、特定のユーザー ID でログインした状態をシミュレーションできるので、ユーザーベースのアクセス制御のテストもしやすくなります。また、より高度な認証ベースのセキュリティをテストするために、さまざまなプロバイダの認証トークンの作成をサポートする機能も搭載されています。これにより、トークンがどのように見えるかをプレビューしたり、記述しているルールにトークンの形式を直接対応づけることが可能になります。


シミュレータは、デプロイされているルールではなく、現在エディタに記述されているドラフト状態のルールに対してテストを行うので、さまざまなルールに対してさまざまなタイプのリクエストを短時間でテストすることができます。つまり、次からは、ルールが期待どおりの動作をしてデータを守ってくれるという確信を持って公開ボタンをクリックできるようになります!

シミュレータは、コンソールの [Firestore] パネルの [Rules] セクションからすぐに使用できます。

ドキュメントへのアクセス制限の緩和

さらに、各セキュリティ ルールで実行できる get()exists()getAfter() の呼び出しの数を大幅に増加させています。ドキュメントのリクエスト 1 回につき、10 回のドキュメント アクセス呼び出しができるようになっています(以前の 3 回から増加)。バッチ書き込みなどのマルチリソース リクエストでは、リクエストのすべてのドキュメントに対し、合計 20 回のドキュメント アクセス呼び出しを行うことができます。

詳しい情報や例については、ドキュメントをご覧ください。


リファレンス ドキュメントの改善

Firestore のセキュリティ ルールは JavaScript に似ていますが、実際は独自の構文と動作を持つ専用言語です。セキュリティ ルールの記述に役立つガイドはすでに提供されていますが、多くのデベロッパーから、複雑なルールを書くために知る必要があるすべての関数、型、エッジケースを見つけるのは難しいという声が寄せられています。

そこで、セキュリティ ルール言語とそのビルトインの型や関数に関する包括的なリファレンス ドキュメントを公開しました。これによって、高度なルール条件でも自信を持って記述していただけるようになることを期待しています。


Reviewed by Khanh LeViet - Developer Relations Team