Chrome拡張機能における permissions と host_permissions は、拡張機能が使用できる機能やアクセスできるサイトの範囲を制御するために manifest.json ファイルで設定する項目です。これらは ユーザーのプライバシーとセキュリティを守るために非常に重要な役割を果たします。それぞれの違いを以下に詳しく説明します。
1 permissions(機能権限)
概要
permissions は、拡張機能が Chrome APIや特定の機能を使うために必要な権限を指定します。
主な用途
-
ブラウジング履歴へのアクセス(
history) -
ストレージの利用(
storage) -
タブ情報の取得・操作(
tabs) -
通知の表示(
notifications) -
コンテンツスクリプトによる通信(
scripting)
記述例
特徴
-
Chromeが提供する 機能・API へのアクセス権を定義する。
-
ユーザーに対して 拡張機能のインストール時や権限変更時に明示される。
-
host_permissionsとは別に定義される。
2 host_permissions(ホスト権限)
概要
host_permissions は、拡張機能が 特定のWebページ(URL)にアクセスするための権限を定義します。
主な用途
-
コンテンツスクリプトが対象ページに挿入される条件を定義
-
fetchやXMLHttpRequestを使ったクロスオリジン通信の許可
記述例
特徴
-
ページ単位のアクセス制御を行う。
-
content_scripts.matches とは異なり、JavaScriptからの通信にも適用される。
-
Manifest V3 では、ホスト権限は
permissionsとは別にhost_permissionsとして明示する必要がある。
3 permissions と host_permissions の違いまとめ
| 項目 | permissions | host_permissions |
|---|---|---|
| 用途 | 機能・API へのアクセス許可 | 特定のWebサイトへのアクセス許可 |
| 記述場所 | manifest.json の "permissions" |
manifest.json の "host_permissions" |
| 例 | "tabs", "storage" |
"https://*.example.com/*" |
| 関連API | Chromeの拡張API(chrome.tabsなど) |
ネットワークアクセス、content script 挿入 |
| ユーザー表示 | インストール時に表示される | ユーザーに許可要求されることがある |
補足 Manifest V3 における重要ポイント
-
Manifest V3 では、従来
permissionsに含まれていたURL指定はhost_permissionsに分離されました。 -
これは、ユーザーに対してより明確に「どのサイトにアクセスするか」を伝えるための変更です。
生成日:2025/05/18