Enhanced Container Isolation (強化されたコンテナー分離)

注意

Enhanced Container Isolation は、Docker Business ユーザーのみ利用できます。

Enhanced Container Isolation (強化されたコンテナー分離) は、コンテナー内で実行されている悪意のあるワークロードが Docker Desktop やホストを侵害するのを防ぐための追加のセキュリティ層を提供します。

開発者の生産性に影響を与えることなく、さまざまな高度な技術を使用してコンテナーの分離を強化します。Docker Desktop 4.13.0 以降で利用できます。

これらのテクニックには次のようなものがあります。

Enhanced Container Isolation が有効になっている場合、これらのメカニズムは自動的に適用され、開発者への機能やパフォーマンスへの影響は最小限に抑えられます。開発者は通常どおり Docker Desktop を使用し続けますが、開発者が起動するコンテナーはより強力に分離されます。

Enhanced Container Isolation により、より強力なコンテナ分離が保証され、IT 管理者が作成したセキュリティ構成 (たとえば、Registry Access Management ポリシーSettings Management) がロックインされます。

注意

Enhanced Container Isolation は、Docker で使用される他のコンテナー セキュリティ技術に追加されたものです。たとえば、Linux Capabilities、Seccomp、AppArmor の削減などです。

このような方にお勧め

Enhanced Container Isolation が有効になっている場合

Enhanced Container Isolation をオンにすると、次の機能が有効になります。

さらに、次の制限が課されます。

これらの機能と制限により、開発者のエクスペリエンスと生産性への影響を最小限に抑えながら、実行時のコンテナーのセキュリティが強化されます。

Enhanced Container Isolation の仕組みの詳細については、「How does it work (機能の仕組み)」を参照してください。

重要

Enhanced Container Isolation は Kubernetes ポッドを保護しません。既知の制限事項と回避策の詳細については、「FAQs and known issues (FAQ と既知の問題)」を参照してください。

Enhanced Container Isolation でサポートされているホスト OS/プラットフォーム

Enhanced Container Isolation (ECI) は、すべてのプラットフォーム (Windows、Mac、Linux) 向けに Docker Desktop 4.13 で導入されました。

Windows ホストの場合、ECI は次のように Docker Desktop Hyper-V と WSL 2 バックエンドの両方で動作します。

詳細および WSL 2 で Enhanced Container Isolation を使用する場合のセキュリティ上の注意事項については、「ECI Support for WSL」を参照してください。

Enhanced Container Isolation を有効にするには

開発者として

開発者として Enhanced Container Isolation を有効にするには:

  1. 所属している組織で Docker Business サブスクリプションが有効であることを確認してください。
  2. Docker Desktop で組織にログインします。これにより、Docker Desktop の [設定] メニューで ECI 機能を利用できるようになります。
  3. 既存のコンテナーをすべて停止して削除します。
  4. Docker Desktop で Settings > General に移動します。
  5. Use Enhanced Container Isolation の横にあるチェックボックスを選択します。
  6. Apply and restart を選択して設定を保存します。

重要

Enhanced Container Isolation では、ECI を有効にする前に作成されたコンテナは保護されません。既知の制限事項と回避策の詳細については、「FAQs and known issues (FAQ と既知の問題)」を参照してください。

管理者として

管理者として Enhanced Container Isolation を有効にするには、まずサインインを強制するように registry.json ファイルを構成する必要があります。これは、Enhanced Container Isolation 機能には Docker Business サブスクリプションが必要なため、この構成を有効にするには Docker Desktop ユーザーが組織に対して認証される必要があるためです。

次に、admin-settings.json ファイルを作成して構成し、以下を指定する必要があります。

{
     "configurationFileVersion": 2,
     "enhancedContainerIsolation": {
        "value": true,
        "locked": true
        }
    }
    

"value": true を設定することで、管理者は ECI がデフォルトで有効になるようにします。"locked": true を設定することで、管理者は開発者が ECI を無効にできないようにします。開発者がこの機能を無効にできるようにしたい場合は、"locked": false を設定します。

これを有効にするには:

重要

Docker メニューから Restart を選択するだけでは、 Docker Desktop の一部のコンポーネントが再起動されるだけなので十分ではありません。

設定の適用後の表示

Enhanced Container Isolation が有効になっている場合、ユーザーには次が表示されます。

確認するには、次を実行します。

$ docker run --rm alpine cat /proc/self/uid_map
    

次の出力が表示されます。

         0     100000      65536
    

これは、コンテナーの root ユーザー (0) が Docker Desktop VM の非特権ユーザー (100000) にマップされていること、およびマッピングが 64K のユーザー ID の範囲に拡張されていることを示します。コンテナー プロセスがコンテナーからエスケープすると、VM レベルでの権限がなくなってしまいます。各コンテナは分離のためにホスト ユーザー ID の排他的な範囲を取得するため、ユーザー ID マッピングは新しいコンテナごとに異なります。ユーザー ID マッピングは Docker Desktop によって自動的に管理されます。詳細については、「How Enhanced Container Isolation works (拡張コンテナ分離の仕組み)」を参照してください。

対照的に、ECI を使用しない場合、Linux ユーザー名前空間はコンテナーに使用されず、次のように表示されます。

         0          0 4294967295
    

これは、コンテナー (0) の root ユーザーが実際には Docker Desktop VM (0) の root ユーザーであることを意味し、コンテナーの分離が軽減されます。

Enhanced Container Isolation では、Docker Desktop Linux VM に埋め込まれた Sysbox コンテナー ランタイムが使用されるため、コンテナーが Enhanced Container Isolation で実行されているかどうかを確認するには、 docker inspect を使用します。

docker inspect --format='{{.HostConfig.Runtime}}' my_container

出力は次のとおりです。

sysbox-runc
    

Enhanced Container Isolation を使用しない場合、docker inspect は標準の OCI ランタイムである runc を出力します。