Chrome拡張機能のプライバシーポリシーの作り方:ローカル保存と外部送信を整理する

公開日: 

前回の記事「Chrome拡張機能の権限設計とは?permissionsとhost_permissionsを最小限にする考え方」では、必要な権限だけを manifest.json へ追加する考え方を紹介しました。

Chrome拡張機能をChrome Web Storeへ公開する場合は、権限だけでなく、利用者のデータをどのように扱うかも整理する必要があります。

たとえば、設定値、コメント履歴、閲覧ページのURL、フォーム入力、外部APIへ送信するデータなどです。

データを外部サーバーへ送信しない拡張機能でも、ブラウザ内へ何を保存するか、利用者が削除できるかを説明できる状態にしておくと安心です。

この記事では、初心者向けにChrome拡張機能のプライバシーポリシーへ書く項目を整理します。

ローカル保存だけで完結する拡張機能と、外部APIへデータを送信する拡張機能を分けて考えます。

Chrome拡張機能のデータ取り扱いをプライバシーポリシーで説明する図解
Chrome拡張機能のデータ取り扱いをプライバシーポリシーで説明する図解

プライバシーポリシーとは

プライバシーポリシーは、利用者のデータをどのように扱うかを説明する文書です。

Chrome拡張機能では、主に次の内容を整理します。

  • どのような機能を提供するか
  • どのデータを取得または保存するか
  • データをどこへ保存するか
  • 外部サーバーへ送信するか
  • 第三者へ提供するか
  • 利用者がデータを削除できるか
  • 問い合わせ先はどこか

プライバシーポリシーは、長い文章を書けばよいものではありません。

実際の拡張機能の動作と一致し、利用者が必要な内容を確認できることが重要です。

Chrome Web Storeで必要になる理由

Chrome Web StoreのUser Dataポリシーでは、ユーザーデータを扱う場合、正確で最新のプライバシーポリシーを公開することが求められています。

また、Chrome Web StoreのDeveloper Dashboardでは、拡張機能が扱うデータや用途を開示します。

次の3つは、同じ内容になっている必要があります。

  1. 拡張機能の実際の動作
  2. Developer Dashboardでの開示
  3. 公開しているプライバシーポリシー

たとえば、プライバシーポリシーに「外部送信はありません」と書いているのに、実際には分析サービスへデータを送信している状態は問題です。

機能追加や外部サービス変更を行った場合は、ポリシーも更新します。

ローカル保存でも整理する

前々回の記事では、IndexedDBへコメント履歴を保存しました。

このサンプルでは、外部サーバーへコメントを送信しません。

しかし、ブラウザ内には次のデータが残ります。

投稿者名
コメント本文
記録日時

このような場合も、利用者へ次の内容を説明できるようにします。

  • コメント履歴を保存すること
  • 保存先がブラウザ内のIndexedDBであること
  • 外部サーバーへ送信しないこと
  • 拡張機能の削除やブラウザデータの消去で失われる可能性があること
  • 履歴を削除する方法

ローカル保存は、外部送信がないという点で分かりやすい設計です。

ただし、利用者から見ると、何が保存されているかは説明がなければ分かりません。

外部送信がある場合は送信先も書く

外部API、クラウド保存、分析サービスなどを使う場合は、外部送信の内容を整理します。

たとえば、翻訳APIへ選択した文章を送る拡張機能なら、次の項目を説明します。

項目確認する内容
送信するデータ選択した文章
送信先利用する翻訳API
送信目的翻訳結果を取得するため
保存の有無API側または自分のサーバーで保存するか
第三者提供他の目的で提供するか
利用者の操作翻訳ボタンを押したときだけ送信するか

送信先が自分のサーバーではなく、第三者のサービスである場合も説明します。

外部サービス側の規約やプライバシーポリシーも確認します。

最初にデータ棚卸し表を作る

プライバシーポリシーを書き始める前に、拡張機能が扱うデータを一覧にします。

コードを見ながら、保存、送信、表示に関わる処理を確認します。

たとえば、コメント履歴を保存する拡張機能なら、次のように整理できます。

データ取得方法保存先外部送信削除方法
投稿者名対象ページまたは利用者入力IndexedDBなし履歴削除機能
コメント本文対象ページまたは利用者入力IndexedDBなし履歴削除機能
記録日時拡張機能内で生成IndexedDBなし履歴削除機能
ON/OFF設定popupで利用者が選択chrome.storage.localなし設定初期化

