web-dev-qa-db-ja.com

AndroidがSELinuxを使用するのはなぜですか?

プロセスを制限/サンドボックス化するにはAndroidはSELinuxを使用します。なぜLinux機能やcgroups + namespacesソリューションではなく、それが選択されたのですか?結局、cgroups + namespacesは一種のホーム成長です。 SELinuxが提供するもの、または他のものが提供しないものは何ですか?

9
user220201

cgroupsと名前空間は分離に関するものですが、SELinuxは必須のアクセス制御システムです。どのシステムコールが許可されるか、プロセス(ドメイン)間で情報がどのように流れるかを許可するきめ細かなアクセスです。

Androidアプリケーションがサブスクライブする必要がある権限は、SELinuxを介して簡単に適用できます。これは、プロセスの分離や多くの潜在的な脆弱性でさえも、SELinuxポリシーを介して軽減できます(脆弱性の悪用の限り)アプリケーションに含まれていないか、カーネルの脆弱性です)。

cgroupsと名前空間は異なる機能を持っていますが、必ずしも排他的なものではありません。SELinux、cgroups、および名前空間は一緒に楽しく使用できます(名前空間の改善されたSELinuxサポートは作業中ですが、すでに一緒に使用できます)。

3
Sven Vermeulen

Cgroups + namespacesテクノロジーは非常に新しいだけでなく、まだ流動的です。この基本的なことをやり直すには長い時間がかかります。 Androidは、ハードウェアメーカーの集まりによってGoogleから提供され、それらの製品に合わせてカスタマイズされています。これらの製品では、独立した開発者の軍隊がソフトウェアを提供しています。

これは、典型的なLinuxディストリビューションとはかなり異なります。これらは、スムーズに連携するように構成する必要のあるソフトウェアのほとんどを提供し、サードパーティに比較的少ない負担でそのような切り替えを実行できる立場にあります。

2
vonbrand