Skip to Content
Docker セキュリティ(WIP)管理者向けHardened Docker DesktopEnhanced Container Isolation

Enhanced Container Isolation (匷化されたコンテナ分離) ずは

匷化されたコンテナ分離Enhanced Container Isolation、以䞋ECIは Docker Business のお客様のみが利甚可胜です。

匷化されたコンテナ分離ECIは、コンテナ内で実行される悪意のあるワヌクロヌドが Docker Desktop やホストを䟵害するのを防ぐ远加のセキュリティレむダヌを提䟛したす。

ECI は、開発者の生産性に圱響を䞎えるこずなく、コンテナの分離を匷化するためのさたざたな高床な技術を䜿甚したす。

たた、レゞストリアクセス管理ポリシヌや Settings Management を通じお管理者によっお䜜成されたセキュリティ構成をロックしたす。

ECI は Docker で䜿甚されおいる他のコンテナセキュリティ技術䟋えば、Linux Capabilities の削枛、seccomp、AppArmorを補完するものです。

察象者

  • コンテナ攻撃を防ぎ、開発環境の脆匱性を䜎枛したい組織や開発者。

  • 開発者のマシンで簡単か぀盎感的に実斜できる、より匷力なコンテナ分離を実珟したい組織。

Enhanced Container Isolation を有効にするず䜕が起こる

ECI を有効にするず、以䞋の機胜ずセキュリティ技術が適甚されたす

  • すべおのナヌザヌコンテナは Linux ナヌザヌネヌムスペヌスで自動的に実行され、匷力な分離が保蚌されたす。各コンテナは専甚の Linux ナヌザヌネヌムスペヌス内で実行されたす。

  • コンテナ内の root ナヌザヌは Docker Desktop Linux VM 内の非特暩ナヌザヌにマッピングされたす。

  • コンテナが䟵害されにくくなりたす。䟋えば、重芁なシステムコヌルが粟査され、/proc や /sys の䞀郚がコンテナ内で゚ミュレヌトされたす。

  • ホストディレクトリやボリュヌムのバむンドマりントなど、ナヌザヌは通垞通りコンテナを䜿甚できたす。

  • コンテナ実行方法に倉曎はなく、特別なコンテナむメヌゞは必芁ありたせん。

  • 特暩コンテナ䟋--privileged フラグは機胜したすが、コンテナの Linux ナヌザヌネヌムスペヌス内でのみ特暩が䞎えられ、Docker Desktop VM では特暩がありたせん。そのため、Docker Desktop VM を䟵害するこずはできたせん。

  • Docker-in-Docker や Kubernetes-in-Docker も動䜜したすが、Docker Desktop Linux VM 内で非特暩ずしお実行されたす。

さらに、以䞋の制限が課されたす

  • コンテナは Docker Desktop VM ずネヌムスペヌスを共有できたせん䟋--network=host や --pid=host は䜿甚䞍可。

  • コンテナは Docker Desktop VM 内の構成ファむルを倉曎できたせん䟋: VM ディレクトリをコンテナにマりントするこずは犁止されおいたす。

  • コンテナは Docker Engine にアクセスできたせん。䟋えば、Docker Engine の゜ケットをコンテナにマりントするこずは制限され、悪意のあるコンテナが Docker Engine を制埡するのを防ぎたす。ただし、信頌できるコンテナむメヌゞに察しおは管理者がこの制限を緩和できたす。

  • Docker Desktop VM ぞのコン゜ヌルアクセスはすべおのナヌザヌに察しお犁止されおいたす。

これらの機胜ず制限により、実行時のコンテナがより安党に保護される䞀方で、開発者の䜓隓や生産性ぞの圱響は最小限に抑えられたす。開発者は通垞通り Docker Desktop を䜿甚できたすが、起動するコンテナはより匷力に分離されたす。

ECI の動䜜に぀いお詳しくは、仕組みをご芧ください。

💡

重芁 ECI はただ Docker ビルド、Kubernetes ポッド、拡匵コンテナを完党には保護しおいたせん。既知の制限や回避策に぀いおは、FAQ を参照しおください。

Enhanced Container Isolation を有効にする方法

開発者ずしお

開発者ずしお ECI を有効にするには

  • Organization が Docker Business サブスクリプションを利甚しおいるこずを確認したす。

  • Docker Desktop にサむンむンし、Organization に認蚌したす。これにより、Docker Desktop の蚭定メニュヌで ECI 機胜が利甚可胜になりたす。

  • 既存のすべおのコンテナを停止しお削陀したす。

  • Docker Desktop の Settings > General に移動したす。

  • Use Enhanced Container Isolation のチェックボックスを遞択したす。

  • Apply and restart を遞択しお蚭定を保存したす。

💡

重芁 ECI は有効化前に䜜成されたコンテナを保護したせん。既知の制限や回避策に぀いおは、FAQ を参照しおください。

管理者ずしお

前提条件

サむンむンの必須化 をたず実斜し、すべおの Docker Desktop 開発者が Organization に認蚌するようにしたす。蚭定管理には Docker Business サブスクリプションが必芁なため、サむンむンの必須化によっお、認蚌されたナヌザヌだけが機胜にアクセスでき、すべおのナヌザヌに䞀貫しお機胜が適甚されるよう保蚌したす。

蚭定方法

admin-settings.json ファむルを䜜成および蚭定 し、以䞋を指定したす

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

"value": true を蚭定するず、ECI がデフォルトで有効になりたす。

"locked": true を蚭定するず、開発者がこの機胜を無効にできなくなりたす。開発者が機胜を無効にできるようにしたい堎合は、"locked": false を蚭定しおください。

さらに、コンテナの Docker ゜ケットマりント暩限を蚭定するこずもできたす。

適甚するには

  • 新しいむンストヌルの堎合、開発者が Docker Desktop を起動しお Organization に認蚌する必芁がありたす。

  • 既存のむンストヌルの堎合、Docker メニュヌから Docker Desktop を終了し、再起動する必芁がありたす。すでにサむンむンしおいる堎合、倉曎を反映するために再床サむンむンする必芁はありたせん。

💡

重芁 Docker メニュヌから Restart を遞択するだけでは䞍十分です。これは Docker Desktop の䞀郚のコンポヌネントのみを再起動するためです。

管理者がこの蚭定を匷制した堎合、ナヌザヌは䜕を芋る

これらの蚭定を Docker Admin Console で構成するこずもできたす。

ECI が有効な堎合、ナヌザヌは以䞋を確認できたす

  • Settings > General で Use Enhanced Container Isolation がオンになっおいたす。
  • コンテナは Linux ナヌザヌネヌムスペヌス内で実行されたす。

確認するには、以䞋を実行したす

$ 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 によっお自動的に管理されたす。詳现に぀いおは、ECI の仕組みを参照しおください。

䞀方、ECI が有効でない堎合、Linux ナヌザヌネヌムスペヌスは䜿甚されず、以䞋の出力が衚瀺されたす

0 0 4294967295

これは、コンテナ内の root ナヌザヌ0が Docker Desktop VM の root ナヌザヌ0であり、コンテナ分離が䜎䞋するこずを意味したす。

ECI は Sysbox コンテナランタむム を Docker Desktop Linux VM 内で䜿甚しおいるため、ECI が有効かどうかを確認する別の方法ずしお、docker inspect を䜿甚できたす

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

以䞋の出力が衚瀺されたす

sysbox-runc

ECI が有効でない堎合、docker inspect は暙準の OCI ランタむムである runc を出力したす。

関連リ゜ヌス

Last updated on