外部APIを使う場合は、送信先と目的も追加します。

送信先
送信するタイミング
利用目的
外部サービス側での保存有無

データ棚卸し表があると、書き漏らしを減らせます。

プライバシーポリシーへ書く基本項目

小規模なChrome拡張機能でも、次の項目を整理すると書きやすくなります。

項目書く内容
適用対象どの拡張機能のポリシーか
提供機能拡張機能が何を行うか
取得または保存するデータ設定値、履歴、URL、入力内容など
利用目的なぜそのデータが必要か
保存場所ブラウザ内、開発者サーバー、第三者サービスなど
外部送信送信の有無、送信先、送信目的
第三者提供提供の有無、例外条件
削除方法利用者が削除する方法
保持期間保存期間または削除方針
セキュリティ必要な対策を行うこと
変更ポリシー更新時の扱い
問い合わせ先連絡方法

扱うデータが少ない場合は、簡潔に書けます。

扱うデータや外部連携が増えるほど、説明も具体的にします。

Chrome拡張機能のプライバシーポリシーへ書く基本項目の図解
Chrome拡張機能のプライバシーポリシーへ書く基本項目の図解

ローカル保存だけの場合の構成例

ここでは、コメント履歴をIndexedDBへ保存し、外部送信しない拡張機能を例にします。

次の文章は、そのまま公開する完成版ではありません。

実際の拡張機能名、保存するデータ、削除方法、問い合わせ先に合わせて書き換えるための構成例です。

# プライバシーポリシー

## 1. 適用対象

このプライバシーポリシーは、Chrome拡張機能「○○○○」に適用されます。

## 2. 保存するデータ

本拡張機能は、機能提供のため、次のデータを利用者のブラウザ内へ保存します。

- 投稿者名
- コメント本文
- 記録日時
- 拡張機能の設定値

## 3. 保存場所

コメント履歴はブラウザ内のIndexedDBへ保存します。
設定値はchrome.storage.localへ保存します。

## 4. 外部送信

本拡張機能は、保存したデータを外部サーバーへ送信しません。

## 5. 第三者提供

本拡張機能は、保存したデータを第三者へ提供しません。

## 6. データの削除

利用者は、本拡張機能の履歴削除機能から保存済みデータを削除できます。
また、本拡張機能を削除した場合、ブラウザ内に保存されたデータも削除されることがあります。

## 7. お問い合わせ

お問い合わせは、次の連絡先へお願いします。

連絡先:○○○○

実際には、拡張機能に履歴削除機能があるか確認します。

削除機能が未実装なら、存在するように書いてはいけません。

必要な削除方法を実装してから公開します。

外部APIへ送信する場合の追記例

外部APIへデータを送信する場合は、送信先と目的を具体的にします。

たとえば、利用者が選択した文章を翻訳APIへ送る場合は、次のような項目を追加します。

## 外部サービスへの送信

本拡張機能は、利用者が翻訳機能を実行したときに、選択された文章を翻訳APIへ送信します。

送信するデータ:
- 利用者が選択した文章

送信目的:
- 翻訳結果を取得するため

送信先:
- ○○翻訳API

送信は、利用者が翻訳機能を実行した場合に限ります。

第三者サービスを使う場合は、そのサービス側でデータを保存するかも確認します。

自分の拡張機能で保存していなくても、送信先で保存される場合があります。

プライバシーポリシーを公開する場所

Chrome Web Storeへ登録する場合は、利用者がアクセスできるURLでプライバシーポリシーを公開します。

自分のWebサイトやブログに、プライバシーポリシー専用ページを作る方法があります。

公開ページでは、次の点を確認します。

  • ログインしなくても閲覧できる
  • URLが安定している
  • 拡張機能名が明記されている
  • 問い合わせ先が確認できる
  • 最新の内容へ更新されている
  • スマホでも読める

複数の拡張機能を公開する場合は、拡張機能ごとにデータの扱いを区別できるようにします。

Developer Dashboardの開示と一致させる

プライバシーポリシーを公開したら、Chrome Web StoreのDeveloper Dashboardでもデータの扱いを確認します。

開示内容は、拡張機能の実際の動作とポリシー本文に合わせます。

確認する流れは次の通りです。

  1. 拡張機能が扱うデータを棚卸しする
  2. 保存先と外部送信先を確認する
  3. プライバシーポリシーを書く
  4. 公開URLを用意する
  5. Developer Dashboardでデータ利用を開示する
  6. 実装、開示、ポリシー本文が一致するか確認する
