Firebase セキュリティ ルール スタートガイド

Firebase セキュリティ ルールは、Cloud FirestoreRealtime DatabaseCloud Storage のデータに対して、堅牢で、完全にカスタマイズ可能な保護を提供します。このガイドの手順に従うことで、データのセキュリティを確保し悪意のあるユーザーからアプリを保護する Rules を簡単に導入できます。

Firebase セキュリティ ルール言語を理解する

ルールの作成を始める前に、お使いの Firebase プロダクトに固有の Firebase セキュリティ ルール言語の確認に時間をかけることは価値があります。Realtime Database では、JavaScript のような構文と JSON 構造を Rules に利用します。

まず、Firebase セキュリティ ルール言語の基本構文を学習します。

Authenticationを設定

まだ Firebase Authentication をアプリに追加していない場合は、追加します。Firebase Authentication は多くの一般的な認証方式をサポートしており、Firebase セキュリティ ルールと統合することで包括的な検証機能を提供します。

アプリに応じたカスタム認証情報を追加で設定できます。

詳細については、Firebase セキュリティ ルールと Firebase Authentication をご覧ください。

データ構造とルール構造を定義する

セキュリティを考慮してデータを定義する

データをどう構造化するかによって、ルールを構造化、実装する方法が左右されることがあります。データ構造を定義する際は、Rules の構造に与える可能性がある影響を考慮します。

たとえば、Realtime Database では、各ユーザーの特定のロールを示すフィールドを含めることをおすすめします。これにより、ルールでそのフィールドを読み取り、その値に基づきロールベースのアクセス権を付与できます。

データとルールのアーキテクチャを定義する際は、プロダクトに応じて、ルールがどのようにカスケードされる(またはカスケードされない)かに注意してください。Realtime Database では、ルールはトップダウンで機能するため、浅いパスのルールが深いパスのルールよりも優先されます。ルールは、特定のパスで読み取り権限や書き込み権限を付与した場合、その下位にあるすべての子ノードへのアクセス権も付与します。一方、Cloud FirestoreCloud Storage では、ルールはデータ階層の指定のレベルにのみ適用されます。ユーザーは、さまざまなレベルへのアクセスを制御するルールを明示的に記述します。

既存のルールにアクセスする

既存の Rules を表示するには、Firebase CLI または Firebase コンソールのいずれかを使用します。更新したルールを誤って上書きしないよう、常に同じ手段を使用してルールを編集します。ローカルに定義されたルールが最新の更新を反映しているかどうかわからなくても、Firebase コンソールには常に Firebase セキュリティ ルールの最新のデプロイ済みバージョンが表示されます。

Firebase コンソールからルールにアクセスするには、プロジェクトを選択し、左側のナビゲーション パネルで [Realtime Database] をクリックします。対象のデータベースやストレージ バケットに移動したら、[Rules] をクリックします。

Firebase CLI からルールにアクセスする場合は、firebase.json ファイルに指定されているルールファイルに移動します。

基本的なルールを作成する

アプリを開発しながら Rules の理解を深める中で、Rules を実装して、次のようないくつかの基本的なユースケースに対処してみましょう。

  • コンテンツ所有者のみ: ユーザーごとにコンテンツへのアクセスを制限する。
  • 混合アクセス: ユーザーごとに書き込みアクセスを制限する一方、すべてのユーザーに読み取りアクセスを許可する。
  • 属性ベースのアクセス: ユーザーのグループまたはタイプにアクセスを制限する。

ルールをテストする

Firebase コンソールで Firebase セキュリティ ルールを設定する場合は、Firebase ルール プレイグラウンドを使用して、その動作をすばやく検証できます。ただし、変更内容を本番環境にデプロイする前に Local Emulator Suite でさらに綿密なテストを実施することをおすすめします。

ルールをデプロイする

Firebase コンソールまたは Firebase CLI を使用して、ルールを本番環境にデプロイします。Firebase セキュリティ ルールの管理とデプロイで説明されている手順に従ってください。