Managing Extensions in Your Enterprise: Securely Manage Chrome Extensions at Scale
Managing Extensions in Your Enterprise: Securely Manage Chrome Extensions at Scale
Managing Extensions
in Your Enterprise
Securely manage Chrome extensions at scale
Introduction
Manage extensions
Additional resources
Managing extensions in an enterprise | A
pril 2019 2
Purpose of this guide
There are many useful extensions built for the Chrome Browser that empower workers and make
workplaces more efficient. However, given the sheer number of extensions that might be running on users
computers at any given time, it can be daunting for IT administrators to monitor and control these
extensions.
This guide is for IT administrators who are looking for best practices to manage Chrome Browser
extensions in their organizations. It provides steps for managing extensions using both the Google Admin
console and Windows Group Policies.
This guide is organized by the methods that you can use to manage extensions. You can:
1. Block extensions based on their permissions
2. Manage extensions by policy
3. Allow or block extensions in the Google Admin console or Windows Group Policy
4. Create your own on-premise web store (not recommended as a best practice)
5. Manage extensions using Chrome Browser Cloud Management (new in April 2019)
Last updated: April 7, 2019
Published location: https://support.google.com/chrome/a/answer/9296680
Third-party products: This document describes how Google products work with the Microsoft Windows operating systems and the
configurations that Google recommends. Google does not provide technical support for configuring third-party products. Google
accepts no responsibility for third-party products. Please consult the product's website for the latest configuration and support
information. You may also contact Google Solutions Providers for consulting services.
©2019 Google LLC All rights reserved. Google and the Google logo are registered trademarks of Google LLC. All other company and
product names may be trademarks of the respective companies with which they are associated. [EXTENSIONS-en-1.0]
Managing extensions in an enterprise | A
pril 2019 3
Introduction
Organizations want to protect their user data and more easily evaluate browser extensions that are safe
and relevant to their enterprise. IT administrators want to:
● Block or allow extensions on users computers based on your data protection policies.
● Force-install extensions on your users machines so they have tools that they need to be productive.
● Whitelist or blacklist extensions to allow the least amount of rights needed for your users to work.
The traditional model to manage extensions has been to whitelist and blacklist specific extensions.
However, Chrome also allows you to manage permissions requested by extensions. Using this other model,
you can decide which rights and permissions you want to allow extensions to use on your machines, and
then enforce a global policy that will allow or block extensions that meet your requirements.
● Site permissions require the extension to list sites it may view or modify.
Examples: Modify a webpage, access cookies, modify tabs
● Device permissions are the rights needed by an extension on the machine where it’s running.
Examples: Access to USB port / storage / viewing screen; talking to native programs
Managing extensions in an enterprise | A
pril 2019 4
Deciding which extensions to allow
To help decide which extensions to allow in your organization:
1. Assemble a list of which extensions employees need on their computers.
2. Test the extensions in a test environment to diagnose any compatibility issues with internal apps.
3. Determine which permissions are required for these extensions to run.
Testing process: B efore allowing specific permissions (such as site access) in security-conscious
organizations, you can look at the web app manifest JSON file in the code of the Chrome web extension.
Other organizations might wait for users to request to install specific extensions and validate them before
approving them in the organization. Take these steps to see what rights the extension needs:
Manage extensions
Most organizations should manage extensions by their permissions and what websites they have access
to. This method is more secure, easier to manage, and is scalable for large organizations. You must use 3
or 4 of the following policies. Link directly to the relevant section in this guide:
● Blocked/allowed permissions
● Runtime block hosts
● Force installed extensions
● Whitelist/blacklist (if required)
Using this method saves you time because you only need to set these once. The days of managing long
whitelists and blacklists are gone. You can still include a small blacklist of extensions that should not be
installed. And with the run-time hosts policy, your most important sites will be protected. To manage
extensions in your organization:
Managing extensions in an enterprise | A
pril 2019 5
2. Choose which sites you need to be more secure:
● Find out which sensitive internal websites or domains you need to block extensions from
making changes or reading data.
● Prevent access to these sites by blocking the API calls when the extension is run. These
include blocking web requests, reading cookies, JavaScript injection, XHR, etc.
5. Present your master list to your stakeholders and IT team to get buy in.
6. Test out the new policy in your lab or with a small pilot in your organization.
7. Roll out these new sets of policies to employees in phases.
8. Review feedback from your users.
9. Repeat and fine-tune the process monthly, quarterly, or yearly.
With your baseline of allowed permissions enforced and sensitive corporate sites protected, you can
provide your enterprise with more security while providing a better experience for users. Employees might
install extensions that they couldn't before, but not run them on sensitive business sites.
Managing extensions in an enterprise | A
pril 2019 6
Manage extensions by their permissions in the Google Admin console
You can block your users from running extensions that need permissions which aren’t allowed. For
example, you could block an extension that connects to your users USB devices or prevents access to
reading cookies.
1. In your Admin console, go to D evices > Chrome management > User settings.
2. Select the organizational unit with the users you want to allow extensions for.
For details, see Set a Chrome policy for multiple apps.
3. Next to Block extensions by permission, select the option to either block or allow the extensions
that need the permissions you have chosen.
4. Check each permission to block or allow.
For complete details, see this list of permissions.
5. Click S
ave.
Managing extensions in an enterprise | A
pril 2019 7
Compact JSON data:
{"*":{"blocked_permissions":["usb"]}}
Note:
● If you can specify one extension ID, the policy will only apply to that extension. You can block more
than one, but they need to be separated into their own entries.
● To block all extensions that use that permission, use an asterisk for the extension ID.
You decide if you want to set all extension management settings here or set these controls through other
individual policies.
● The Runtime allowed/blocked hosts setting can only be set within the extension settings policy.
● The extension settings policy can overwrite other policies that you have elsewhere in group policy,
including:
○ ExtensionAllowedTypes
○ ExtensionInstallBlacklist
○ ExtensionInstallForcelist
○ ExtensionInstallSources
○ ExtensionInstallWhitelist
Managing extensions in an enterprise | A
pril 2019 8
The next key that you will create is either the Extension ID for individual scope or an asterisk for the Default
Scope. For example, use the following location for settings that apply to Google Hangouts:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionSettings\nckgahadag
oaajjgafhacjanaoiihapd
For settings that apply to the Default Scope, use this location:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionSettings\*
Different settings will require different formats, depending on whether they are a string or an array of
strings. Array values require [ "value"]. String values can be entered as is. The list of which settings are
arrays or strings:
● Installation_mode = String
● update_url = String
● blocked_permissions = Array of strings
● allowed_permissions = Array of Strings
● minimum_version_required = String
● runtime_blocked_hosts = Array of strings
● runtime_allowed_hosts = Array of Strings
● blocked_install_message = String
Examples of what the keys look like within the registry:
The default (*) scope key and its values
Managing extensions in an enterprise | A
pril 2019 9
An individual scope and its values
Here, the keys set in the registry are converted to JSON with the policy:
Managing extensions in an enterprise | A
pril 2019 10
The default scope is identified by the asterisk (*). This example defines a default scope and a single
individual extension scope:
{
“*”: {},
“nckgahadagoaajjgafhacjanaoiihapd”: {}
}
An extension will only get its settings from one scope. If there’s an individual extension scope for that
extension, those will be the settings that apply to that extension. If no individual extension scope exists,
then it will use the default scope.
Here is an example JSON that blocks any extension from running on .example.com and blocks any
extension that requires the permission “USB”:
{
"*": {
"runtime_blocked_hosts": ["*://*.example.com"],
"blocked_permissions": ["usb"]
}
}
Compact JSON data:
{"*":{"runtime_blocked_hosts":["*://*.example.com"],"blocked_permissions":
["usb"]}}
Reference examples with example values:
● “allowed” (default)
Your user can install the extension from the Chrome Web Store.
Example JSON:
{ "*": {"installation_mode": "allowed" }}
● “blocked”
Your user can’t install the extension from the Chrome Web Store.
Example JSON:
{ "*": {"installation_mode": "blocked" }}
● “Blocked_install_message”
Here you can specify a custom message to display when installation is blocked.
Example JSON - blocked_install_message:
{"*": {"blocked_install_message": ["Call IT(408 - 555 - 1234) for an
exception"]}}
● “force_installed”
○ The extension is automatically installed without your user’s interaction.
○ Your user can’t disable or remove the extension.
Managing extensions in an enterprise | A
pril 2019 11
● “Normal_installed”
The extension is automatically installed without your user interaction, but they can disable the
extension.
If an extension is “normal” or “force” installed, another field “update_url” must also be defined, pointing to
where the extension can be installed from.
● If the extension you’re downloading is hosted on the Chrome Web Store, use
"https://clients2.google.com/service/update2/crx".
● If you’re hosting the extension on your own server, put the URL where Chrome can download the
packed extension (.crx file).
Example JSON - force_installed extension with update_url:
{"nckgahadagoaajjgafhacjanaoiihapd": {"installation_mode":
"force_installed","update_url":
"https://clients2.google.com/service/update2/crx"}}
● Runtime_allowed_hosts
This setting allows extensions to make changes or read data from your chosen websites. The
format for specifying your site(s) in the JSON string in the policy:
[http|https|ftp|*]://[subdomain|*].[hostname|*].[eTLD|*]
[http|https|ftp|*],
Note: [hostname|*], and [eTLD|*] sections are required, but [subdomain|*] section is optional.
Managing extensions in an enterprise | A
pril 2019 12
Examples of valid host patterns and matching patterns:
Valid host patterns Matches Doesn't match
https://test.example.co.uk http://example.google.co.uk
http://test.example.co.uk
Here is a sample of a JSON string that blocks access for a single extension. This string prevents an
extension from augmenting a specific site:
{
"aapbdbdomjkkjkaonfhkkikfgjllcleb": {
"runtime_blocked_hosts": ["*://*.importantwebsite"]
}
}
Compact JSON data:
{"aapbdbdomjkkjkaonfhkkikfgjllcleb":
{"runtime_blocked_hosts":["*://*.importantwebsite"]}}
Separate multiple entries into an entry for each app ID that you want to block. Here’s an example of how to
block 2 extensions from running on the same domain:
{
"aapbdbdomjkkjkaonfhkkikfgjllcleb": {
"runtime_blocked_hosts": ["*://*.importantwebsite"]
},
"bfbmjmiodbnnpllbbbfblcplfjjepjdn": {
"runtime_blocked_hosts": ["*://*.importantwebsite"]
}
}
Managing extensions in an enterprise | A
pril 2019 13
And here is the JSON string entered in the G
oogle Chrome > Extensions > Extensions management
setting policy:
Before you begin: To manage extensions for users, you need to turn on their Chrome Web Store service in
your Admin console. You can find Additional Google Services in your Admin console under Apps. F
or steps,
see Turn Additional Google Services on or off.
The following steps assume you're familiar with changing settings in your Admin console.
Managing extensions in an enterprise | A
pril 2019 14
3. Next to Allow or Block All Apps and Extensions, select the option to allow all applications and
extensions except ones you block.
4. Next to Allowed Apps and Extensions, click Manage.
5. Select each extension you want to block.
6. Click S
ave.
Force-install an extension
If you know that a user requires an extension for them to do their job, you can automatically install it for
them. Keep in mind that if you force install an extension, it will grant all of the permissions it needs to run
automatically.
Managing extensions in an enterprise | A
pril 2019 15
Afterward, if it's not already there, a Google or Google Chrome folder will appear under Administrative
Templates. If you added the ADM template on Windows 7 or 10, it will appear under Classic Administrative
Templates / Google / Google Chrome.
Managing extensions in an enterprise | A
pril 2019 16
Path to Extension management policies
Configure extension installation blacklist
Managing extensions in an enterprise | A
pril 2019 17
Notes:
● If you can’t find the app ID of an extension, view it in the Chrome Web Store. There, find the specific
extension and you will see the app ID at the end of the URL in the Chrome omnibox:
App ID example located after google-hangouts/
● Enter * into the policy to prevent any extensions from being installed. You can use this with the
Configure extension white list policy. This way you only allow certain extensions to be installed by
your users.
● You can add an extension to the blacklist that is already installed on a user’s machine. It will disable
the extension and prevent the user from re-enabling it. It will not be uninstalled, just disabled.
Configure extension installation whitelist
Managing extensions in an enterprise | A
pril 2019 18
Block or allow one extension
To block a single extension, add the app ID of the extension you want blocked to the configure extension
installation blacklist policy. All of your other extensions will be allowed to be installed.
To allow only one extension:
1. In the content section in the Configure extension installation blacklist policy, enter * .
This will blacklist all extensions from being installed.
2. Add the app ID of the allowed extension to the Configure extension installation whitelist policy.
Force-install an extension
1. In the Group Policy Editor, browse to Google > Google Chrome > Extensions > Configure the list
of force-installed apps and extensions.
2. Select Enabled.
3. Click S
how.
4. Enter the app ID or IDs of the extension or extensions you want to force-install.
The extension will be installed silently with no need for a user to interact. The user also won’t be able to
uninstall or disable the extension. This setting will overwrite over any blacklist policy that you might have
enabled.
Configure the list of force-installed apps and extensions
Managing extensions in an enterprise | A
pril 2019 19
Create your own on-premises web store
The C hrome Web Store host extensions and provides a number of security features, such as automated
and manual code scans to prevent malicious code from being sent to your users. There’s an option to host
your extensions in your own web store, but it’s not recommended. The self-hosting method requires
significant amount of work, in terms of validating the security of your extensions and keeping them
updated.
If you choose to host your own store, this section tells you how. It covers how to package an extension and
host it without using the Chrome Web Store. It also includes instructions on how to deploy these extensions
to your devices and users.
As an alternative to creating your own web store, consider marking internal extensions on the Chrome Web
Store as private. Here are the different options to Publish in the Chrome Web Store.
Requirements
To host your own extension, you will need to provide your own web hosting services for the extension and
its manifest file. This hosting location shouldn’t require authentication. It needs to be accessible by devices
wherever they might be used. Keep this in mind if you want to host the file on your internal repository.
The steps assume that you’ve already created your extension, have some experience with XML files, and
have some knowledge about group policy and using the windows registry.
1. Go to c eveloper mode.
hrome://extensions in the Chrome address bar and check the box for D
Managing extensions in an enterprise | A
pril 2019 20
Pack Extension root directory selector
Tip: Keep the PEM file securely stored, because this is the key to your extension. You’ll need it for future
updates.
4. Drag the CRX in to your extensions window and make sure that it loads.
5. Test the extension and take note of the ID field and version number.
These will be important later on.
Extension details
5. Place the CRX file in the host location where your users or devices will download it from.
6. Note the URL of where the file is uploaded.
This will be important for the manifest XML file.
7. To create a manifest XML file with the app/extension ID, download URL, and version, define these 3
fields:
● appid (the extension ID from step 3)
● codebase (the download location for the CRX file from step 4)
● version (the version of the app/extension, which should match step 3)
Example XML manifest file:
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='ekilpdeokbpjmminmhfcgkncmmohmfeb'>
<updatecheck
codebase='https://app.somecompany.com/chrome/helloworld.crx'
version='1.0' />
</app>
</gupdate>
8. Upload the completed XML file to a location from where your users or devices can download it,
while noting the URL.
1. Change the version number in your extension's manifest JSON file to a higher number.
Example:
"version": "versionString"
If the "version":"1.0", then you can update to "version":"1.1" or any number higher than
"1.0".
Managing extensions in an enterprise | A
pril 2019 21
Another example:
<updatecheck codebase='https://app.somecompany.com/chrome/helloworld.crx'
version='1.1' />
● Autoupdating
● Update URL
● Update manifest
Managing extensions in an enterprise | A
pril 2019 22
Force install Apps and Extensions
7. Make sure that you click S
ave.
During your user's next policy refresh, the extension will be installed on the targeted devices.
In Group Policy: If you aren’t using the Admin console, you can use the policy called "Configure the list of
force installed apps and extensions" to force-install an extension on your user's device.
For privately hosted apps (not in the Chrome Web Store), use a string such as:
pckdojakecnhhplcgfflhndiffaohfah;https://sites.google.com/site/pushcrx/privatew
ebstore/extension_info.xml
The URL is specified to the internal app’s update.xml, rather than the public-facing
clients2.google.com URL.
Managing extensions in an enterprise | A
pril 2019 23
GPO Policy “Configure the list of force-installed apps/extensions” (Show Contents)
The policies can then be applied to your chosen users, machines, or both. It can take some time for the
policy to take effect. Speed things up by running "gpupdate" on your user’s machine.
You can also take quick actions in the console, such as blocking a suspicious extension on all of your
machines. Manage extensions from any of the 3 subpages in the Admin console. To access them:
Managing extensions in an enterprise | A
pril 2019 24
● Installed apps & extensions: O n this page, you can view the installed extensions, their stats, how it
was installed, the version and release channel, and what user profile it’s installed on. This console
gives you more control over managing extensions and seeing what apps are installed. By clicking
● Device details: O
n this page, you can view a managed machine’s name, OS version, user details,
architecture (32 or 64 bit), the enrollment date, and how many policies are applied.
● Browser & Profiles: H ere you can view the browser version and release channel (Stable, Dev, Beta
or Canary), as well as which profiles the Chrome Browser is linked to.
Additional resources
Here are more resources to help you with managing the Chrome Browser in your organization:
● Chrome Browser Deployment Guide (Windows)
● Chrome Policy list
● Chrome Enterprise release notes
● Chrome Enterprise Help Center
● Make Chrome default browser (Windows 10)
Managing extensions in an enterprise | A
pril 2019 25