企业版 Chrome 扩展程序商店
这是供企业使用的私有 Chrome 扩展商店的概念验证。
这仅在Linux上使用Chromium进行了测试,但对于连接到 Active Directory 域的计算机,同样的原则也应适用于 Windows。
注意:“对于未加入 Microsoft® Active Directory® 域的 Windows 实例,强制安装仅限于 Chrome Web Store 中列出的应用程序和扩展程序。”
将整个项目下载到本地文件夹。
运行npm install
来设置软件包。
运行sudo npm run first-run
在/etc/chromium/policies/managed/
中创建策略文件
(如果您的 Chromium 实例使用不同的文件夹,您可能需要编辑make/SETTINGS.js
)
运行npm start
构建扩展并启动一个简单的 Web 服务器,提供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 上托管一个轻量级 Web 服务器,从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://components。)
以下是所有已知的 API 以及它们是否在 Windows 中可用:
允许 | 在 Windows 上的企业扩展中可用 |
---|---|
辅助功能.修改 | 是的 |
accessibilityFeatures.read | 是的 |
可访问性私人 | 不 |
活动标签 | 是的 |
活动日志私有 | 不 |
自动填充助理私人 | 不 |
自动填充私人 | 不 |
自动测试私人 | 不 |
背景 | 是的 |
书签 | 是的 |
盲文显示私人 | 不 |
浏览数据 | 是的 |
证书提供者 | 不 |
chromePrivate | 不 |
chromeosInfoPrivate 信息 | 不 |
剪贴板读取 | 是的 |
剪贴板写 | 是的 |
命令行私有 | 不 |
命令.辅助功能 | 不 |
内容设置 | 是的 |
上下文菜单 | 是的 |
曲奇饼 | 是的 |
崩溃报告私人 | 不 |
cryptotoken私人 | 不 |
调试器 | 是的 |
开发商私人 | 不 |
开发工具 | 是的 |
声明性内容 | 是的 |
桌面捕捉 | 是的 |
桌面捕捉私人 | 有,但是没用 |
文件扫描 | 不 |
下载 | 是的 |
下载.open | 是的 |
下载.架子 | 是的 |
enterprise.deviceAttributes | 不 |
enterprise.networking属性 | 不 |
企业硬件平台 | 是的 |
enterprise.platformKeys | 不 |
enterprise.platformKeysPrivate | 不 |
enterprise.reportingPrivate | 不 |
实验性的 | 有,但是没用 |
文件浏览器处理程序 | 不 |
文件管理器私有 | 不 |
文件系统提供者 | 不 |
字体设置 | 是的 |
气相色谱法 | 是的 |
地理定位 | 是的 |
历史 | 是的 |
身份 | 是的 |
身份.电子邮件 | 是的 |
身份私人 | 不 |
idl测试 | 有,但是没用 |
imageWriter私人 | 不 |
输入 | 是(不是 Mac) |
输入法私有 | 不 |
语言设置私人 | 不 |
启动器搜索提供者 | 不 |
锁定窗口全屏私人 | 不 |
登录 | 不 |
登录屏幕存储 | 不 |
登录界面 | 不 |
登录状态 | 不 |
网络摄像头私人 | 不 |
网络.castPrivate | 不 |
管理 | 是的 |
媒体播放器私有 | 不 |
媒体路由器专用 | 不 |
域名服务器 | 不 |
通知 | 是的 |
回声私人 | 不 |
页面捕获 | 是的 |
密码私人 | 不 |
平台密钥 | 不 |
插件 | 是的 - TODO 这是什么? |
印刷 | 不 |
印刷指标 | 不 |
隐私 | 是的 |
流程 | 不 |
代理人 | 是的 |
资源私有 | 不 |
rtc私有 | 不 |
安全浏览私人 | 不 |
脚本编写 | 是(立方米) |
搜索 | 是的 |
会议 | 是的 |
设置私人 | 不 |
登录设备 | 否(也许将来) |
系统私有 | 不 |
选项卡组 | 是(立方米) |
选项卡 | 是的 |
标签捕获 | 是的 |
终端私人 | 不 |
热门网站 | 是的 |
瞬态背景 | 否(也许将来) |
语音合成 | 是的 |
tts引擎 | 是的 |
用户私人 | 不 |
墙纸 | 不 |
壁纸私人 | 不 |
网络导航 | 是的 |
webrtcAudio私有 | 不 |
webrtcDesktopCapturePrivate | 不 |
webrtcLogging私有 | 不 |
webrtcLoggingPrivate.audioDebug | 不 |
网上商店私人 | 不 |
文件结束。