Dockerは、現代のDevopsと開発に不可欠なツールになりました。包囲を分離し、衣装を簡素化し、アプリケーションをすばやく拡大することができます。ただし、デフォルトでは、Dockerにはルートが必要であり、これは潜在的に危険なゾーンを作成します。これは、初期段階ではしばしば無視されます。
なぜDockerはルートから機能するのですか? h2>
Dockerは、Linuxの機能を使用しています。Cgroups、名前空間、iptables、マウント、ネットワーキング、その他のシステム機能を使用しています。これらの操作は、スーパーユーザーのみが利用できます。
それが理由です:
* dockerdデーモンはルートから始まります、
* Dockerコマンドはこの悪魔に送信されます。
これにより、作業が簡素化され、システムを完全に制御できますが、同時に潜在的な脆弱性が開かれます。
なぜ危険なのか:コンテナブレイクアウト、CVE、RCE h2>
コンテナブレイクアウト h3>
断熱材が弱いと、攻撃者はchrootまたはpivot_rootを使用してホストに入ることができます。
実際の攻撃の例:
* CVE-2019-5736-RUNCに対する妨害性により、アプリケーションを書き換えてホストのコードを実行できました。
* CVE-2021-3156-sudoに対する妨害性により、容器内にルートを取得して出て行くことができました。
rce(リモートコード実行) h3>
コンテナ内のアプリケーションが脆弱で、rootから始まる場合、RCE =ホストの完全な制御。

rootless docker:問題の解決策 h2>
これらのリスクを最小限に抑えるために、dockerにはルートレスモードが表示されました。このモードでは、demonとコンテナの両方が、ルートと特権のない通常のユーザーに代わって起動されます。これは、攻撃者がコンテナの制御を受け取ったとしても、ホストシステムに害を及ぼすことができないことを意味します。
制限があります。1024未満のポート(たとえば、80および443)を使用することはできません。 -Privilegedモードと一部のネットワークモードは使用できません。ただし、ほとんどの開発シナリオとCI/CD Rootless Dockerでは、タスクに対処し、セキュリティのレベルを大幅に向上させます。
歴史的に、root -antipattern h2>から起動
最初から、最小の特権の原則がUNIX/Linuxの世界に適用されてきました。プロセスが少ないほど、害が少なくなります。 Dockerは当初、ルートアクセスを要求していましたが、今日では潜在的な脅威と見なされています。
ソース h2>
https://docs.docker.com/engine/security/rootless/
https://rootlesscontaine.rs/