permissions と host_permissions の違い

Chrome拡張機能における permissionshost_permissions は、拡張機能が使用できる機能やアクセスできるサイトの範囲を制御するために manifest.json ファイルで設定する項目です。これらは ユーザーのプライバシーとセキュリティを守るために非常に重要な役割を果たします。それぞれの違いを以下に詳しく説明します。


1 permissions(機能権限)

概要

permissions は、拡張機能が Chrome APIや特定の機能を使うために必要な権限を指定します。

主な用途

  • ブラウジング履歴へのアクセス(history

  • ストレージの利用(storage

  • タブ情報の取得・操作(tabs

  • 通知の表示(notifications

  • コンテンツスクリプトによる通信(scripting

記述例

json
"permissions": [ "storage", "tabs", "scripting" ]

特徴

  • Chromeが提供する 機能・API へのアクセス権を定義する。

  • ユーザーに対して 拡張機能のインストール時や権限変更時に明示される

  • host_permissions とは別に定義される。


2 host_permissions(ホスト権限)

概要

host_permissions は、拡張機能が 特定のWebページ(URL)にアクセスするための権限を定義します。

主な用途

  • コンテンツスクリプトが対象ページに挿入される条件を定義

  • fetchXMLHttpRequest を使ったクロスオリジン通信の許可

記述例

json
"host_permissions": [ "https://*.example.com/*", "https://*.google.com/*" ]

特徴

  • ページ単位のアクセス制御を行う。

  • 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