Magasin d'extensions Chrome pour les entreprises
Il s'agit d'une preuve de concept d'un Chrome Extension Store privé pour une utilisation en entreprise.
Cela n'a été testé qu'avec Chromium sous Linux , mais les mêmes principes devraient s'appliquer sous Windows pour les machines attachées à un domaine Active Directory.
Remarque : « Pour les instances Windows qui ne sont pas jointes à un domaine Microsoft® Active Directory®, l'installation forcée est limitée aux applications et extensions répertoriées dans le Chrome Web Store. »
Téléchargez l'intégralité du projet dans un dossier local.
Exécutez npm install
pour configurer les packages.
Exécutez sudo npm run first-run
pour créer le fichier de stratégie dans /etc/chromium/policies/managed/
(Vous devrez peut-être modifier make/SETTINGS.js
si votre instance de Chromium utilise un dossier différent)
Exécutez npm start
pour créer les extensions et lancez un simple serveur Web, servant le dossier dist/
.
L'exécution de sudo npm run first-run
créera un fichier de stratégie vide dans /etc/chromium/policies/managed/crx-store-policy.json
avec les autorisations 777 (lecture/écriture pour tous les utilisateurs).
Ce fichier sera rempli par npm start
ci-dessous.
Exécuter npm start
copiera de make/crx-store-policy.json
vers /etc/chromium/policies/managed/crx-store-policy.json
contenant les politiques suivantes :
Si cela ne fonctionne pas, vous devrez peut-être modifier make/SETTINGS.js
pour remplacer le dossier cible par l'un des éléments suivants :
Chrome n'installera pas d'extensions à moins qu'elles ne soient :
De plus, si la stratégie ExtensionInstallBlocklist est définie sur « * » :
(Une documentation plus ancienne fait référence aux noms de stratégie ExtensionInstallBlacklist et ExtensionInstallWhitelist.)
L'exécution npm start
créera deux exemples d'extensions dans src/extensions/
et les copiera dans dist/
L'exécution npm start
hébergera un serveur Web léger sur le port 5000, servant les fichiers de dist/
:
Des fonctionnalités supplémentaires peuvent être débloquées en lançant Chrome avec des indicateurs de ligne de commande spéciaux. Toutefois, ce scénario n’est pas réaliste pour la plupart des utilisateurs en entreprise.
Pour apporter des modifications aux exemples d'extensions dans src/extensions/
:
manifest.json
npm start
pour reconstruire les fichiers binaires.crx Le code dans make/
utilise des modules ES, pas CommonJS.
Linux n'a pas de registre, ce projet utilise donc un fichier de stratégie à la place.
Pour Windows, vous devrez utiliser la stratégie de groupe d'Active Directory.
Les instructions à ce sujet sont largement disponibles en ligne.
Pour forcer l'installation d'une extension, créez cette clé de registre et cette valeur enfant :
Pour activer le magasin d'extensions personnalisé, créez cette clé de registre et cette valeur enfant :
Pour activer les outils de développement sur les extensions installées de force (supprimez-les en production) :
Pour activer l'API Enterprise.hardwarePlatform :
http://gromnitsky.blogspot.com/2019/04/crx3.html
(par l'auteur de crx3-utils)
https://blog.janestreet.com/chrome-extensions-finding-the-missing-proof/
Voir ici : https://sites.google.com/site/lock5stat/offline-use/installing-for-all-users
L'extension installée de force peut accéder à certaines API restreintes supplémentaires. En pratique, la seule API supplémentaire présentant un quelconque intérêt est enterprise.hardwarePlatform
.
Dérivé de https://github.com/chromium/chromium/blob/master/chrome/common/extensions/api/_permission_features.json
Chrome est livré avec une large gamme d'API d'extension. Beaucoup d'entre eux sont limités à ChromeOS et/ou aux propres extensions de Google et/ou aux composants uniquement. (Les composants constituent une manière différente d'étendre les fonctionnalités du navigateur ; ils sont réservés uniquement aux développeurs Chrome. Voir chrome://components pour plus d'informations.)
Voici toutes les API connues et si elles sont disponibles sous Windows :
Autorisation | Disponible dans Enterprise Extension sous Windows |
---|---|
accessibilitéFeatures.modify | Oui |
accessibilitéFeatures.read | Oui |
accessibilitéPrivé | Non |
onglet actif | Oui |
activitéLogPrivate | Non |
remplissage automatiqueAssistantPrivé | Non |
remplissage automatiquePrivé | Non |
autotestPrivé | Non |
arrière-plan | Oui |
signets | Oui |
brailleAffichagePrivé | Non |
navigationDonnées | Oui |
fournisseur de certificat | Non |
chromePrivé | Non |
chromeosInfoPrivé | Non |
presse-papierLire | Oui |
presse-papierÉcrire | Oui |
ligne de commandePrivate | Non |
commandes.accessibilité | Non |
contenuParamètres | Oui |
contexteMenus | Oui |
cookies | Oui |
crashReportPrivé | Non |
cryptotokenPrivé | Non |
débogueur | Oui |
développeurPrivé | Non |
outils de développement | Oui |
Contenu déclaratif | Oui |
bureauCapture | Oui |
bureauCapturePrivé | Oui mais inutile |
numérisation de documents | Non |
téléchargements | Oui |
téléchargements.open | Oui |
téléchargements.étagère | Oui |
entreprise.deviceAttributes | Non |
entreprise.networkingAttributes | Non |
entreprise.hardwarePlatform | Oui |
entreprise.platformKeys | Non |
entreprise.platformKeysPrivate | Non |
entreprise.reportingPrivate | Non |
expérimental | Oui mais inutile |
gestionnaire de navigateur de fichiers | Non |
gestionnaire de fichiersPrivé | Non |
fournisseur de système de fichiers | Non |
Paramètres de police | Oui |
gcm | Oui |
géolocalisation | Oui |
histoire | Oui |
identité | Oui |
identité.email | Oui |
identitéPrivé | Non |
test d'identification | Oui mais inutile |
imageWriterPrivé | Non |
saisir | Oui (pas Mac) |
inputMethodPrivate | Non |
langueParamètresPrivé | Non |
lanceurSearchProvider | Non |
lockFenêtrePlein écranPrivé | Non |
se connecter | Non |
connexionScreenStorage | Non |
connexionScreenUi | Non |
État de connexion | Non |
webcamPrivé | Non |
mise en réseau.castPrivate | Non |
gestion | Oui |
mediaPlayerPrivé | Non |
mediaRouterPrivate | Non |
mdns | Non |
avis | Oui |
echoPrivé | Non |
pageCapture | Oui |
mots de passePrivé | Non |
Clés de plateforme | Non |
plugin | Oui - TODO, qu'est-ce que c'est ? |
impression | Non |
impressionMetrics | Non |
confidentialité | Oui |
processus | Non |
procuration | Oui |
ressourcesPrivé | Non |
rtcPrivé | Non |
sécuriséNavigationPrivé | Non |
script | Oui (m3) |
recherche | Oui |
séances | Oui |
paramètresPrivé | Non |
signéInDevices | Non (peut-être dans le futur) |
systèmePrivé | Non |
ongletGroupes | Oui (m3) |
onglets | Oui |
ongletCapture | Oui |
terminalPrivé | Non |
meilleurs sites | Oui |
transitoireContexte | Non (peut-être dans le futur) |
tts | Oui |
ttsMoteur | Oui |
utilisateursPrivé | Non |
papier peint | Non |
papier peintPrivé | Non |
navigation Web | Oui |
webrtcAudioPrivé | Non |
webrtcDesktopCapturePrivate | Non |
webrtcLoggingPrivé | Non |
webrtcLoggingPrivate.audioDebug | Non |
boutique en lignePrivé | Non |
Fin du dossier.