Firebase セキュリティ ルールをすばやく検証する

更新した Firebase セキュリティ ルールを Firebase コンソールですばやくテストするには、ルール プレイグラウンドを使用します。

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

ルール プレイグラウンドを使用する

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

ルール プレイグラウンドのシナリオの例

次のサンプル シナリオと基本的なルールを使用してルール プレイグラウンドの動作をテストします。

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 != null && 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"
       }
     }
   }
 }
 

Cloud 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 != null && request.auth.uid == userId;
    }
  }
}
  • ルールエディタで、上記のルールを追加します。

  • [シミュレーション タイプ] プルダウン メニューから [get] を選択し、[場所] フィールドに有効なパスを入力します。

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

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

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