ここ数日のAppArmorに関する調査をまとめておく。アドベントカレンダーの季節だけど、特に該当しそうなカレンダーがなかったのでただの記事を書きます...
突っ込みどころはあると思うので、修正指摘等お気軽に。
AppArmor とは
AppArmorはMAC(Mandatory Access Control - 強制アクセス制御)を実現するためのミドルウェアの一つ。同じようにMACを実現するものにはSELinuxなどがあるが、AppArmorはシステム全体というよりはプログラム単位で、ファイル別またはプロセスごとにセキュリティプロファイルを紐づけることができる。
そのプロファイルでは:
- どのファイルにどのようにアクセスできるか/できないか(読み書き実行など)
- ネットワークやRaw Socketなどへのアクセスができるか
以上についてUNIXのファイル権限やKernel Capabilityに関係なく強制的な制限をかけることができる。
UbuntuのCanonical社により開発がされており、Ubuntuではデフォルトで統合されている。その他サポートしているディストロはDebian、Arch Linux、OpenSUSEなど(CentOSは...)。詳細はWikiに。
Dockerと統合して使う
AppArmorが使える環境では、DockerはAppArmorのプロファイルをシステムにインストールし、デフォルトで立ち上げるコンテナでは必ず使うようにしている。
なおこれから以下の手順は、Ubuntu Xenial/Docker 1.12.1/AppArmor 2.10.95(-0ubuntu2.5) で検証している。
続きを読む