Firebase セキュリティ ルールのすばやい検証

更新した Firebase セキュリティ ルールを Firebase コンソールですばやくテストするには、Firebase ルール シミュレータを使用します。

Firebase ルール シミュレータは、新しい動作を調べるときや、作成中のルールをすばやく検証するときに使用できる便利なツールです。シミュレーションで設定したパラメータに応じてアクセスが許可または拒否されたことを確認するメッセージが表示されます。

Firebase ルール シミュレータを使用する

  1. Firebase コンソールを開き、プロジェクトを選択します。
  2. 次に、プロダクト ナビゲーションから [Database] か [Storage] を選択します。
    • [Database]: データベースを選択し、[ルール] をクリックしてルールエディタに移動します。
    • [Storage]: [ルール] をクリックしてルールエディタに移動します。
  3. 編集が完了したら、エディタで [シミュレータ] をクリックします。
  4. シミュレータの設定で、次のようなテストのオプションを選択します。
    • 読み取りや書き込みのテスト
    • データベース内の特定の場所(パスを入力)
    • 認証タイプ - 未認証、認証済み匿名ユーザー、特定のユーザー ID
    • ルールで参照するドキュメントの固有のデータ(例: ルールで書き込みを許可する前に、特定のフィールドが存在している必要がある場合)
  5. [実行] をクリックして、エディタの上のバナーで結果を確認します。

サンプル シミュレータのシナリオ

次のサンプル シナリオと基本的なルールを使用してシミュレータの動作をテストします。

  1. ルールエディタで、次の基本的なルールを追加します。

    Cloud Firestore

    service cloud.firestore {
     match /databases/{database}/documents {
       // Allow only authenticated content owners access
       match /some_collection/{document} {
         allow read, write: if request.auth.uid == request.resource.data.author_uid
       }
     }
    }
    

    Realtime Database

    // These rules grant access to a node matching the authenticated
    // user's ID from the Firebase auth token
    {
    "rules": {
     "users": {
       "$uid": {
         ".read": "$uid === auth.uid",
         ".write": "$uid === auth.uid"
       }
     }
    }
    }
    

    Storage

    // Grants a user access to a node matching their user ID
    service firebase.storage {
    match /b/{bucket}/o {
     // Files look like: "user/<UID>/path/to/file.txt"
     match /user/{userId}/{allPaths=**} {
       allow read, write: if request.auth.uid == userId;
     }
    }
    }
    
  2. [シミュレーション タイプ] プルダウン メニューから [get] を選択し、[場所] フィールドに有効なパスを入力します。

  3. [認証済み] をオンにして、[プロバイダ] プルダウンから認証タイプを選択します。

  4. ユーザー ID の詳細を入力し、[実行] をクリックします。

シミュレーションの結果がエディタの上部に表示されます。入力したユーザー ID の詳細によっては、読み取りが正常に許可または拒否されたことを確認するバナーが表示されます。