Firebaseセキュリティ・ルール


Firebase 보안 규칙は、데이터를 악의적인 사용자로부터 보호하기 위해 제공됩니다.単純または複雑なルールを作成し、特定のアプリケーションに必要な詳細レベルでアプリケーション内のデータを保護します.
Firebaseセキュリティ・ルールでは、拡張性と柔軟な構成言語を使用して、リアルタイム・データベース、クラウド・リカバリ、クラウド・ストレージからユーザーがアクセスできるデータを定義します.Firebaseのリアルタイム・データベース・ルールでは、ルール定義のJSONが使用され、クラウド・リカバリ・セキュリティ・ルールとクラウド・ストレージのFirebaseセキュリティ・ルールでは、より複雑なルール固有の構造に適応するために構築された独自の言語が使用されます.
アプリケーションが使用する特定のFirebase製品のルールを設定する方法と、Firebase間のルールの動作がどのように異なるかについて詳しく説明します.
主な機能

  • 柔軟性
    アプリケーションの構造と動作に適切なカスタムルールを作成します.ルールは、独自のデータを使用してアクセスを承認できる言語です.

  • 詳細
    必要に応じてルールを拡張または縮小できます.

  • 独立したセキュリティ
    ルールはアプリケーション外部(Firebase ConsoleまたはFirebase CLI)で定義されているため、クライアントはセキュリティ保護の責任を負いません.データはエラーによって破損せず、データは常に保護されます.
  • さぎょうげんり
    Firebaseセキュリティ・ルールは、パターンをデータベース・パスと照合し、カスタム条件を適用してパス内のデータへのアクセスを許可します.Firebase製品のすべてのルールには、パスマッチングコンポーネントと読み取りまたは書き込みアクセスを可能にする条件文があります.アプリケーションで使用する各Firebase製品のルールを定義する必要があります.Cloud FirestoreおよびCloud Storageの場合、ルールは次の構文を使用します.
    service <<name>> {
     // Match the resource path.
     match <<path>> {
      // Allow the request if the following conidtions are true.
      allow <<method>>: if <<condition>>
     }
    }
    실시간 데이터베이스では、JSONのルールに基づいて次の構文が使用されます.
    {
      "rules": {
        "<<path>>": {
          // Allow the request if the condition for each method is true.
          ".read": <<condition>>,
          ".write": <<condition>>
        }
      }
    }
    ルールは、AND문ではなくOR문に適用されます.したがって、複数のルールがパスに一致し、一致条件がアクセスを許可する場合、ルールはパス内のデータにアクセスを許可します.したがって、一連のルールでデータへのアクセスが許可されている場合は、より具体的なルールに制限することはできません.ただし、ルールが重複しない場合は、この問題を回避できます.Firebaseセキュリティ・ルール・フラグは、コンパイラの警告に一致するパスに重複します.
    Firebaseセキュリティ・ルールでは、認証を使用してユーザー・ベースの権限を付与できます.設定された条件は非常に基本的であり、複雑である可能性があります.ルールの作成を開始する前に、ルールの言語と動作を詳しく理解してください.
    インプリメンテーションパス
  • 제품 SDK 통합アプリケーションのクラウドリカバリ、クラウドストレージ、またはリアルタイムデータベースを設定します.
  • Firebase 보안 규칙 작성ルールの動作原理とデフォルトのルール設定について詳しく説明します.
  • Firebase 보안 규칙 테스트リアルタイム・データベースとクラウド・リカバリ・シミュレータを使用して本番導入を行う前に、アプリケーションの動作をテストし、ルールを検証します.
  • Firebase 보안 규칙 배포FirebaseコンソールまたはFirebase CLIを使用して、ルールを本番環境に配布します.
  • Firebaseセキュリティ・ルールの起動
    1.Firebaseセキュリティルールの理解
    ルールを作成する前に、使用しているFirebase製品を理解するために、特定のFirebaseセキュリティ・ルール言語を確認することをお勧めします.실시간 데이터베이스ルールで자바스크립트와 유사한 구문 및 JSON 구조를 활용です.Cloud FirestoreおよびCloud Storageは、定義されたパスにアクセス条件を設定する一致および許可文CEL(Common Expression Language)의 상위 집합을 활용に依存する.
    Google-CEL公式ドキュメント:https://github.com/google/cel-spec/blob/master/doc/langdef.md#overview
    2.認証の設定
    まだ設定されていない場合は、Firebase 인증으로 사용자를 식별をクリックします.Firebase認証は、多くの一般的な認証方法をサポートし、統合認証機能を提供するためにFirebaseセキュリティ・ルールと統合されています.
    アプリケーションに追加のカスタム認証情報を設定できます.
    3.データとルール構造の定義
    データを構造化する方法は、ルールの構造化および実装に影響を与える可能性があります.データ構造を定義する場合は、ルール構造の影響を考慮してください.
    たとえば、Cloud Firestoreに各ユーザー固有のロールを表すフィールドを含めると、ルールからこれらのフィールドを読み込むことでロールベースのアクセスを許可できます.
    データとルール・アーキテクチャを定義するときに、ルールによってデータセットへのアクセスが許可されている場合、Firebaseセキュリティ・ルールによってもデータセットへのアクセスが許可されていることに注意してください.これは、データ階層のより高いレベルでアクセスが許可されている場合、サブパスからアクセスをさらに細分化することはできません.
    4.ルールの表示
    既存のルールを表示するには、Firebase CLIまたはFirebase Consoleを使用します.更新を予期せぬ上書きしない場合は、同じ方法でルールを一貫して変更する必要があります.ローカルで定義されたルールが最新の更新を反映しているかどうか不明な場合は、Firebaseコンソールを使用して、Firebaseセキュリティ・ルールの最新バージョンをいつでも表示できます.
    Firebaseコンソールでルールを表示するには、アイテムを選択し、リアルタイム・データベースCloud FirestoreまたはStorageに移動します.有効なデータベースまたはストレージ・パケットにアクセスしたら、「ルール」をクリックします.
    Firebase CLIでルールを表示するには、ファイルfirebase.jsonに記載されているルールファイルに移動します.
    5.基本ルールの作成
    アプリケーションの開発とルールの理解と同時に、次の使用例を含む基本的なセキュリティ・ルールを実装します.
  • 콘텐츠 소유자 전용:ユーザーによるコンテンツアクセス制限
  • 혼합 액세스:ユーザーの書き込みアクセスは制限されますが、公開読み取りアクセスは許可されます.
  • 속성 기반 액세스:アクセスをユーザー・グループまたはタイプに制限
  • 6.試験規則
    アプリケーションの動作を完全に検証し、Firebaseセキュリティ・ルール構成を検証するには、ローカル環境Firebase 애뮬레이터를 사용하여 단위 테스트를 실행하고 자동화を使用します.
    FirebaseコンソールでFirebaseセキュリティ・ルールが設定されている場合は、Firebaseルール・シミュレータを使用して操作をすばやく検証できます.ただし、変更を生産に配布する前にFirebase 에뮬레이터를 사용하여 좀 더 철저하게 테스트하는 것이 좋습니다.7.配置規則
    FirebaseコンソールまたはFirebase CLIを使用して、ルールを本番環境に配布します.Firebaseセキュリティ・ルールの管理と導入について説明した手順に従います.