blob: 097d3a410231813c58b1b647d6f803c80e7e1367 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
|
---
title: permissions
slug: Mozilla/Add-ons/WebExtensions/manifest.json/permissions
tags:
- Add-ons
- Extensions
- WebExtensions
translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/permissions
---
<div>{{AddonSidebar}}</div>
<table class="fullwidth-table standard-table">
<tbody>
<tr>
<th scope="row" style="width: 50%;"><strong>型</strong></th>
<td><code>Array</code></td>
</tr>
<tr>
<th scope="row"><strong>必須項目か?</strong></th>
<td>いいえ</td>
</tr>
<tr>
<th scope="row"><strong>例</strong></th>
<td>
<pre class="brush: json no-line-numbers">
"permissions": [
"*://developer.mozilla.org/*",
"webRequest"
]</pre>
</td>
</tr>
</tbody>
</table>
<p>拡張機能が特別な権限を必要とする際には <code>permission</code> キーを使用します。このキーには文字列の配列を指定し、各文字列がパーミッションを要求します。</p>
<p>このキーを用いてパーミッションを要求した場合、ブラウザーはインストール時に「この拡張機能はこれだけの特権を要求しています」と通知し、これらの特権を許可しても大丈夫かとユーザーに確認します。ブラウザーはまた、インストール後にユーザーがアドオンの特権を調査することも許可します。</p>
<p>キーには以下の 3 種類があります。</p>
<ul>
<li>host パーミッション</li>
<li>API パーミッション</li>
<li>activeTab パーミッション</li>
</ul>
<p>{{英語版章題("Host permissions")}}</p>
<h2 id="host_パーミッション">host パーミッション</h2>
<p>host パーミッションは<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">マッチパターン</a>として指定します。それぞれのパターンによって、アドオンの要求する権限が有効となる URL の範囲を指定します。host パーミッションの例は <code>"*://developer.mozilla.org/*"</code> のようなものです。</p>
<p>この権限には以下が含まれます。</p>
<ul>
<li>そのオリジンに対して、クロス-オリジン制約なしに <a href="https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest">XMLHttpRequest</a> アクセス、 <a href="https://developer.mozilla.org/ja/docs/Web/API/Fetch_API">fetch</a> アクセスができる権限(コンテンツスクリプトからのリクエストによるものも含みます)</li>
<li>そのオリジンによるページに(<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">tabs.executeScript</a> を用いて)スクリプトをプログラム的に挿入できる権限</li>
<li><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a> API を用いて、そのホストからのイベントを受信できる権限</li>
<li><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/cookies">cookies</a> API を用いて、そのホストの Cookie にアクセスできる権限("cookies" API のパーミッションが指定されている場合)</li>
<li>ホスト名が完全修飾ドメインであり、ワイルドカードを含まない場合にトラッキング防止を回避。<code><all_urls></code> については除外。</li>
</ul>
<p>Firefox では バージョン 56 以降で拡張機能は自動的に自身をオリジンとする host パーミッションを次の形式で取得します:</p>
<pre><code>moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/</code></pre>
<p>ここで <code>60a20a9b-1ad4-af49-9b6c-c64c98c37920</code> は拡張機能の内部 ID です。拡張機能は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/extension/getURL">extension.getURL()</a> を呼び出すことでこの URL を取得できます:</p>
<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>extension<span class="punctuation token">.</span><span class="function token">getURL</span><span class="punctuation token">(</span><span class="string token">""</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
<span class="comment token">// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/</span></code></pre>
<p>{{英語版章題("API permissions")}}</p>
<h2 id="API_パーミッション">API パーミッション</h2>
<p>API パーミッションには、拡張機能から使用したい WebExtension API の名前をキーワードとして指定します。</p>
<p>現時点で使用できるキーワードは以下の通りです。</p>
<ul>
<li><code>activeTab</code></li>
<li><code>alarms</code></li>
<li><code>background</code></li>
<li><code>bookmarks</code></li>
<li><code>browserSettings</code></li>
<li><code>browsingData</code></li>
<li><code>contentSettings</code></li>
<li><code>contextMenus</code></li>
<li><code>contextualIdentities</code></li>
<li><code>cookies</code></li>
<li><code>debugger</code></li>
<li><code>downloads</code></li>
<li><code>downloads.open</code></li>
<li><code>find</code></li>
<li><code>geolocation</code></li>
<li><code>history</code></li>
<li><code>identity</code></li>
<li><code>idle</code></li>
<li><code>management</code></li>
<li><code>menus</code></li>
<li><code>nativeMessaging</code></li>
<li><code>notifications</code></li>
<li><code>pageCapture</code></li>
<li><code>pkcs11</code></li>
<li><code>privacy</code></li>
<li><code>proxy</code></li>
<li><code>sessions</code></li>
<li><code>storage</code></li>
<li><code>tabs</code></li>
<li><code>theme</code></li>
<li><code>topSites</code></li>
<li><code>webNavigation</code></li>
<li><code>webRequest</code></li>
<li><code>webRequestBlocking</code></li>
</ul>
<p>ほとんどの場合、パーミッションはその API へのアクセス権を付与するだけですが、以下のような例外があります。</p>
<ul>
<li><code>tabs</code> パーミッションを指定した場合、<a href="/ja/Add-ons/WebExtensions/API/tabs">特別な <code>tabs</code> API のパーツ</a> (<code>Tab.url</code> / <code>Tab.title</code> / <code>Tab.faviconUrl</code>)にアクセスすることが許可されます。 Firefox では、<code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">tabs.query()</a></code> の <code>queryInfo</code> パラメーターに <code>url</code> を入れるのにも <code>tabs</code> が必要です。他の <code>tabs</code> API についてはパーミッションの要求なしで使用できます。</li>
<li><code>webRequestBlocking</code> パーミッションを指定した場合、"blocking" 引数の使用が許可されます。これによって<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/WebRequest">リクエストの変更やキャンセル</a>が可能となります。</li>
<li><code>downloads.open</code> パーミッションを指定した場合、{{WebExtAPIRef("downloads.open()")}} API の利用が許可されます。</li>
</ul>
<p>{{英語版章題("activeTab permission")}}</p>
<h2 id="activeTab_パーミッション">activeTab パーミッション</h2>
<p>このパーミッションは <code>"activeTab"</code> と指定されます。拡張機能が <code>activeTab</code> パーミッションを持つなら、ユーザーが拡張機能と相互作用する時に、拡張機能はアクティブなタブ限定の特別な権限が許可されます。</p>
<p>"ユーザーの相互作用" とは次のようなものです:</p>
<ul>
<li>ブラウザーアクションやページアクションをクリック</li>
<li>コンテキストメニュー項目を選択</li>
<li>拡張機能によって定義されたキーボードショートカットをアクティベート</li>
</ul>
<p>特別な権限とは:</p>
<ul>
<li><code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/tabs/executeScript">chrome.tabs.executeScript</a></code> と <code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/tabs/insertCSS">chrome.tabs.insertCSS</a></code> を用いてタブに JavaScript や CSS をプログラム的に挿入できる能力</li>
<li>現在のタブに、次の一部の tabs API の権限アクセス: <code>Tab.url</code>, <code>Tab.title</code>, <code>Tab.faviconUrl</code>.</li>
</ul>
<p>このパーミッションの意図は、拡張機能によくあるユースケースを、強力すぎるパーミッションを与えずに実行できるようにすることです。多くの拡張機能は「ユーザーが希望したら現在のページで何かをする」ことを希望しています。例えば、ユーザーがブラウザーアクションをクリックした時に現在のページでスクリプトを実行する拡張機能を考えます。<code>activeTab</code> パーミッションがない場合、拡張機能は <code><all_urls></code> の host パーミッションを要求する必要があります。しかし、これは拡張機能に必要以上の力を与えています: アクティブなタブで単にユーザーアクションに応答する代わりに、いかなるタブで、いかなるタイミングで、スクリプトを実行できます。</p>
<p>{{英語版章題("Clipboard access")}}</p>
<h2 id="Clipboard_access" name="Clipboard_access">クリップボードのアクセス</h2>
<p>拡張機能にクリップボードとやりとりできるようにする、2つの権限があります:</p>
<ul>
<li><code>clipboardWrite</code>: <code>document.execCommand("copy")</code> か <code>document.execCommand("cut")</code> を使ったクリップボードの書き込み</li>
<li><code>clipboardRead</code>: <code>document.execCommand("paste")</code> を使ったクリップボードの読み込み</li>
</ul>
<p>これについての詳細は<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard">クリップボードと相互作用する</a>を見てください。</p>
<h2 id="Unlimited_storage" name="Unlimited_storage">Unlimited storage</h2>
<p><code>unlimitedStorage</code> パーミッションは:</p>
<ul>
<li>拡張機能に {{WebExtAPIRef("storage.local")}} API で制限する容量を超えられるようにする</li>
<li>Firefox では<a href="/ja/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria#Firefox_specifics">「永続的な」IndexedDB データベース</a>の作成を、データベース作成時にブラウザーからユーザーに許可を確認することなく、可能にする</li>
</ul>
<p>{{英語版章題("Example")}}</p>
<h2 id="例">例</h2>
<pre class="brush: json"> "permissions": ["*://developer.mozilla.org/*"]</pre>
<p>これは developer.mozilla.org ドメイン配下のページにアクセスする権限を要求しています。</p>
<pre class="brush: json"> "permissions": ["tabs"]</pre>
<p><code>tabs</code> API を使用する権限を要求しています。</p>
<pre class="brush: json"> "permissions": ["*://developer.mozilla.org/*", "tabs"]</pre>
<p>上記の権限を両方ともに要求しています。</p>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
<p>{{Compat("webextensions.manifest.permissions")}}</p>
|