Check out what’s new from Firebase at Google I/O 2022. Learn more

Firebaseセキュリティルールの使用を開始する

Firebaseセキュリティルールは、Cloud Firestore、Realtime Database、およびCloudStorageのデータに堅牢で完全にカスタマイズ可能な保護を提供します。このガイドの手順に従ってルールを簡単に開始し、データを保護し、悪意のあるユーザーからアプリを保護できます。

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

ルールの作成を開始する前に、使用しているFirebase製品の特定のFirebaseセキュリティルール言語を確認することをお勧めします。 Cloud Storageは、 matchに依存するCommon Expression Language(CEL)のスーパーセットを活用し、定義されたパスでアクセスするための条件を設定するステートメントをallowします。

Firebase SecurityRules言語のコア構文を学ぶことから始めます。

認証を設定する

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

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

FirebaseセキュリティルールとFirebase認証の詳細をご覧ください。

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

データを構造化する方法は、ルールを構造化および実装する方法に影響を与える可能性があります。データ構造を定義するときは、それらがルール構造に与える影響を考慮してください。

たとえば、Cloud Storageでは、各ユーザーの特定の役割を示すフィールドを含めることができます。次に、ルールはそのフィールドを読み取り、それを使用して役割ベースのアクセスを許可できます。

データとルールのアーキテクチャを定義するときは、製品に応じて、ルールがカスケードされる方法とカスケードされない方法に注意してください。 Realtime Databaseを使用すると、ルールはトップダウンで機能し、浅いルールが深いルールを上書きします。ルールが特定のパスで読み取りまたは書き込み権限を付与する場合、そのルールの下にあるすべての子ノードへのアクセスも許可します。対照的に、CloudFirestoreとCloudStorageでは、ルールはデータ階層の指定されたレベルにのみ適用され、さまざまなレベルへのアクセスを制御する明示的なルールを記述します。

ルールにアクセスする

既存のルールを表示するには、FirebaseCLIまたはFirebaseコンソールのいずれかを使用します。誤って更新を上書きしないように、常に同じ方法を使用してルールを編集してください。ローカルで定義されたルールが最新のアップデートを反映しているかどうかわからない場合、Firebaseコンソールには常にFirebaseセキュリティルールの最新バージョンが表示されます。

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

Firebase CLIからルールにアクセスするには、 firebase.jsonファイルに記載されているルールファイルにアクセスします。

基本的なルールを書く

アプリを開発してルールを理解しているときに、ルールを実装して、次のようないくつかの基本的なユースケースに対処してみてください。

  • コンテンツ所有者のみ:ユーザーによるコンテンツへのアクセスを制限します。
  • 混合アクセス:ユーザーによる書き込みアクセスを制限しますが、パブリック読み取りアクセスは許可します。
  • 属性ベースのアクセス:ユーザーのグループまたはタイプへのアクセスを制限します。

ルールをテストする

FirebaseコンソールでFirebaseセキュリティルールを設定している場合は、Firebase RulesPlaygroundを使用して動作をすばやく検証できます。ただし、変更を本番環境にデプロイする前に、 Local EmulatorSuiteを使用してさらに徹底的にテストすることをお勧めします。

ルールを展開する

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