Chrome Extension Store für Unternehmen
Dies ist ein Proof-of-Concept eines privaten Chrome Extension Store für den Einsatz in Unternehmen.
Dies wurde nur mit Chromium unter Linux getestet, aber die gleichen Prinzipien sollten unter Windows für Maschinen gelten, die an eine Active Directory-Domäne angeschlossen sind.
Hinweis: „Für Windows-Instanzen, die keiner Microsoft® Active Directory®-Domäne angehören, ist die erzwungene Installation auf Apps und Erweiterungen beschränkt, die im Chrome Web Store aufgeführt sind.“
Laden Sie das gesamte Projekt in einen lokalen Ordner herunter.
Führen Sie npm install
aus, um die Pakete einzurichten.
Führen Sie sudo npm run first-run
aus, um die Richtliniendatei in /etc/chromium/policies/managed/
zu erstellen.
(Möglicherweise müssen Sie make/SETTINGS.js
bearbeiten, wenn Ihre Chromium-Instanz einen anderen Ordner verwendet.)
Führen Sie npm start
aus, um die Erweiterungen zu erstellen und einen einfachen Webserver zu starten, der den Ordner dist/
bereitstellt.
Wenn Sie sudo npm run first-run
ausführen, wird eine leere Richtliniendatei unter /etc/chromium/policies/managed/crx-store-policy.json
erstellt
mit Berechtigungen 777 (Lesen/Schreiben für alle Benutzer).
Diese Datei wird unten von npm start
gefüllt.
npm start
ausführen
wird von make/crx-store-policy.json
nach /etc/chromium/policies/managed/crx-store-policy.json
kopiert
mit den folgenden Richtlinien:
Wenn es nicht funktioniert, müssen Sie möglicherweise make/SETTINGS.js
bearbeiten, um den Zielordner in einen der folgenden zu ändern:
Chrome installiert keine Erweiterungen, es sei denn, sie sind:
Wenn die Richtlinie ExtensionInstallBlocklist außerdem auf „*“ festgelegt ist:
(Ältere Dokumentation bezieht sich auf die Richtliniennamen ExtensionInstallBlacklist und ExtensionInstallWhitelist.)
Durch Ausführen von npm start
werden zwei Beispielerweiterungen in src/extensions/
erstellt und nach dist/
kopiert.
Wenn npm start
ausführen, wird auf Port 5000 ein einfacher Webserver gehostet, der Dateien von dist/
bereitstellt:
Zusätzliche Funktionen können freigeschaltet werden, indem Chrome mit speziellen Befehlszeilen-Flags gestartet wird. Für die meisten Unternehmensbenutzer ist dies jedoch kein realistisches Szenario.
So nehmen Sie Änderungen an den Beispielerweiterungen in src/extensions/
vor:
manifest.json
zu erhöhennpm start
erneut aus, um die binären.crx-Dateien neu zu erstellen Der Code in make/
verwendet ES-Module, nicht CommonJS.
Linux verfügt nicht über eine Registry, daher verwendet dieses Projekt stattdessen eine Richtliniendatei.
Für Windows müssen Sie die Gruppenrichtlinie von Active Directory verwenden.
Anleitungen hierfür sind online weit verbreitet.
Um die Installation einer Erweiterung zu erzwingen, erstellen Sie diesen Registrierungsschlüssel und untergeordneten Wert:
Um den benutzerdefinierten Erweiterungsspeicher zu aktivieren, erstellen Sie diesen Registrierungsschlüssel und untergeordneten Wert:
So aktivieren Sie Entwicklertools für erzwungen installierte Erweiterungen (entfernen Sie diese in der Produktion):
So aktivieren Sie die API Enterprise.hardwarePlatform:
http://gromnitsky.blogspot.com/2019/04/crx3.html
(vom Autor von crx3-utils)
https://blog.janestreet.com/chrome-extensions-finding-the-missing-proof/
Siehe hier: https://sites.google.com/site/lock5stat/offline-use/installing-for-all-users
Eine erzwungen installierte Erweiterung kann auf einige zusätzliche eingeschränkte APIs zugreifen. In der Praxis ist enterprise.hardwarePlatform
die einzige zusätzliche API von Interesse.
Abgeleitet von https://github.com/chromium/chromium/blob/master/chrome/common/extensions/api/_permission_features.json
Chrome wird mit einer breiten Palette an Erweiterungs-APIs geliefert. Viele davon sind auf ChromeOS und/oder auf Googles eigene Erweiterungen und/oder nur auf Komponenten beschränkt. (Komponenten stellen eine andere Möglichkeit zur Erweiterung der Browserfunktionalität dar; sie sind nur Chrome-Entwicklern vorbehalten. Weitere Informationen finden Sie unter chrome://components.)
Hier sind alle bekannten APIs und ob sie in Windows verfügbar sind:
Erlaubnis | Verfügbar in der Enterprise-Erweiterung unter Windows |
---|---|
accessibilityFeatures.modify | Ja |
accessibilityFeatures.read | Ja |
ZugänglichkeitPrivat | NEIN |
activeTab | Ja |
AktivitätsprotokollPrivate | NEIN |
autofillAssistantPrivate | NEIN |
autofillPrivate | NEIN |
autotestPrivate | NEIN |
Hintergrund | Ja |
Lesezeichen | Ja |
brailleDisplayPrivate | NEIN |
browseData | Ja |
Zertifikatsanbieter | NEIN |
chromePrivate | NEIN |
chromeosInfoPrivate | NEIN |
ZwischenablageLesen | Ja |
ZwischenablageSchreiben | Ja |
commandLinePrivate | NEIN |
commands.accessibility | NEIN |
contentSettings | Ja |
contextMenus | Ja |
Kekse | Ja |
crashReportPrivate | NEIN |
cryptotokenPrivate | NEIN |
Debugger | Ja |
DeveloperPrivate | NEIN |
Devtools | Ja |
deklarativer Inhalt | Ja |
DesktopCapture | Ja |
desktopCapturePrivate | Ja, aber nutzlos |
documentScan | NEIN |
Downloads | Ja |
downloads.open | Ja |
downloads.shelf | Ja |
Enterprise.deviceAttributes | NEIN |
Enterprise.networkingAttributes | NEIN |
Enterprise.hardwarePlatform | Ja |
Enterprise.platformKeys | NEIN |
Enterprise.platformKeysPrivate | NEIN |
Enterprise.reportingPrivate | NEIN |
Experimental- | Ja, aber nutzlos |
fileBrowserHandler | NEIN |
fileManagerPrivate | NEIN |
fileSystemProvider | NEIN |
Schriftarteinstellungen | Ja |
gcm | Ja |
Geolokalisierung | Ja |
Geschichte | Ja |
Identität | Ja |
Identität.E-Mail | Ja |
IdentitätPrivat | NEIN |
im Leerlauf | Ja, aber nutzlos |
imageWriterPrivate | NEIN |
Eingang | Ja (nicht Mac) |
inputMethodPrivate | NEIN |
languageSettingsPrivate | NEIN |
launcherSearchProvider | NEIN |
lockWindowFullscreenPrivate | NEIN |
Login | NEIN |
loginScreenStorage | NEIN |
loginScreenUi | NEIN |
loginState | NEIN |
WebcamPrivat | NEIN |
networking.castPrivate | NEIN |
Management | Ja |
mediaPlayerPrivate | NEIN |
mediaRouterPrivate | NEIN |
mdns | NEIN |
Benachrichtigungen | Ja |
echoPrivate | NEIN |
pageCapture | Ja |
PasswörterPrivat | NEIN |
Plattformschlüssel | NEIN |
Plugin | Ja – TODO, was ist das? |
NEIN | |
Druckmetriken | NEIN |
Privatsphäre | Ja |
Prozesse | NEIN |
Proxy | Ja |
RessourcenPrivat | NEIN |
rtcPrivate | NEIN |
sicherBrowsingPrivate | NEIN |
Skripterstellung | Ja (m3) |
suchen | Ja |
Sitzungen | Ja |
EinstellungenPrivat | NEIN |
signierteInGeräte | Nein (vielleicht in Zukunft) |
systemPrivat | NEIN |
tabGruppen | Ja (m3) |
Registerkarten | Ja |
tabCapture | Ja |
terminalPrivat | NEIN |
topSites | Ja |
transientBackground | Nein (vielleicht in Zukunft) |
tts | Ja |
ttsEngine | Ja |
BenutzerPrivat | NEIN |
Tapete | NEIN |
TapetePrivat | NEIN |
webNavigation | Ja |
webrtcAudioPrivate | NEIN |
webrtcDesktopCapturePrivate | NEIN |
webrtcLoggingPrivate | NEIN |
webrtcLoggingPrivate.audioDebug | NEIN |
webstorePrivat | NEIN |
Ende der Datei.