Firebase でのプライバシー設定の保存

Firebase を使用すると、データの収集と処理に関するユーザー設定の収集と追跡が簡単になります。

  1. プライバシーを設定する
  2. プライバシー設定を使用するようにアプリを更新する
  3. プライバシー設定の変更を追跡する

プライバシーを設定する

プライバシー設定を収集して保存するためには 2 つの要素が必要になります。それは、ユーザーがプライバシーを設定するための UI と、それらの設定を保存する手段です。

プライバシー設定の UI の作成

プライバシー設定の UI の形式はデベロッパーが決定します。UI を構築する際には、次の点を考慮する必要があります。

収集するデータを把握する

ある程度の時間をかけて、アプリで保存または処理するユーザーデータのカタログを作ります。アプリで直接収集するデータと、アプリで使用するサービスによって収集されるデータを含めてください。Firebase サービスに関しては、Firebase によって処理されるエンドユーザーのデータの例を確認すると役に立つ場合があります。

ユーザーを支援する UI を設計する

収集されるデータがどのようにアプリに役立つか、どのように使用されるかなど、収集するデータの種類について、簡潔で分りやすい用語で説明してください。

アプリが正常に機能するために特定のデータが必要である場合は、アプリの動作に必要なオプションをユーザーが選択するまで UI の送信ボタンを無効にすることによってエラーを回避できます。一部のデータ収集を許可し、それ以外のデータ収集を無効にしたいと考えるユーザーがいます。そうしたユーザーのために、アプリの動作はどのように流れるべきかを考えてみてください。

ユーザーがプライバシー ポリシーに同意するまで [Submit] ボタンは無効になっていますユーザーがプライバシー ポリシーに同意するまで [Submit] ボタンは無効になっています

プライバシー設定の保存

ユーザーのプライバシー設定を保存する場所と方法も、デベロッパーが決めることです。信頼できる任意の識別子を使用して、ユーザーがプライバシー設定の UI で選択した内容とユーザーを関連付けることができます。

1 つの一般的なアプローチとしては、識別子をキーとして使用して、アプリで使用するデータストアに設定を保存します。たとえば、Firebase Auth UID を Realtime Database インスタンスのキーとして使用したり、Firebase インスタンス ID を使用して Firestore ドキュメントのコレクションを編成したりできます。

例: Auth UID と Realtime Database を使用したユーザーの設定の保存

Firebase Auth UID と Firebase Realtime Database を使用してユーザーの設定を保存するソーシャル メディア アプリを例に説明します。

ユーザーデータのセキュリティとプライバシーを確保するために、このアプリではデータベース内の個別の場所にユーザーの設定を保存します。その場所には、該当ユーザーのみが読み取り / 書き込みできるように制約を課すセキュリティ ルールを適用します。また、想定される値はブール値のみであり、想定外の値を受け入れないように検証を行います。

"privacy": {
  "$uid": {
    ".write": "auth.uid === $uid",
    ".read": "auth.uid === $uid",
    "data_processing": {
      ".validate": "newData.isBoolean()"
    },
    "content": {
      ".validate": "newData.isBoolean()"
    },
    "social": {
      ".validate": "newData.isBoolean()"
    },
    "$other": {
      ".validate": "false"
    }
  }
}

プライバシー設定を使用するようにアプリを更新する

アプリでユーザーのプライバシー設定を使用できるようになったら、特定の設定を有効にしたユーザーには特定の機能を有効にできます。データを収集する機能や収集したデータを使用する機能を読み込む前に、アプリで設定を確認します。ある機能を考える場合は、その機能がなかった場合の最適なエクスペリエンスがどのようなものであるかを検討します。たとえば、アプリがミニブログ プラットフォームであり、アプリの投稿内容保存機能をユーザーが無効にしている場合を考えます。この場合の最適なユーザー エクスペリエンスとは、投稿作成のオプションを取り除くことかもしれません。

プライバシー設定の変更を追跡する

データを収集する権限を付与した後に、ユーザーの気が変わる可能性があります。プロフィール画面や設定画面を開くためのボタンやリンクを追加し、その画面でユーザーがプライバシー設定を更新できるようにします。

[Privacy settings] リンクをクリックすると、ユーザーが設定を更新できる設定ダイアログ ボックスが表示されます [Privacy settings] リンクをクリックすると、ユーザーが設定を更新できる設定ダイアログ ボックスが表示されます

ユーザーがデータ収集を無効にするよう決めた場合に、アプリでどのように処理するかを決めることもできます。たとえば、収集したデータを削除するオプションをユーザーに提供したり、自動的に削除したりできます。データの削除には、Cloud Functions for Firebase の使用を検討してください。これは、削除する必要があるデータの量によっては、処理に数分かかる場合があるためです。この処理の詳細については、ユーザーデータの削除とエクスポートのガイドをご覧ください。

ユーザーのプライバシー設定の監査ログを別途保存する

アプリのデベロッパーによっては、プライバシー設定の変更を記録する必要が生じる場合があります。これを行うには、Realtime Database または Firestore を使用して、データベース内に新しいセクションを作成し、プライバシー変更の監査ログとして使用します(ユーザーの一意の識別子の下にセクションを構成し、新しいプライバシー設定とタイムスタンプを含めるようにします)。ユーザーがプライバシー設定を更新すると、書き込みが 2 回(ユーザーのプライバシー設定に対して 1 回、監査ログに対して 1 回)行われます。より厳格なセキュリティ ルールを作成できるように、これを独立したセクションにすることが重要になります。詳細なルールを使用して、Firestore ユーザーによる監査ログ内のドキュメントの編集を禁止します。

match /audit_log/{uid} {
   allow create: if uid = request.auth.uid;
   allow update: if false;
   allow delete: if false;
 }

データの把握、設定の収集、設定の保存、変更の追跡という 4 つのステップによって、アプリがユーザーのプライバシーを尊重しているかを簡単に確認できます。