CTS-KB

AppArmor

アップアーマー

Application Armor
#Linux セキュリティ #MAC #LSM #Ubuntu #サンドボックス

Ubuntu / Debian / openSUSE 系で採用される Mandatory Access Control(強制アクセス制御) システム。Linux カーネルの LSM(Linux Security Module) フレームワーク上に実装され、プログラムごとに「どのファイルを読み書きできるか」「どの能力(capability)を使えるか」「どのネットワーク操作が可能か」「user namespace を作れるか」などを プロファイルで宣言的に制限する。

SELinux との違い

観点AppArmor(Ubuntu / SUSE)SELinux(RHEL / Fedora)
識別方式パスベースラベルベース
学習コスト
表現力やや限定的細粒度
デフォルト採用Ubuntu / openSUSERHEL / Fedora

Ubuntu ではデフォルト有効で、firefox evince lxc などにあらかじめプロファイルが用意されている。

プロファイルの基本構造

/etc/apparmor.d/<profile-name>
abi <abi/4.0>,
include <tunables/global>

profile myapp /usr/bin/myapp flags=(unconfined) {
  userns,
  /home/*/Documents/** rw,
  network inet,
  include if exists <local/myapp>
}
要素意味
flags=(unconfined)プロファイル自体は制限しない(user namespace 許可など個別ルールだけを足す)
userns,非特権 user namespace の作成許可
/path/** rw,指定パス以下を読み書き可能に
network inet,TCP/IP 通信を許可
include if exists <local/...>ローカルカスタマイズ用

反映と確認

# プロファイル再読み込み
sudo apparmor_parser -r /etc/apparmor.d/<profile-name>

# 全プロファイルの状態確認
sudo aa-status

Ubuntu 23.10 以降の userns 制限

23.10 から kernel.apparmor_restrict_unprivileged_userns=1 がデフォルト有効化され、Electron 系アプリ(Obsidian / Cursor / Insomnia / Postman など)の SUID sandbox がエラーで起動しなくなる。各アプリ用の AppArmor プロファイルで userns, を許可すれば、サンドボックスを保ったまま起動できる。

--no-sandbox 起動との比較

方法セキュリティ影響範囲
AppArmor プロファイル + userns, 許可◎ Electron 内部 sandbox を維持該当アプリのみ
--no-sandbox 起動✗ Electron sandbox 無効化該当アプリのみ
sysctl で全体緩和△ システム全体緩和OS 全体

関連記事

関連用語