Dockerは、ルートがブロックデバイスを読み取らないようにするのをどのように防ぎますか?

Dockerは、ルートがブロックデバイスを読み取らないようにするのをどのように防ぎますか?

Linuxコンテナのセキュリティを理解しようとしています。ルートシェルを実行するドッカーコンテナがあります。コンテナにはに表示されるブロックデバイスはありませんが、/devを使用して作成できますmknod。その後、読み取りブロックデバイス(私のホームパーティションに対応)を使用しようとするfile -s /dev/vda1vda1: no read permission

ブロックデバイスを読み取らないカーネルレベルのセキュリティシステムは何ですか?能力だと思ったのですがないですね。

答え1

cgroup デバイスコントローラは、raw デバイスへのアクセスを制御します。タイプ(文字またはブロック)、プライマリおよびセカンダリデバイス番号に基づいて読み取り、書き込み、および生成権限を指定できます。 Dockerはデフォルトでほとんどのデバイスへの読み書きを許可しません。

cgroup-v2では、デバイスコントローラが削除され、eBPFプログラムをcgroupに接続してデバイスアクセスを確認できます。どのくらい読んで/検索できるか疑問に思います。

関連情報