Firebaseセキュリティルールの例

Firebaseセキュリティルールの例:Firestore、Storage、RTDB | We.Inc

Firestore、Storage、Realtime Database向けに、本人だけが扱えるデータ、公開読み取り、管理者ロール、入力検証のコピーできるルール例と、そのテスト方法を紹介します。

Firebaseセキュリティルールの例

Firebaseのセキュリティルールは、アプリ内の各データを誰が読み書きできるかを決めます。Firestoreのファイルは必ず rules_version = '2' で始め、request.auth が設定されている場合にのみアクセスを許可し、request.auth.uid をドキュメントの所有者と比較し、受け取ったフィールドを request.resource.data で確認します。デプロイ前にエミュレーターでテストしましょう。

各プロダクトでよく使う変数

アプリ、ショップ、会員エリアのデータをFirebaseに保存しているなら、顧客の記録と、プロジェクトの公開設定を手にした誰かとの間にあるのはルールだけです。以下のレシピは、多くの小規模なアプリに必要なケースを扱っています。プロダクトで絞り込み、1つコピーして、コレクション名を自分のものに合わせて変更してください。

よくある質問

Firestoreのテストモードとは何ですか?

データベースを作成するときに選べる2つの初期設定の1つです。Firebaseはテストモードについて、使い始めには便利だが、誰でもデータを読み取り、上書きできる状態になると説明しています。本番モードでは、ルールを書くまでモバイルやウェブのクライアントからの読み書きがすべて拒否されます。

アプリで突然 permission denied エラーが出るようになったのはなぜですか?

request.time < timestamp.date(2026, 11, 1) のように、request.time を固定の日付と比較している条件がないか探してください。その日付を過ぎると、すべてのリクエストが失敗します。日付を先に延ばすのではなく、本来のルールに置き換えましょう。

1つのルールで get() を何回呼び出せますか?

Firebaseのドキュメントでは、単一ドキュメントのリクエストとクエリではドキュメントアクセスの呼び出しが10回まで、複数ドキュメントの読み取り、トランザクション、バッチ書き込みでは20回までという上限が示されています。超えると permission denied エラーになります。

セキュリティルールはサーバーのコードにも適用されますか?

いいえ。ルールはモバイルやウェブのクライアントからのリクエストを守るものです。Firebaseは、サーバー用クライアントライブラリはCloud Firestoreのセキュリティルールをすべて回避すると明記しているため、サーバーのコードでは別途入力を確認してください。

本番のデータに触れずにルールをテストするには?

firebase emulators:start --only firestore でエミュレーターを起動し、@firebase/rules-unit-testing パッケージでテストを書きます。許可される操作には assertSucceeds、ブロックされる操作には assertFails を使います。

ルールの読み方

バックエンドなしでロールを扱う

公開前に削除すべきルール

以下のパターンはスタータープロジェクトやチュートリアルによく出てきます。どれもデータを開けっ放しにします。

危険なルールと、より安全な置き換え

エミュレーターでルールをテストする

Firestoreエミュレーターを実行し、所有者は書き込めて、他人は書き込めないことを確認します。

@firebase/rules-unit-testing を使ったルールの単体テスト

デモ用のプロジェクトIDを使うため、本番のデータベースには何も届きません。firebase emulators:start --only firestore を実行している間に実行してください。

本人だけが扱えるプロフィール

各ユーザーは、IDが自分のユーザーIDと一致するドキュメントだけを読み取り、編集できます。

読み取りは公開、書き込みは管理者のみ

商品カタログは誰でも読めますが、変更できるのはプロフィールのロールが admin のユーザーだけです。

新しい注文を検証する

顧客は自分自身の注文だけを、正の合計額と既知のステータスで作成でき、作成後は編集できません。

ユーザーは自分のロールを変更できない

プロフィールの編集は、role フィールドがまったく変わらない場合にのみ許可されます。

ユーザーが5MB未満の自分の画像をアップロードする

ファイルは各ユーザーのフォルダーに保存されます。アップロードは5MB未満の画像に限られ、ログインしていれば誰でも閲覧できます。

検証付きの本人限定データ

Realtime DatabaseのルールはJSONです。$uid がキーを受け取り、newData が書き込まれる値です。

ルールのレシピ

表示するレシピ

すべてのプロダクト

Cloud Firestore

Cloud Storage

Realtime Database

{n} 件のレシピを表示中

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る