Chrome拡張機能のデータ棚卸しからプライバシーポリシーと開示を一致させる流れの図解
Chrome拡張機能のデータ棚卸しからプライバシーポリシーと開示を一致させる流れの図解

権限とデータ利用を対応させる

前回の記事では、権限と機能の対応表を作りました。

プライバシーポリシーを作るときは、データ利用も追加して確認します。

権限または保存先使用する機能扱うデータ外部送信
storagepopup設定保存ON/OFF設定なし
IndexedDBコメント履歴保存投稿者名、コメント本文、記録日時なし
https://api.example.com/*外部API連携APIへ送る入力値APIへ送信
content_scripts.matchesページ内処理対象ページから取得する情報実装に応じて確認

権限だけを見ても、データの扱いは分かりません。

逆に、ポリシー本文だけを書いても、コードと manifest.json が一致しているかは分かりません。

実装、権限、データ棚卸し表、Developer Dashboard、プライバシーポリシーをまとめて確認します。

よくある注意点

外部送信なしと書く前に通信を確認する

外部APIを使っていなくても、分析ツール、エラー収集、広告、外部画像、CDNなどを追加している場合があります。

コード、依存関係、ネットワーク通信を確認します。

本当に外部送信がない場合だけ、「外部送信なし」と書きます。

必要以上に広い文章にしない

将来追加するかもしれない機能を先回りして書くと、現在の拡張機能が何をするのか分かりにくくなります。

現在の実装に合わせて書きます。

機能追加時に、ポリシーを更新します。

収集と保存を区別する

Webページから一時的に読み取るデータ、ブラウザ内へ保存するデータ、外部サーバーへ送信するデータは分けて整理します。

たとえば、ページタイトルをpopupへ表示するだけなら、履歴として保存しない場合があります。

一方、コメント履歴をIndexedDBへ残すなら、保存するデータとして説明します。

削除方法を実装と一致させる

「利用者が削除できます」と書く場合は、実際に削除方法を用意します。

設定初期化、履歴全件削除、拡張機能削除時の扱いなど、利用者が確認できる形にします。

機能追加時に更新する

次のような変更を行った場合は、プライバシーポリシーを見直します。

  • 外部APIを追加した
  • 分析ツールを追加した
  • 広告を追加した
  • 保存するデータを増やした
  • 保存先を変更した
  • 第三者サービスを変更した
  • 削除方法を変更した

公開前チェックリスト

Chrome Web Storeへ公開する前に、次の項目を確認します。

  • 拡張機能が扱うデータを一覧にしたか
  • 一時的に読むデータと保存するデータを分けたか
  • ブラウザ内の保存先を確認したか
  • 外部送信の有無を確認したか
  • 外部送信がある場合、送信先と目的を書いたか
  • 第三者サービス側での保存有無を確認したか
  • 第三者提供の有無を書いたか
  • 利用者がデータを削除する方法を書いたか
  • 削除方法が実際に利用できるか
  • 問い合わせ先を書いたか
  • ポリシーをログイン不要のURLで公開したか
  • Developer Dashboardの開示と一致しているか
  • manifest.json の権限と説明が一致しているか
  • 機能追加時に更新する運用を決めたか

法的な判断が必要な場合

この記事は、Chrome拡張機能を公開する前にデータの扱いを整理するための技術的な入門です。

個人情報、決済情報、健康情報、認証情報、子どもに関するデータ、業務上の機密情報などを扱う場合は、追加の検討が必要です。

対象地域、提供形態、利用者、扱うデータによって、必要な対応は変わります。

判断が難しい場合は、専門家へ確認します。

参考リンク

まとめ

この記事では、Chrome拡張機能のプライバシーポリシーへ書く項目を整理しました。

最初に、拡張機能が扱うデータを棚卸しします。

一時的に読み取るデータ、ブラウザ内へ保存するデータ、外部サーバーへ送信するデータを分けます。

ローカル保存だけで完結する場合は、保存内容、保存場所、外部送信がないこと、削除方法を説明します。

外部APIを使う場合は、送信するデータ、送信先、利用目的、保存の有無を具体的にします。

最後に、実際の動作、manifest.json の権限、Developer Dashboardでの開示、プライバシーポリシー本文が一致しているかを確認します。

テンプレートをそのまま使わず、自分の拡張機能の実装に合わせて書き換えることが重要です。




Your Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

スポンサードリンク

記事が気に入ったらシェアお願いします

PAGE TOP ↑