-
Notifications
You must be signed in to change notification settings - Fork 8.1k
ENGDOCS-2324 #21475
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ENGDOCS-2324 #21475
Changes from 4 commits
fd1239c
9e3841e
d26377d
d823937
ad4e803
ad8af1a
04fc4d4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -13,49 +13,41 @@ | |
| > | ||
| > Enhanced Container Isolation is available to Docker Business customers only. | ||
| Enhanced Container Isolation provides an additional layer of security to prevent malicious workloads running in containers from compromising Docker Desktop or the host. | ||
| Enhanced Container Isolation (ECI) provides an additional layer of security to prevent malicious workloads running in containers from compromising Docker Desktop or the host. | ||
|
|
||
| It uses a variety of advanced techniques to harden container isolation, but without impacting developer productivity. It is available with [Docker Desktop 4.13.0 and later](/manuals/desktop/release-notes.md). | ||
| It uses a variety of advanced techniques to harden container isolation, but without impacting developer productivity. | ||
|
|
||
| These techniques include: | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Have remove this from the top because it is repeated in more detail down below |
||
| - Running all containers unprivileged through the Linux user-namespace, even those launched with the `--privileged` flag. This makes it harder for malicious container workloads to escape the container and infect the Docker Desktop VM and host. | ||
| - Ensuring Docker Desktop VM immutability (e.g., its internal settings can't be modified by containers or users). | ||
| - Vetting some critical system calls to prevent container escapes, and partially virtualizing portions of `/proc` and `/sys` inside the container for further isolation. | ||
| - Preventing user console access to the Docker Desktop VM. | ||
|
|
||
| When Enhanced Container Isolation is enabled, these mechanisms are applied automatically and with minimal functional or performance impact to developers. Developers continue to use Docker Desktop as usual, but the containers they launch are more strongly isolated. | ||
|
|
||
| Enhanced Container Isolation ensures stronger container isolation and also locks in any security configurations that have been created by IT admins, for instance through [Registry Access Management policies](/manuals/security/for-admins/hardened-desktop/registry-access-management.md) or with [Settings Management](../settings-management/_index.md). | ||
| Enhanced Container Isolation ensures stronger container isolation and also locks in any security configurations that have been created by administrators, for instance through [Registry Access Management policies](/manuals/security/for-admins/hardened-desktop/registry-access-management.md) or with [Settings Management](../settings-management/_index.md). | ||
|
|
||
| > [!NOTE] | ||
| > | ||
| > Enhanced Container Isolation is in addition to other container security techniques used by Docker. For example, reduced Linux Capabilities, Seccomp, AppArmor. | ||
| > ECI is in addition to other container security techniques used by Docker. For example, reduced Linux Capabilities, seccomp, and AppArmor. | ||
| ### Who is it for? | ||
| ## Who is it for? | ||
|
|
||
| - For organizations and developers that want to prevent container attacks and reduce vulnerabilities in developer environments. | ||
| - For organizations that want to ensure stronger container isolation that is easy and intuitive to implement on developers' machines. | ||
|
|
||
| ### What happens when Enhanced Container Isolation is turned on? | ||
| ## What happens when Enhanced Container Isolation is turned on? | ||
|
Check warning on line 31 in content/manuals/security/for-admins/hardened-desktop/enhanced-container-isolation/_index.md
|
||
|
|
||
| When Enhanced Container Isolation is turned on, the following features are enabled: | ||
| When Enhanced Container Isolation is turned on, the following features and security techniques are enabled: | ||
|
|
||
| - All user containers are automatically run in Linux User Namespaces which ensures stronger isolation. Each container runs in a dedicated Linux user-namespace. | ||
| - All user containers are automatically run in Linux user namespaces which ensures stronger isolation. Each container runs in a dedicated Linux user-namespace. | ||
| - The root user in the container maps to an unprivileged user inside the Docker Desktop Linux VM. | ||
| - Containers become harder to breach. For example, sensitive system calls are vetted and portions of `/proc` and `/sys` are emulated. | ||
| - Containers become harder to breach. For example, sensitive system calls are vetted and portions of `/proc` and `/sys` are emulated inside the container. | ||
| - Users can continue using containers as usual, including bind mounting host directories, volumes, etc. | ||
| - No change in the way developers run containers, and no special container images are required. | ||
| - Privileged containers (e.g., `--privileged` flag) work, but they are only privileged within the container's Linux User Namespace, not in the Docker Desktop VM. Therefore they can't be used to breach the Docker Desktop VM. | ||
| - Privileged containers (e.g., `--privileged` flag) work, but they are only privileged within the container's Linux user namespace, not in the Docker Desktop VM. Therefore they can't be used to breach the Docker Desktop VM. | ||
| - Docker-in-Docker and even Kubernetes-in-Docker works, but run unprivileged inside the Docker Desktop Linux VM. | ||
|
|
||
| In addition, the following restrictions are imposed: | ||
|
|
||
| - Containers can no longer share namespaces with the Docker Desktop VM (e.g., `--network=host`, `--pid=host` are disallowed). | ||
| - Containers can no longer modify configuration files inside the Docker Desktop VM (e.g., mounting any VM directory into the container is disallowed). | ||
| - Containers can no longer access the Docker engine (e.g., mounting the Docker engine's socket into the container is restricted); this prevents malicious containers from gaining control of the Docker engine. Admins can relax this for [trusted container images](config.md). | ||
| - Containers can no longer access the Docker Engine. For example, mounting the Docker Engine's socket into the container is restricted which prevents malicious containers from gaining control of the Docker Engine. Administrators can relax this for [trusted container images](config.md). | ||
| - Console access to the Docker Desktop VM is forbidden for all users. | ||
|
|
||
| These features and restrictions ensure that containers are better secured at runtime, with minimal impact to developer experience and productivity. | ||
| These features and restrictions ensure that containers are better secured at runtime, with minimal impact to developer experience and productivity. Developers can continue to use Docker Desktop as usual, but the containers they launch are more strongly isolated. | ||
|
|
||
| For more information on how Enhanced Container Isolation work, see [How does it work](how-eci-works.md). | ||
|
|
||
|
|
@@ -65,20 +57,9 @@ | |
| > Kubernetes pods and Extension containers. For more information on known | ||
| > limitations and workarounds, see [FAQs](faq.md). | ||
| ### What host OSes / platforms is Enhanced Container Isolation supported on? | ||
|
|
||
| Enhanced Container Isolation (ECI) was introduced in Docker Desktop 4.13, for all platforms (Windows, Mac, and Linux). | ||
|
|
||
| For Windows hosts, ECI works with both the Docker Desktop Hyper-V and WSL 2 backends, as follows: | ||
|
|
||
| - Docker Desktop 4.19 or prior: ECI only works with Hyper-V. | ||
| - Docker Desktop 4.20 or later: ECI Works with both Hyper-V and WSL 2 (with WSL version 1.1.3.0 and above). | ||
| ## How do I enable Enhanced Container Isolation? | ||
|
|
||
| See [ECI Support for WSL](limitations.md#eci-support-for-wsl) for further info as well as security caveats when using Enhanced Container Isolation on WSL 2. | ||
|
|
||
| ### How do I enable Enhanced Container Isolation? | ||
|
|
||
| #### As a developer | ||
| ### As a developer | ||
|
|
||
| To enable Enhanced Container Isolation as a developer: | ||
| 1. Ensure your organization has a Docker Business subscription. | ||
|
|
@@ -92,19 +73,13 @@ | |
| > | ||
| > Enhanced Container Isolation does not protect containers created prior to enabling ECI. For more information on known limitations and workarounds, see [FAQs](faq.md). | ||
| #### As an admin | ||
| ### As an administrator | ||
|
|
||
| ##### Prerequisite | ||
| #### Prerequisite | ||
|
|
||
| To enable Enhanced Container Isolation as an admin, you first need to [enforce | ||
| sign-in](/manuals/security/for-admins/enforce-sign-in/_index.md). This is | ||
| because the Enhanced Container Isolation feature requires a Docker Business | ||
| subscription and therefore your Docker Desktop users must authenticate to your | ||
| organization for this configuration to take effect. | ||
| You first need to [enforce sign-in](/manuals/security/for-admins/enforce-sign-in/_index.md) to ensure that all Docker Desktop developers authenticate with your organization. Since Settings Management requires a Docker Business subscription, enforced sign-in guarantees that only authenticated users have access and that the feature consistently takes effect across all users, even though it may still work without enforced sign-in. | ||
|
|
||
| Enforcing sign-in ensures that your Docker Desktop developers always authenticate to your organization. | ||
|
|
||
| ##### Setup | ||
| #### Setup | ||
|
|
||
| [Create and configure the `admin-settings.json` file](/manuals/security/for-admins/hardened-desktop/settings-management/configure-json-file.md) and specify: | ||
|
|
||
|
|
@@ -118,13 +93,13 @@ | |
| } | ||
| ``` | ||
|
|
||
| By setting `"value": true`, the admin ensures ECI is enabled by default. By | ||
| setting `"locked": true`, the admin ensures ECI can't be disabled by | ||
| developers. If you wish to give developers the ability to disable the feature, | ||
| Setting `"value": true` ensures ECI is enabled by default. By | ||
| setting `"locked": true`, ECI can't be disabled by | ||
| developers. If you want to give developers the ability to disable the feature, | ||
| set `"locked": false`. | ||
|
|
||
| In addition, starting with Docker Desktop 4.27, admins can also configure Docker | ||
| socket mount permissions for containers, as described [here](config.md). | ||
| In addition, you can also [configure Docker | ||
| socket mount permissions for containers](config.md). | ||
|
|
||
| For this to take effect: | ||
|
|
||
|
|
@@ -135,12 +110,11 @@ | |
| > | ||
| > Selecting **Restart** from the Docker menu isn't enough as it only restarts some components of Docker Desktop. | ||
| ## What do users see when this setting is enforced by an administrator? | ||
|
Check warning on line 113 in content/manuals/security/for-admins/hardened-desktop/enhanced-container-isolation/_index.md
|
||
aevesdocker marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| > [!TIP] | ||
| > | ||
| > You can now also configure these settings in the [Docker Admin Console](/manuals/security/for-admins/hardened-desktop/settings-management/configure-admin-console.md). | ||
| ### What do users see when this setting is enforced by an admin? | ||
|
|
||
| When Enhanced Container Isolation is enabled, users see: | ||
| - **Use Enhanced Container Isolation** toggled on in **Settings** > **General**. | ||
| - Containers run within a Linux user namespace. | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually this is a typo, shouldn't be in the vocabulary. The correct spelling is Berkeley