Firebase セキュリティ ルールは、Cloud Firestore、Realtime Database、Cloud Storage のデータに対して堅牢で完全にカスタマイズ可能な保護を提供します。このガイドの手順に従ってルールを簡単に開始し、データを保護し、悪意のあるユーザーからアプリを保護できます。
Firebase セキュリティ ルールの言語を理解する
ルールを書き始める前に、使用している Firebase 製品に固有の Firebase セキュリティ ルール言語を確認することをお勧めします。 Cloud Storage は、定義されたパスでのアクセスの条件を設定するmatch
ステートメントとallow
ステートメントに依存する Common Expression Language (CEL) のスーパーセットを利用します。
Firebase セキュリティ ルール言語のコア構文を学習することから始めます。
認証の設定
まだ行っていない場合は、アプリに Firebase Authentication を追加します。 Firebase Authentication は、多くの一般的な認証方法をサポートし、Firebase セキュリティ ルールと統合して包括的な検証機能を提供します。
アプリの追加のカスタム認証情報を設定できます。
Firebase セキュリティ ルールと Firebase Authenticationの詳細をご覧ください。
データとルールの構造を定義する
データを構造化する方法は、ルールを構造化して実装する方法に影響を与える可能性があります。データ構造を定義するときは、それらがルール構造に与える影響を考慮してください。
たとえば、Cloud Storage では、各ユーザーの特定のロールを示すフィールドを含めることができます。次に、ルールでそのフィールドを読み取り、それを使用してロールベースのアクセスを許可できます。また、Cloud Firestore データベースを作成し、Cloud Firestore ドキュメントにアクセス基準を保存してから、Cloud Storage セキュリティ ルールからそれらのドキュメントにアクセスすることもできます。
データとルールのアーキテクチャを定義するときは、製品に応じて、ルールがカスケードする方法とカスケードしない方法に注意してください。 Realtime Database では、ルールはトップダウンで機能し、浅いルールが深いルールを上書きします。ルールが特定のパスで読み取りまたは書き込み権限を付与する場合、その下にあるすべての子ノードへのアクセスも付与されます。対照的に、Cloud Firestore と Cloud Storage では、ルールはデータ階層の指定されたレベルでのみ適用され、明示的なルールを記述してさまざまなレベルへのアクセスを制御します。
ルールにアクセスする
既存のルールを表示するには、Firebase CLI または Firebase コンソールを使用します。誤って更新を上書きしないように、一貫して同じ方法を使用してルールを編集してください。ローカルで定義されたルールが最新の更新を反映しているかどうかわからない場合、Firebase コンソールには、Firebase セキュリティ ルールの最近デプロイされたバージョンが常に表示されます。
Firebase コンソールからルールにアクセスするには、プロジェクトを選択し、左側のナビゲーション パネルで [ストレージ] をクリックします。正しいデータベースまたはストレージ バケットに移動したら、[ルール]をクリックします。
Firebase CLI からルールにアクセスするには、 firebase.jsonファイルに記載されているルール ファイルに移動します。
基本的なルールを書く
アプリを開発し、ルールを理解する際に、次のようないくつかの基本的な使用例に対処するためにルールを実装してみてください。
- コンテンツ所有者のみ:ユーザーによるコンテンツへのアクセスを制限します。
- 混合アクセス:ユーザーによる書き込みアクセスを制限しますが、パブリック読み取りアクセスは許可します。
- 属性ベースのアクセス:グループまたはユーザーのタイプへのアクセスを制限します。
ルールをテストする
Firebase コンソールで Firebase Security Rules を設定している場合は、 Firebase Rules Playgroundを使用して動作をすばやく検証できます。ただし、変更を本番環境にデプロイする前に、 Local Emulator Suiteを使用してより徹底的にテストすることをお勧めします。
ルールを展開する
Firebase コンソールまたは Firebase CLI を使用して、ルールを本番環境にデプロイします。 Firebase セキュリティ ルールの管理とデプロイで説明されている手順に従います。