データベース ルールを使い始める

Firebase Realtime Database には柔軟な式ベースのルール言語と JavaScript ライクの構文が用意されているため、データの構造化方法、インデックスの作成方法、データの書き込みと読み取りのタイミングを簡単に定義できます。Firebase の認証サービスと組み合わせることにより、誰がどのデータへのアクセス権を持つかを定義して、ユーザーの個人情報を不正なアクセスから保護できます。

ルールを設定する

Firebase コンソールでデータベースのルールを検索して変更できます。プロジェクトを選択してから、左側の [データベース] セクション、次に [ルール] タブを選択します。本番環境に移行する前にセキュリティ ルールをテストする場合は、ルールエディタの右上にある [シミュレーション] ボタンでコンソールで操作をシミュレーションできます。

また、コマンドライン インターフェースを使用してルールを更新することもできます。 これは、自動デプロイ システムを使用するなど、ルールをプログラム的に更新したい場合に特に役立ちます。

サンプルルール

データベースには、デフォルトで Firebase Authentication が必要で、完全な読み取りと書き込み許可は、認証済みユーザーにのみ付与されます。このデフォルト ルールによって、自分でアクセスルールを設定するまで、データベースは誰からもアクセスできないように保護されます。自分で設定した後は、必要に応じて自由にルールをカスタマイズできます。いくつかの一般的なルールの例を以下に示します。

デフォルト

デフォルト ルールには、Authentication が必要です。それによって、アプリの認証済みユーザーに完全な読み取り / 書き込みアクセスが許されます。これは、アプリのユーザーすべてにデータをオープンしたい場合で、公開はしたくないときに役立ちます。

// These rules require authentication
{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

公開

開発時には、デフォルトの代わりに公開ルールを使用して、ファイルを公開して読み取りと書き込みができるように設定することができます。Authentication を設定しなくても使い始めることができるので、プロトタイプの場合は非常に便利です。このアクセスレベルでは、誰でもデータベースに対して読み取り、書き込みができます。アプリの運用開始前には、より安全なルールの設定が必要です。

// These rules give anyone, even people who are not users of your app,
// read and write access to your database
{
  "rules": {
    ".read": true,
    ".write": true
  }
}

ユーザー

以下のルールの例では、認証済みユーザーそれぞれに /users/$user_id における個人用ノードを与えます。ここで、$user_idAuthentication によって取得されたユーザーの ID です。これは、ユーザーの個人データを含むアプリに共通のシナリオです。

// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}

非公開

非公開ルールでは、非認証ユーザーによるデータベースへの読み取り、書き込みアクセスができなくなります。 こうしたルールでは、Firebase コンソールによるアクセスのみが可能になります。

// These rules don't allow anyone read or write access to your database
{
  "rules": {
    ".read": false,
    ".write": false
  }
}

アプリの起動前にこれらのルールを正しく設定し、想定されたデータにのみユーザーが確実にアクセスできるようにすることが不可欠です。

次のステップ

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。