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を統合する | アプリにCloudFirestore 、 Cloud Storage 、またはRealtimeDatabaseを設定します。 | |
Firebaseのセキュリティルールを作成する | ルールがどのように機能するか、およびいくつかの基本的なルールを設定する方法の詳細をご覧ください | |
Firebaseのセキュリティルールをテストする | RealtimeDatabaseおよびCloudFirestoreエミュレーターを使用して、アプリの動作をテストし、ルールを本番環境にデプロイする前に検証します。 | |
Firebaseセキュリティルールをデプロイする | FirebaseコンソールまたはFirebaseCLIを使用して、ルールを本番環境にデプロイします。 |
次のステップ
- Firebaseセキュリティルールの言語を理解します。
- 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を統合する | アプリにCloudFirestore 、 Cloud Storage 、またはRealtimeDatabaseを設定します。 | |
Firebaseのセキュリティルールを作成する | ルールがどのように機能するか、およびいくつかの基本的なルールを設定する方法の詳細をご覧ください | |
Firebaseのセキュリティルールをテストする | RealtimeDatabaseおよびCloudFirestoreエミュレーターを使用して、アプリの動作をテストし、ルールを本番環境にデプロイする前に検証します。 | |
Firebaseセキュリティルールをデプロイする | FirebaseコンソールまたはFirebaseCLIを使用して、ルールを本番環境にデプロイします。 |
次のステップ
- Firebaseセキュリティルールの言語を理解します。
- Firebaseセキュリティルールの仕組みの詳細をご覧ください。
- 避けるべき一般的な間違いを探ります。