私の理解では、AppArmor と SELinux の両方が、コンテナー間の分離に追加のセキュリティ レイヤーを提供する強制アクセス制御 (MAC) システムを実装しており、Docker には両方のデフォルト ポリシーが付属しています。
ただし、SELinux は具体的には Multi Category Security (MCS) を使用して、システム上の個々のコンテナーがその特定のコンテナー用にラベル付けされたホスト上のファイルにのみアクセスできるようにすることができます (詳細:記事、プレゼンテーション)。つまり、2 つの Docker コンテナー A および B が単一のホスト上でスピンアップされている場合、Docker に付属するデフォルトの SELinux セキュリティ ポリシーは、ブレークアウトが発生した場合、コンテナー A の Linux プロセスがアクセスできないことを実際に強制します。コンテナ B に属するファイル。それだけでなく、ファイルをホストからコンテナにマウントできる唯一の方法は、ボリュームに接尾辞が付けられている場合です。":Z" を使用して、コンテナーがそれらにアクセスできるように、そのパスのホスト上のファイルに関連する MCS ラベルを確実に追加するよう Docker に指示します。
それどころか、AppArmor で同様のメカニズムへの参照を見つけることができません。代わりに、Docker のデフォルトの AppArmor プロファイルは、コンテナ間のアクセスを拒否することではなく、主に特定のファイル システム パスとホスト リソースへのアクセスを拒否することを目的としているようです。
私の質問は、Docker のデフォルトの AppArmor プロファイルを使用すると、上記の SELinux を使用した場合と同じ効果的な保護が得られるのでしょうか? AppArmor は、あるコンテナから別のコンテナのファイルへのアクセスをブロックしますか? はいの場合、どのようにそれを達成しますか?