Возможность расширения получать доступ к веб-сайтам и большинству API-интерфейсов Chrome определяется его заявленными разрешениями . Разрешения должны быть ограничены только тем, что необходимо для его функциональности. Ограничение разрешений устанавливает возможности расширения и снижает возможное вторжение в данные, если расширение будет скомпрометировано злоумышленником. Защитите расширения и их пользователей, реализовав явные, минимальные и необязательные разрешения.
Организуйте разрешения
Разрешения — это известные строки, которые ссылаются на API Chrome или соответствуют шаблонам , предоставляющим доступ к одному или нескольким хостам. Они перечислены в манифесте и указаны как обязательные разрешения или дополнительные разрешения .
{
  "name": "Permissions Extension",
  ...
  // required permissions
  "permissions": [
    "activeTab",
    "contextMenus",
    "storage"
  ],
  // optional permissions
  "optional_permissions": [
    "topSites",
    "http://www.developer.chrome.com/*"
  ],
      ...
  "manifest_version": 2
}
Ограничьте необходимые разрешения только тем, что необходимо для основных функций расширения. Расширение не должно запрашивать больше разрешений, чем ему необходимо в данный момент; не рассчитывайте на будущее, запрашивая разрешения, которые могут потребоваться при обновлениях.
Разрешения, необходимые для дополнительных функций, должны быть зарегистрированы как дополнительные разрешения . Это позволяет пользователям решать, какой объем доступа они готовы предоставить расширению и какие функции им желательны.
Определите необходимые разрешения
Простому расширению может потребоваться запросить несколько разрешений, и при установке многих разрешений отображаются предупреждения . Пользователи с большей вероятностью будут доверять расширению с ограниченным количеством предупреждений или разъяснением разрешений.

Определите основные функции расширения и какие разрешения для него необходимы. Рассмотрите возможность сделать функции необязательными, если они требуют разрешений с предупреждениями.
Запуск дополнительных разрешений с помощью событий
Основная функциональность образца дополнительного расширения разрешений переопределяет страницу новой вкладки. Одна из функций — отображение цели пользователя на день. Для этой функции требуется только разрешение на хранение , которое не включает предупреждение.

Расширение имеет дополнительную функцию; отображение топ-сайтов пользователя. Для этой функции требуется разрешение topSites , о котором имеется предупреждение.

Разработка функций, которые полагаются на разрешения с предупреждениями как необязательные, и органическое внедрение этих функций дает пользователям возможность без риска познакомиться с расширением. Кроме того, это позволяет пользователям дополнительно настраивать работу с расширением и дает возможность объяснять предупреждения.
Замените разрешение activeTab
 Разрешение activeTab предоставляет временный доступ к сайту, на котором находится пользователь, и позволяет расширению использовать разрешение "tabs" на текущей вкладке. Во многих случаях он заменяет необходимость в "<all_urls>" и не отображает никаких предупреждений при установке.
Без ActiveTab:

С активным табом:

 Разрешение activeTab предоставляет расширению временный доступ к текущей активной вкладке, когда пользователь вызывает расширение. Если расширение скомпрометировано, злоумышленнику придется дождаться, пока пользователь вызовет расширение, прежде чем получить доступ, и этот доступ будет длиться только до тех пор, пока вкладка не будет перемещена или закрыта.
 Хотя для вкладки включено разрешение activeTab , расширение может:
-  Вызовите tabs.executeScriptилиtabs.insertCSSна этой вкладке.
-  Получите URL-адрес, заголовок и значок этой вкладки через API, который возвращает объект tabs.Tab.
- Перехватывайте сетевые запросы на вкладке к источнику основного кадра вкладки с помощью API webRequest . Расширение временно получает разрешения хоста для источника основного фрейма вкладки.
 Следующие пользовательские жесты включают activeTab :
- Выполнение действия браузера
- Выполнение действия на странице
- Выполнение пункта контекстного меню
- Выполнение сочетания клавиш из командного API
- Принятие предложения от API омнибокса
Разрешение доступа
 Если расширению необходимо получить доступ к URL-адресам file:// или работать в режиме инкогнито, пользователям необходимо будет разрешить доступ к этим функциям на странице сведений о расширении по адресу chrome://extensions. 

 Расширение может определить, включено ли оно в режиме инкогнито, вызвав extension.isAllowedIncognitoAccess() или способно запускаться по URL-адресам file:// с extension.isAllowedFileSchemeAccess() . 
Понимание разрешений
 Предупреждения о разрешениях существуют для описания возможностей, предоставляемых API пользователям расширений, но некоторые из этих предупреждений поначалу могут быть неочевидны. Например, добавление разрешения "tabs" приводит к появлению, казалось бы, несвязанного предупреждения: расширение может читать вашу активность в Интернете . Хотя API chrome.tabs можно использовать только для открытия новых вкладок, его также можно использовать для просмотра URL-адреса, связанного с каждой вновь открытой вкладкой, с помощью их объектов tabs.Tab .
По возможности реализуйте дополнительные разрешения или менее мощный API, чтобы избежать тревожных предупреждений.
Просмотр предупреждений
 Предупреждения о разрешениях не будут отображаться, если расширение загружается как распакованный файл. Чтобы просмотреть предупреждения о разрешениях расширения, перейдите по адресу chrome://extensions , убедитесь, что режим разработчика включен, и нажмите PACK EXTENSION . 

