Chrome Extension Store สำหรับองค์กร
นี่เป็นการพิสูจน์แนวคิดในการใช้งาน Chrome Extension Store แบบส่วนตัวสำหรับองค์กร
สิ่งนี้ได้รับการทดสอบกับ 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 Modules ไม่ใช่ CommonJS
Linux ไม่มี Registry ดังนั้นโปรเจ็กต์นี้จึงใช้ไฟล์นโยบายแทน
สำหรับ Windows คุณจะต้องใช้ Group Policy ของ 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 มาพร้อมกับ Extension API ที่หลากหลาย ส่วนมากจำกัดไว้เฉพาะ ChromeOS และ/หรือส่วนขยายของ Google และ/หรือเฉพาะคอมโพเนนต์เท่านั้น (คอมโพเนนต์เป็นอีกวิธีหนึ่งในการขยายฟังก์ชันการทำงานของเบราว์เซอร์ สงวนไว้สำหรับนักพัฒนา Chrome เท่านั้น ดูข้อมูลเพิ่มเติมที่ chrome://components)
นี่คือ API ที่รู้จักทั้งหมดและพร้อมใช้งานใน Windows หรือไม่:
การอนุญาต | มีอยู่ใน Enterprise Extension บน Windows |
---|---|
accessibilityFeatures.ปรับเปลี่ยน | ใช่ |
การเข้าถึงคุณสมบัติอ่าน | ใช่ |
การเข้าถึงแบบส่วนตัว | เลขที่ |
แท็บที่ใช้งานอยู่ | ใช่ |
กิจกรรมLogPrivate | เลขที่ |
ป้อนอัตโนมัติAssistantPrivate | เลขที่ |
ป้อนอัตโนมัติส่วนตัว | เลขที่ |
ทดสอบอัตโนมัติส่วนตัว | เลขที่ |
พื้นหลัง | ใช่ |
บุ๊กมาร์ก | ใช่ |
brailleDisplayPrivate | เลขที่ |
การเรียกดูข้อมูล | ใช่ |
ใบรับรองผู้ให้บริการ | เลขที่ |
chromePrivate | เลขที่ |
chromeosInfoPrivate | เลขที่ |
คลิปบอร์ดอ่าน | ใช่ |
คลิปบอร์ดเขียน | ใช่ |
commandLinePrivate | เลขที่ |
คำสั่งการเข้าถึง | เลขที่ |
การตั้งค่าเนื้อหา | ใช่ |
เมนูบริบท | ใช่ |
คุกกี้ | ใช่ |
CrashReportPrivate | เลขที่ |
cryptotokenส่วนตัว | เลขที่ |
ดีบักเกอร์ | ใช่ |
นักพัฒนาส่วนตัว | เลขที่ |
devtools | ใช่ |
เนื้อหาที่เปิดเผย | ใช่ |
desktopCapture | ใช่ |
สก์ท็อปCapturePrivate | ใช่แต่ไร้ประโยชน์ |
การสแกนเอกสาร | เลขที่ |
ดาวน์โหลด | ใช่ |
ดาวน์โหลด.เปิด | ใช่ |
ดาวน์โหลด.ชั้นวาง | ใช่ |
Enterprise.deviceAttributes | เลขที่ |
Enterprise.networkingAttributes | เลขที่ |
องค์กร ฮาร์ดแวร์แพลตฟอร์ม | ใช่ |
องค์กร.platformKeys | เลขที่ |
Enterprise.platformKeysPrivate | เลขที่ |
องค์กรการรายงานส่วนตัว | เลขที่ |
ทดลอง | ใช่แต่ไร้ประโยชน์ |
ไฟล์BrowserHandler | เลขที่ |
fileManagerPrivate | เลขที่ |
fileSystemProvider | เลขที่ |
การตั้งค่าตัวอักษร | ใช่ |
จีซีเอ็ม | ใช่ |
ตำแหน่งทางภูมิศาสตร์ | ใช่ |
ประวัติศาสตร์ | ใช่ |
ตัวตน | ใช่ |
ตัวตน.อีเมล | ใช่ |
ตัวตนส่วนตัว | เลขที่ |
ไม่ได้ทดสอบ | ใช่แต่ไร้ประโยชน์ |
imageWriterPrivate | เลขที่ |
ป้อนข้อมูล | ใช่ (ไม่ใช่แมค) |
inputMethodส่วนตัว | เลขที่ |
ภาษาการตั้งค่าส่วนตัว | เลขที่ |
launcherSearchProvider | เลขที่ |
lockWindowFullscreenPrivate | เลขที่ |
เข้าสู่ระบบ | เลขที่ |
เข้าสู่ระบบScreenStorage | เลขที่ |
เข้าสู่ระบบScreenUi | เลขที่ |
เข้าสู่ระบบสถานะ | เลขที่ |
เว็บแคมส่วนตัว | เลขที่ |
networking.castPrivate | เลขที่ |
การจัดการ | ใช่ |
มีเดียเพลเยอร์ส่วนตัว | เลขที่ |
สื่อเราเตอร์ส่วนตัว | เลขที่ |
เอ็มดีเอ็น | เลขที่ |
การแจ้งเตือน | ใช่ |
echoPrivate | เลขที่ |
การจับภาพหน้า | ใช่ |
รหัสผ่านส่วนตัว | เลขที่ |
แพลตฟอร์มคีย์ | เลขที่ |
ปลั๊กอิน | ใช่ - สิ่งที่ต้องทำนี่คืออะไร? |
การพิมพ์ | เลขที่ |
การพิมพ์เมตริก | เลขที่ |
ความเป็นส่วนตัว | ใช่ |
กระบวนการ | เลขที่ |
พร็อกซี | ใช่ |
ทรัพยากรส่วนตัว | เลขที่ |
rtcส่วนตัว | เลขที่ |
ท่องเว็บอย่างปลอดภัยส่วนตัว | เลขที่ |
การเขียนสคริปต์ | ใช่ (ลบ.ม.) |
ค้นหา | ใช่ |
เซสชัน | ใช่ |
การตั้งค่าส่วนตัว | เลขที่ |
ลงนามในอุปกรณ์ | ไม่ (อาจจะเป็นอนาคต) |
ระบบส่วนตัว | เลขที่ |
แท็บกลุ่ม | ใช่ (ลบ.ม.) |
แท็บ | ใช่ |
แท็บจับภาพ | ใช่ |
เทอร์มินัลส่วนตัว | เลขที่ |
topSites | ใช่ |
พื้นหลังชั่วคราว | ไม่ (อาจจะเป็นอนาคต) |
ทีที | ใช่ |
ttsEngine | ใช่ |
ผู้ใช้ส่วนตัว | เลขที่ |
วอลล์เปเปอร์ | เลขที่ |
วอลล์เปเปอร์ส่วนตัว | เลขที่ |
เว็บการนำทาง | ใช่ |
webrtcAudioPrivate | เลขที่ |
webrtcDesktopCapturePrivate | เลขที่ |
webrtcLoggingPrivate | เลขที่ |
webrtcLoggingPrivate.audioDebug | เลขที่ |
เว็บสโตร์ส่วนตัว | เลขที่ |
สิ้นสุดไฟล์.