Магазин расширений Chrome для предприятий
Это доказательство концепции частного магазина расширений Chrome для корпоративного использования.
Это было протестировано только с Chromium в Linux , но те же принципы должны применяться и в Windows для компьютеров, подключенных к домену Active Directory.
Примечание. «Для экземпляров Windows, которые не присоединены к домену Microsoft® Active Directory®, принудительная установка ограничивается приложениями и расширениями, перечисленными в Интернет-магазине Chrome».
Загрузите весь проект в локальную папку.
Запустите npm install
чтобы настроить пакеты.
Запустите sudo npm run first-run
, чтобы создать файл политики в /etc/chromium/policies/managed/
(Возможно, вам придется отредактировать make/SETTINGS.js
, если ваш экземпляр Chromium использует другую папку)
Запустите npm start
для сборки расширений и запустите простой веб-сервер, обслуживающий папку dist/
.
Запуск sudo npm run first-run
создаст пустой файл политики в /etc/chromium/policies/managed/crx-store-policy.json
с разрешениями 777 (чтение/запись для всех пользователей).
Этот файл будет заполнен командой npm start
ниже.
Запуск npm start
скопирует из make/crx-store-policy.json
в /etc/chromium/policies/managed/crx-store-policy.json
содержащий следующие политики:
Если это не сработает, возможно, вам придется отредактировать make/SETTINGS.js
, чтобы изменить целевую папку на одну из следующих:
Chrome не будет устанавливать расширения, если они не:
Кроме того, если для политики ExtensionInstallBlocklist установлено значение «*»:
(В более старой документации упоминаются имена политик ExtensionInstallBlacklist и ExtensionInstallWhitelist.)
Запуск npm start
создаст два примера расширения в src/extensions/
и скопирует их в dist/
При запуске npm start
на порту 5000 будет размещен облегченный веб-сервер, обслуживающий файлы из dist/
:
Дополнительную функциональность можно разблокировать, запустив Chrome со специальными флагами командной строки. Однако это нереалистичный сценарий для большинства корпоративных пользователей.
Чтобы внести изменения в примеры расширений в src/extensions/
:
manifest.json
npm start
, чтобы восстановить файлыbinary.crx. Код в make/
использует модули ES, а не CommonJS.
В Linux нет реестра, поэтому в этом проекте вместо него используется файл политики.
В Windows вам придется использовать групповую политику Active Directory.
Инструкции для этого широко доступны в Интернете.
Чтобы принудительно установить расширение, создайте этот раздел реестра и дочернее значение:
Чтобы включить хранилище пользовательских расширений, создайте этот раздел реестра и дочернее значение:
Чтобы включить инструменты разработчика для принудительно установленных расширений (удалите это в рабочей среде):
Чтобы включить API Enterprise.hardwarePlatform:
http://gromnitsky.blogspot.com/2019/04/crx3.html
(автор crx3-utils)
https://blog.janestreet.com/chrome-extensions-finding-the-missing-proof/
См. здесь: https://sites.google.com/site/lock5stat/offline-use/installing-for-all-users.
Расширение, установленное принудительно, может получить доступ к некоторым дополнительным ограниченным API. На практике единственным дополнительным API, который представляет интерес, является enterprise.hardwarePlatform
.
Получено из https://github.com/chromium/chromium/blob/master/chrome/common/extensions/api/_permission_features.json.
Chrome поставляется с широким спектром API расширений. Многие из них ограничены ChromeOS и/или собственными расширениями Google и/или только компонентами. (Компоненты — это другой способ расширения функциональности браузера; они зарезервированы только для разработчиков Chrome. Дополнительную информацию см. в разделе chrome://comComponents.)
Вот все известные API и доступны ли они в Windows:
Разрешение | Доступно в расширении Enterprise для Windows. |
---|---|
accessibilityFeatures.modify | Да |
AccessibilityFeatures.read | Да |
доступностьЧастный | Нет |
активная вкладка | Да |
ActivityLogPrivate | Нет |
autofillAssistantЧастный | Нет |
автозаполнениеЧастный | Нет |
autotestЧастный | Нет |
фон | Да |
закладки | Да |
шрифт БрайляДисплейЧастный | Нет |
просмотр данных | Да |
поставщик сертификата | Нет |
chromeЧастный | Нет |
chromeosИнформацияЧастный | Нет |
буфер обменаЧитать | Да |
буфер обменаЗаписать | Да |
CommandLinePrivate | Нет |
команды.доступность | Нет |
настройки контента | Да |
контекстМеню | Да |
печенье | Да |
аварияОтчетЧастный | Нет |
криптотокенЧастный | Нет |
отладчик | Да |
разработчикЧастный | Нет |
инструменты разработчика | Да |
декларативный контент | Да |
рабочий столCapture | Да |
рабочий столCaptureЧастный | Да, но бесполезно |
DocumentScan | Нет |
загрузки | Да |
загрузки.открыть | Да |
загрузки.полка | Да |
предприятие.deviceAttributes | Нет |
предприятие.networkingAttributes | Нет |
предприятие.аппаратное обеспечениеПлатформа | Да |
Enterprise.platformKeys | Нет |
Enterprise.platformKeysPrivate | Нет |
Enterprise.reportingЧастный | Нет |
экспериментальный | Да, но бесполезно |
обработчик файлабраузера | Нет |
fileManagerЧастный | Нет |
файлсистемпровидер | Нет |
Настройки шрифта | Да |
гкм | Да |
геолокация | Да |
история | Да |
личность | Да |
личность.электронная почта | Да |
личностьЧастный | Нет |
idltest | Да, но бесполезно |
imageПисательЧастный | Нет |
вход | Да (не Mac) |
inputMethodPrivate | Нет |
языкНастройкиЧастный | Нет |
пусковая установкаSearchProvider | Нет |
блокировкаОкноПолноэкранныйЧастный | Нет |
авторизоваться | Нет |
логинЭкранХранилище | Нет |
ЛогинЭкранUI | Нет |
состояние входа | Нет |
веб-камераЧастный | Нет |
networking.castPrivate | Нет |
управление | Да |
mediaPlayerЧастный | Нет |
медиаМаршрутизаторЧастный | Нет |
МДНС | Нет |
уведомления | Да |
echoPrivate | Нет |
страницаЗахват | Да |
паролиЧастный | Нет |
ПлатформаКлючи | Нет |
плагин | Да - TODO, что это? |
печать | Нет |
печатьМетрики | Нет |
конфиденциальность | Да |
процессы | Нет |
прокси | Да |
ресурсыЧастный | Нет |
rtcЧастный | Нет |
безопасныйПросмотрЧастный | Нет |
сценарии | Да (м3) |
поиск | Да |
сессии | Да |
настройкиЧастный | Нет |
подписано в устройствах | Нет (возможно, в будущем) |
системаЧастный | Нет |
tabGroups | Да (м3) |
вкладки | Да |
вкладкаЗахват | Да |
терминалЧастный | Нет |
топСайты | Да |
переходный фон | Нет (возможно, в будущем) |
ТТС | Да |
ttsEngine | Да |
пользователиЧастный | Нет |
обои | Нет |
фотоЧастное | Нет |
веб-навигация | Да |
webrtcАудиоЧастный | Нет |
webrtcDesktopCaptureЧастный | Нет |
webrtcLoggingЧастный | Нет |
webrtcLoggingPrivate.audioDebug | Нет |
интернет-магазинЧастный | Нет |
Конец файла.