Tienda de extensiones de Chrome para empresas
Esta es una prueba de concepto de una Chrome Extension Store privada para uso empresarial.
Esto solo se ha probado con Chromium en Linux , pero los mismos principios deberían aplicarse en Windows para máquinas conectadas a un dominio de Active Directory.
Nota: "Para instancias de Windows que no están unidas a un dominio de Microsoft® Active Directory®, la instalación forzada se limita a las aplicaciones y extensiones enumeradas en Chrome Web Store".
Descargue el proyecto completo a una carpeta local.
Ejecute npm install
para configurar los paquetes.
Ejecute sudo npm run first-run
para crear el archivo de política en /etc/chromium/policies/managed/
(Es posible que necesites editar make/SETTINGS.js
si tu instancia de Chromium usa una carpeta diferente)
Ejecute npm start
para crear las extensiones e inicie un servidor web simple, sirviendo la carpeta dist/
.
Al ejecutar sudo npm run first-run
se creará un archivo de política en blanco en /etc/chromium/policies/managed/crx-store-policy.json
con permisos 777 (lectura/escritura para todos los usuarios).
Este archivo se completará con npm start
a continuación.
Ejecutando npm start
copiará de make/crx-store-policy.json
a /etc/chromium/policies/managed/crx-store-policy.json
que contiene las siguientes políticas:
Si no funciona, es posible que tengas que editar make/SETTINGS.js
para cambiar la carpeta de destino a una de las siguientes:
Chrome no instalará extensiones a menos que sean:
Además, si la política ExtensionInstallBlocklist está establecida en "*":
(La documentación anterior hace referencia a los nombres de políticas ExtensionInstallBlacklist y ExtensionInstallWhitelist).
Al ejecutar npm start
se crearán dos extensiones de muestra en src/extensions/
y se copiarán en dist/
La ejecución de npm start
alojará un servidor web liviano en el puerto 5000, que servirá archivos desde dist/
:
Se pueden desbloquear funciones adicionales iniciando Chrome con indicadores especiales de línea de comandos. Sin embargo, este no es un escenario realista para la mayoría de los usuarios empresariales.
Para realizar cambios en las extensiones de muestra en src/extensions/
:
manifest.json
npm start
para reconstruir los archivos binarios.crx El código en make/
usa módulos ES, no CommonJS.
Linux no tiene un Registro, por lo que este proyecto utiliza un archivo de políticas.
Para Windows, deberá utilizar la Política de grupo de Active Directory.
Las instrucciones para esto están ampliamente disponibles en línea.
Para forzar la instalación de una extensión, cree esta clave de registro y valor secundario:
Para habilitar el almacén de extensiones personalizado, cree esta clave de registro y valor secundario:
Para habilitar herramientas de desarrollador en extensiones instaladas forzosamente (elimine esto en producción):
Para habilitar API Enterprise.hardwarePlatform:
http://gromnitsky.blogspot.com/2019/04/crx3.html
(por el autor de crx3-utils)
https://blog.janestreet.com/chrome-extensions-finding-the-missing-proof/
Consulte aquí: https://sites.google.com/site/lock5stat/offline-use/installing-for-all-users
La extensión de instalación forzada puede acceder a algunas API restringidas adicionales. En la práctica, la única API adicional de interés es enterprise.hardwarePlatform
.
Derivado de https://github.com/chromium/chromium/blob/master/chrome/common/extensions/api/_permission_features.json
Chrome se entrega con una amplia gama de API de extensión. Muchos de ellos están restringidos a ChromeOS y/o a las extensiones propias de Google y/o únicamente a Componentes. (Los componentes son una forma diferente de ampliar la funcionalidad del navegador; están reservados solo para desarrolladores de Chrome. Consulte chrome://components para obtener más información).
Aquí están todas las API conocidas y si están disponibles en Windows:
Permiso | Disponible en Enterprise Extension en Windows |
---|---|
accesibilidadCaracterísticas.modificar | Sí |
accesibilidadCaracteristicas.leer | Sí |
accesibilidadPrivado | No |
pestaña activa | Sí |
actividadRegistroPrivado | No |
autocompletarAsistentePrivado | No |
autocompletarPrivado | No |
autotestPrivado | No |
fondo | Sí |
marcadores | Sí |
brailleDisplayPrivado | No |
navegaciónDatos | Sí |
certificadoproveedor | No |
cromoPrivado | No |
chromeosInfoPrivado | No |
portapapelesLeer | Sí |
portapapelesEscribir | Sí |
línea de comandoPrivado | No |
comandos.accesibilidad | No |
contenidoConfiguración | Sí |
contextoMenús | Sí |
galletas | Sí |
crashReportPrivado | No |
criptotokenPrivado | No |
depurador | Sí |
desarrolladorPrivado | No |
herramientas de desarrollo | Sí |
contenido declarativo | Sí |
captura de escritorio | Sí |
escritorioCapturaPrivado | Si, pero inútil |
documentoEscanear | No |
descargas | Sí |
descargas.abierto | Sí |
descargas.shelf | Sí |
atributos de dispositivo empresarial | No |
Atributos de Enterprise.networking | No |
empresa.hardwarePlataforma | Sí |
claves de plataforma empresarial | No |
Enterprise.platformKeysPrivado | No |
Enterprise.ReportingPrivado | No |
experimental | Si, pero inútil |
controlador de navegador de archivos | No |
administrador de archivosPrivado | No |
proveedor de sistema de archivos | No |
configuración de fuente | Sí |
gcm | Sí |
geolocalización | Sí |
historia | Sí |
identidad | Sí |
identidad.correo electrónico | Sí |
identidadPrivado | No |
idltest | Si, pero inútil |
imagenEscritorPrivado | No |
aporte | Sí (no Mac) |
entradaMétodoPrivado | No |
idiomaConfiguraciónPrivado | No |
lanzadorSearchProvider | No |
bloquearVentanaPantalla completaPrivado | No |
acceso | No |
iniciar sesiónAlmacenamiento de pantalla | No |
iniciar sesiónPantallaUi | No |
iniciar sesiónEstado | No |
webcamPrivado | No |
networking.castPrivado | No |
gestión | Sí |
mediaPlayerPrivado | No |
mediosRouterPrivado | No |
mdns | No |
notificaciones | Sí |
ecoPrivado | No |
captura de página | Sí |
contraseñasPrivado | No |
plataformaClaves | No |
complemento | Sí - TODO ¿Qué es esto? |
impresión | No |
impresiónMétricas | No |
privacidad | Sí |
procesos | No |
apoderado | Sí |
recursosPrivado | No |
rtcPrivado | No |
seguroNavegaciónPrivado | No |
secuencias de comandos | Sí (m3) |
buscar | Sí |
sesiones | Sí |
ajustesPrivado | No |
dispositivos firmados | No (tal vez en el futuro) |
sistemaPrivado | No |
pestañaGrupos | Sí (m3) |
cortina a la italiana | Sí |
pestañaCapturar | Sí |
terminalPrivado | No |
arribaSitios | Sí |
transitorioFondo | No (tal vez en el futuro) |
tts | Sí |
ttsEngine | Sí |
usuariosPrivado | No |
papel pintado | No |
fondo de pantallaPrivado | No |
navegación web | Sí |
webrtcAudioPrivado | No |
webrtcDesktopCapturePrivado | No |
webrtcRegistroPrivado | No |
webrtcLoggingPrivate.audioDebug | No |
tienda webPrivado | No |
Fin del expediente.