拡張機能がプライバシーを侵害したり、必要と思われる以上の権限をリクエストしたりすると、ユーザーはインストールしなくなります。権限のリクエストはユーザーにとって理にかなったものでなければならず、またリクエストの対象とする情報は、拡張機能の実装に不可欠なものに限定する必要があります。ユーザーデータを収集または送信する拡張機能は、ユーザーのプライバシー保護に関するポリシーを遵守する必要があります。
拡張機能のユーザーを保護し、尊重するために、ユーザーの身元を安全に保つための注意事項を記載してください。
必要な権限を減らす
拡張機能がアクセスできる API は、permissions フィールドの manifest で指定します。付与される権限が多いほど、攻撃者が情報を傍受する手段が増えます。拡張機能が依存する API のみをリストし、侵襲性の低いオプションを検討する必要があります。拡張機能がリクエストする権限が少ないほど、ユーザーに表示される権限に関する警告が少なくなります。警告が少ない拡張機能ほど、ユーザーにインストールしてもらえる可能性が高くなります。
拡張機能は、現時点では必要ないものの、将来実装する可能性のある権限をリクエストして、ユーザーデータへのアクセスを「将来に備える」べきではありません。拡張機能のアップデートで新しい権限を追加する場合は、それらをオプションにすることを検討してください。
activeTab
ホスト権限を使用してスクリプトを挿入する拡張機能では、多くの場合、代わりに activeTab を使用できます。activeTab 権限により、ユーザーが拡張機能を呼び出した場合にのみ、現在アクティブなタブに一時的にアクセスできます。 ユーザーが現在のタブから移動したり、閉じたりすると、アクセスは遮断されます。これは、<all_urls> の多くの用途の代替となります。
{
"name": "Very Secure Extension",
"version": "1.0",
"description": "Example of a Secure Extension",
"permissions": ["activeTab"],
"manifest_version": 3
}
activeTab 権限では、インストール中に警告メッセージは表示されません。
オプションの権限を選択する
オプションの権限を含めることで、ユーザーは拡張機能に必要な機能と権限を選択できます。拡張機能のコア機能に不可欠でない機能は、オプションにして、API またはドメインを optional_permissions フィールドに移動します。
{
"name": "Very Secure Extension",
...
"optional_permissions": [ "tabs", ],
"optional_host_permissions": ["https://www.google.com/" ],
...
}
オプションの権限を含めることで、ユーザーが関連機能を有効にしたときに、拡張機能が特定の権限を必要とする理由を説明できます。拡張機能では、機能を有効にするオプションをユーザーに提供できます。

[OK] をクリックすると、Service Worker で次のイベントがトリガーされます。
chrome.action.onClicked.addListener((event) => {
// Permissions must be requested from inside a user gesture, like a button's
// click handler.
chrome.permissions.request(
{
permissions: ["tabs", "scripting"],
origins: ['https://www.google.com/']
},
function (granted) {
// The callback argument will be true if the user granted the permissions.
if (granted) {
// doSomething();
} else {
// doSomethingElse();
}
}
);
});
ユーザーには次のリクエストが表示されます。

オプションの権限は、拡張機能のアップデートで実装することもできます。これにより、新しい必須権限で更新した場合に発生する可能性があるように、拡張機能を無効にすることなく、ユーザーが新しい機能を利用できるようになります。
ユーザー情報を制限して保護する
拡張機能に必要な最小限のデータのみをリクエストします。拡張機能がユーザーに求める情報が少ないほど、拡張機能が侵害された場合のリスクが軽減されます。
リクエストされたユーザーデータはすべて慎重に扱う必要があります。登録済みドメインを持つ安全なサーバーにデータを保存して取得します。常に HTTPS を使用して接続し、拡張機能のストレージは暗号化されていないため、拡張機能のクライアント側に機密性の高いユーザーデータを保存しないでください。
データの保存とシークレット モード
拡張機能は、Storage API を使用してデータを保存したり、サーバー リクエストを行ってデータを保存したりできます。拡張機能で何かを保存する必要がある場合は、まずシークレット ウィンドウから保存するかどうかを検討します。デフォルトでは、拡張機能はシークレット ウィンドウでは実行されません。
シークレット モードでは、ウィンドウに履歴が残らないことが保証されます。 シークレット ウィンドウのデータを扱う場合、拡張機能はこの保証を尊重する必要があります。拡張機能が通常閲覧履歴を保存する場合は、シークレット ウィンドウの履歴を保存しないでください。ただし、拡張機能は、シークレット ウィンドウかどうかに関係なく、どのウィンドウからでも設定の優先順位を保存できます。
ウィンドウがシークレット モードかどうかを検出するには、関連する
tabs.Tabまたはwindows.Windowオブジェクトのincognitoプロパティを確認します。
function saveTabData(tab) {
if (tab.incognito) {
return;
} else {
chrome.storage.local.set({data: tab.url});
}
}