権限を宣言する

ほとんどの 拡張機能 API と機能を使用するには、マニフェストの権限フィールドで拡張機能のインテントを宣言する必要があります。拡張機能は、それぞれのマニフェスト キーを使用して指定された、次のカテゴリの権限をリクエストできます。

"permissions"
既知の文字列のリストの項目が含まれます。変更すると警告が表示されることがあります。
"optional_permissions"
インストール時ではなく、実行時にユーザーによって付与されます。
"content_scripts.matches"
コンテンツ スクリプトが 1 つ以上のホストに挿入できるようにする 1 つ以上の一致パターンが含まれます。変更すると警告が表示されることがあります。
"host_permissions"
1 つ以上のホストへのアクセスを許可する 1 つ以上の一致パターンが含まれます。変更すると警告が表示されることがあります。
"optional_host_permissions"
インストール時ではなく、実行時にユーザーによって付与されます。

権限は、拡張機能がマルウェアによって侵害された場合の被害を抑えるのに役立ちます。一部の権限の警告は、 インストール前または実行時にユーザーの同意を得るために表示されます。詳しくは、警告付きの権限をご覧ください。

拡張機能の機能で許可されている場合は、オプションの権限を使用することを検討してください。これにより、リソースとデータへのアクセスをユーザーが適切に管理できるようになります。

API に権限が必要な場合は、そのドキュメントで権限の宣言方法について説明しています。例については、Storage API をご覧ください。

マニフェスト

マニフェスト ファイルの権限セクションの例を次に示します。

manifest.json:

{
  "name": "Permissions Extension",
  ...
  "permissions": [
    "activeTab",
    "contextMenus",
    "storage"
  ],
  "optional_permissions": [
    "topSites",
  ],
  "host_permissions": [
    "https://www.developer.chrome.com/*"
  ],
  "optional_host_permissions":[
    "https://*/*",
    "http://*/*"
  ],
  ...
  "manifest_version": 3
}

ホスト権限

ホスト権限を使用すると、拡張機能は URL の 一致パターン を操作できます。一部の Chrome API では、API 固有の権限に加えてホスト権限が必要です。これについては、各リファレンス ページに記載されています。次に例を示します。

警告付きの権限

拡張機能が複数の権限をリクエストし、その多くがインストール時に警告を表示する場合、ユーザーには次のような警告のリストが表示されます。

インストール時の拡張機能の権限に関する警告

ユーザーは、警告が少ない拡張機能や、権限について説明されている拡張機能を信頼する傾向があります。警告が多すぎないように、オプションの権限や、より強力でない API の実装を検討してください。警告に関するベスト プラクティスについては、権限の警告に関するガイドラインをご覧ください。具体的な警告は、権限のリファレンス リストで、適用される権限とともに記載されています。

マニフェスト ファイルの "host_permissions" フィールドと "content_scripts.matches" フィールドで一致パターンを追加または変更した場合も、警告が表示されます。詳しくは、 権限の更新をご覧ください。

アクセスを許可

拡張機能を file:// URL で実行する必要がある場合や、シークレット モードで動作させる必要がある場合は、詳細ページで拡張機能へのアクセスを許可する必要があります。詳細ページを開く手順については、拡張機能を管理するをご覧ください。

ファイルの URL とシークレット ページへのアクセスを許可する

  1. Chrome で拡張機能アイコンを右クリックします。
  2. [拡張機能を管理] を選択します。

    拡張機能のコンテキスト メニュー
    [Extension menu]
  3. 下にスクロールして、ファイルの URL またはシークレット モードへのアクセスを有効にします。

    拡張機能の詳細ページでファイル URL とシークレット モードを許可する
    ファイルの URL とシークレット モードへのアクセスが有効になっています。

ユーザーがアクセスを許可したかどうかを検出するには、extension.isAllowedIncognitoAccess() または extension.isAllowedFileSchemeAccess() を呼び出します。