Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

Firebaseのセキュリティルール

柔軟で拡張可能なFirebaseセキュリティルールを使用して、Cloud Firestore、Firebase Realtime Database、およびCloudStorageのデータを保護します。

Firebaseのセキュリティルールは、データと悪意のあるユーザーの間にあります。特定のアプリが必要とする粒度のレベルまでアプリのデータを保護する単純または複雑なルールを記述できます。

Firebaseセキュリティルールは、拡張可能で柔軟な構成言語を活用して、ユーザーがRealtime Database、Cloud Firestore、CloudStorageでアクセスできるデータを定義します。 Firebase Realtime Databaseルールはルール定義でJSONを活用しますが、CloudFirestoreセキュリティルールとCloudStorageのFirebaseセキュリティルールは、より複雑なルール固有の構造に対応するために構築された独自の言語を活用します。

アプリで使用する特定のFirebase製品にルールを設定する方法と、Firebase製品間でルールの動作がどのように異なるかについての詳細をご覧ください。

主な機能

柔軟性アプリの構造と動作に適したカスタムルールを作成します。ルールは、独自のデータを利用してアクセスを許可できる言語を使用します。
粒度ルールは、必要に応じて幅広くまたは狭くすることができます。
独立したセキュリティルールはアプリの外部(FirebaseコンソールまたはFirebase CLI)で定義されているため、クライアントはセキュリティを強化する責任を負わず、バグによってデータが危険にさらされることはなく、データは常に保護されます。

それらはどのように機能しますか?

Firebaseセキュリティルールは、パターンをデータベースパスと照合し、カスタム条件を適用してそれらのパスのデータへのアクセスを許可することで機能します。 Firebase製品全体のすべてのルールには、パスマッチングコンポーネントと、読み取りまたは書き込みアクセスを許可する条件ステートメントがあります。アプリで使用するFirebase製品ごとにルールを定義する必要があります。

CloudFirestoreとCloudStorageの場合、ルールは次の構文を使用します。

service <<name>> {
  // Match the resource path.
  match <<path>> {
    // Allow the request if the following conditions are true.
    allow <<methods>> : 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を統合するアプリにCloudFirestoreCloud Storage 、またはRealtimeDatabaseを設定します。
Firebaseのセキュリティルールを作成するルールがどのように機能するか、およびいくつかの基本的なルールを設定する方法の詳細をご覧ください
FirebaseのセキュリティルールをテストするRealtimeDatabaseおよびCloudFirestoreエミュレーターを使用して、アプリの動作をテストし、ルールを本番環境にデプロイする前に検証します。
FirebaseセキュリティルールをデプロイするFirebaseコンソールまたはFirebaseCLIを使用して、ルールを本番環境にデプロイします。

次のステップ

Firebaseのセキュリティルール

柔軟で拡張可能なFirebaseセキュリティルールを使用して、Cloud Firestore、Firebase Realtime Database、およびCloudStorageのデータを保護します。

Firebaseのセキュリティルールは、データと悪意のあるユーザーの間にあります。特定のアプリが必要とする粒度のレベルまでアプリのデータを保護する単純または複雑なルールを記述できます。

Firebaseセキュリティルールは、拡張可能で柔軟な構成言語を活用して、ユーザーがRealtime Database、Cloud Firestore、CloudStorageでアクセスできるデータを定義します。 Firebase Realtime Databaseルールはルール定義でJSONを活用しますが、CloudFirestoreセキュリティルールとCloudStorageのFirebaseセキュリティルールは、より複雑なルール固有の構造に対応するために構築された独自の言語を活用します。

アプリで使用する特定のFirebase製品にルールを設定する方法と、Firebase製品間でルールの動作がどのように異なるかについての詳細をご覧ください。

主な機能

柔軟性アプリの構造と動作に適したカスタムルールを作成します。ルールは、独自のデータを利用してアクセスを許可できる言語を使用します。
粒度ルールは、必要に応じて幅広くまたは狭くすることができます。
独立したセキュリティルールはアプリの外部(FirebaseコンソールまたはFirebase CLI)で定義されているため、クライアントはセキュリティを強化する責任を負わず、バグによってデータが危険にさらされることはなく、データは常に保護されます。

それらはどのように機能しますか?

Firebaseセキュリティルールは、パターンをデータベースパスと照合し、カスタム条件を適用してそれらのパスのデータへのアクセスを許可することで機能します。 Firebase製品全体のすべてのルールには、パスマッチングコンポーネントと、読み取りまたは書き込みアクセスを許可する条件ステートメントがあります。アプリで使用するFirebase製品ごとにルールを定義する必要があります。

CloudFirestoreとCloudStorageの場合、ルールは次の構文を使用します。

service <<name>> {
  // Match the resource path.
  match <<path>> {
    // Allow the request if the following conditions are true.
    allow <<methods>> : 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を統合するアプリにCloudFirestoreCloud Storage 、またはRealtimeDatabaseを設定します。
Firebaseのセキュリティルールを作成するルールがどのように機能するか、およびいくつかの基本的なルールを設定する方法の詳細をご覧ください
FirebaseのセキュリティルールをテストするRealtimeDatabaseおよびCloudFirestoreエミュレーターを使用して、アプリの動作をテストし、ルールを本番環境にデプロイする前に検証します。
FirebaseセキュリティルールをデプロイするFirebaseコンソールまたはFirebaseCLIを使用して、ルールを本番環境にデプロイします。

次のステップ