Укажите путь к папке расширения в поле «Корневой каталог расширения», затем нажмите кнопку «Упаковать расширение» . Игнорируйте поле «Частный ключ» для первого пакета.

 Chrome создаст два файла: файл .crx и файл .pem , содержащий закрытый ключ расширения. 

 Не потеряйте приватный ключ! Храните файл .pem в секретном и безопасном месте; это будет необходимо для обновления расширения.
 Установите файл .crx , перетащив его на страницу управления расширением Chrome. 

 После удаления файла .crx браузер спросит, можно ли добавить расширение, и отобразит предупреждения. 

Разрешения с предупреждениями
 Примечание. Таблицы разрешений обновляются по мере возможности и могут содержать небольшие расхождения с текущими предупреждениями. Кроме того, некоторые разрешения могут не отображать предупреждения в сочетании с другими разрешениями. Например, предупреждение "tabs" не будет отображаться, если расширение также запрашивает "<all_urls>" . Чтобы проверить последние предупреждения, отображаемые для разрешений расширения, выполните действия, описанные в разделе «Просмотр предупреждений» .
| Разрешение | Описание | Предупреждение | 
|---|---|---|
| 
 | Предоставляет расширению доступ ко всем хостам. Возможно, можно избежать объявления каких-либо разрешений хоста, используя разрешение activeTab . | Прочитайте и измените все свои данные на веб-сайтах, которые вы посещаете. | 
| "https://HostName.com/" | Предоставляет расширению доступ к "https://HostName.com/". Возможно, можно избежать объявления каких-либо разрешений хоста, используя разрешение activeTab . | Прочитайте и измените свои данные на HostName.com | 
| "bookmarks" | Предоставляет вашему расширению доступ к API chrome.bookmarks . | Читайте и меняйте закладки | 
| "clipboardRead" | Требуется, если расширение использует document.execCommand('paste'). | Чтение данных, которые вы копируете и вставляете | 
| "clipboardWrite" | Указывает, что расширение использует document.execCommand('copy')илиdocument.execCommand('cut'). | Измените данные, которые вы копируете и вставляете | 
| "contentSettings" | Предоставляет вашему расширению доступ к API chrome.contentSettings . | Измените настройки, которые контролируют доступ веб-сайтов к таким функциям, как файлы cookie, JavaScript, плагины, геолокация, микрофон, камера и т. д. | 
| "debugger" | Предоставляет вашему расширению доступ к API chrome.debugger . | 
 | 
| "declarativeNetRequest" | Предоставляет вашему расширению доступ к API chrome.declarativeNetRequest . | Заблокировать содержимое страницы | 
| "desktopCapture" | Предоставляет вашему расширению доступ к API chrome.desktopCapture . | Захват содержимого вашего экрана | 
| "downloads" | Предоставляет вашему расширению доступ к API chrome.downloads . | Управляйте своими загрузками | 
| "geolocation" | Позволяет расширению использовать API геолокации HTML5 без запроса разрешения у пользователя. | Определите свое физическое местоположение | 
| "history" | Предоставляет вашему расширению доступ к API chrome.history . | Чтение и изменение истории просмотров | 
| "management" | Предоставляет расширению доступ к API chrome.management . | Управляйте своими приложениями, расширениями и темами | 
| "nativeMessaging" | Предоставляет расширению доступ к собственному API обмена сообщениями . | Общайтесь с сотрудничающими собственными приложениями | 
| "notifications" | Предоставляет вашему расширению доступ к API chrome.notifications . | Отображать уведомления | 
| "pageCapture" | Предоставляет расширению доступ к API chrome.pageCapture . | Прочитайте и измените все свои данные на веб-сайтах, которые вы посещаете. | 
| "privacy" | Предоставляет расширению доступ к API chrome.privacy . | Измените настройки конфиденциальности | 
| "proxy" | Предоставляет расширению доступ к API chrome.proxy . | Прочитайте и измените все свои данные на веб-сайтах, которые вы посещаете. | 
| "system.storage" | Предоставляет расширению доступ к API chrome.system.storage . | Определить и извлечь устройства хранения данных | 
| "tabCapture" | Предоставляет расширениям доступ к API chrome.tabCapture . | Прочитайте и измените все свои данные на веб-сайтах, которые вы посещаете. | 
| "tabs" | Предоставляет расширению доступ к привилегированным полям объектов Tab, используемых несколькими API, включая chrome.tabs и chrome.windows . Во многих случаях расширению не нужно будет объявлять разрешение"tabs"для использования этих API. | Прочитайте историю посещений | 
| "topSites" | Предоставляет расширению доступ к API chrome.topSites . | Прочитайте список наиболее часто посещаемых вами веб-сайтов. | 
| "ttsEngine" | Предоставляет расширению доступ к API chrome.ttsEngine . | Прочитайте весь текст, произнесенный с использованием синтезированной речи. | 
| "webNavigation" | Предоставляет расширению доступ к API chrome.webNavigation . | Прочитайте историю посещений | 
Обновить разрешения
Обновление расширения с дополнительными разрешениями может временно отключить его. Пользователю придется повторно включить его после согласия со всеми новыми предупреждениями.
Если пользователь вручную обновит расширение, которое теперь включает разрешение вкладок , он получит предупреждение на странице управления.

Если расширение обновляется автоматически, оно будет отключено до тех пор, пока пользователь не согласится с новыми разрешениями.


 Этого можно избежать, сделав новую функцию необязательной и добавив новые обновления разрешений для optional_permissions в манифесте .