コンピュータ セキュリティにおいて、強制アクセス制御( MAC ) は、セキュリティで保護された環境(オペレーティングシステムやデータベースなど) が主体または開始者がオブジェクトまたはターゲットにアクセスしたり変更したりする能力を制限するアクセス制御の一種を指します。[ 1 ]オペレーティングシステムの場合、主体はプロセスまたはスレッドであり、オブジェクトはファイル、ディレクトリ、TCP / UDPポート、共有メモリ セグメント、または IO デバイスです。主体とオブジェクトはそれぞれ一連のセキュリティ属性を持っています。主体がオブジェクトにアクセスしようとすると、オペレーティングシステム カーネルはこれらのセキュリティ属性を調べ、適用されている認可ルール (ポリシーとも呼ばれる) を調べ、アクセスを許可するかどうかを決定します。データベース管理システムも、そのアクセス制御メカニズムで強制アクセス制御を適用できます。この場合、オブジェクトはテーブル、ビュー、プロシージャなどです。
強制アクセス制御では、セキュリティポリシーはポリシー管理者によって一元的に管理され、(原則として)すべてのユーザーに対して適用されることが保証されます。ユーザーはポリシーを上書きすることができず、例えば、本来アクセスが制限されているファイルへのアクセスを許可することはできません。これに対し、裁量アクセス制御(DAC)は、主体がオブジェクトにアクセスできるかどうかを制御するだけでなく、ユーザーがポリシーに関する決定を下したり、セキュリティ属性を割り当てたりすることを可能にします。
歴史的にも伝統的にも、MACは多層セキュリティ(MLS)や特殊な軍事システムと密接に関連してきました。この文脈では、MACはMLSシステムの制約を満たすための高度な厳格さを意味していました。しかし近年、MACはMLSの枠を超え、より主流になりつつあります。Linux向けのSELinuxやAppArmor 、Windows向けのMandatory Integrity Controlといった最新のMAC実装では、管理者はMLSの厳格さや制約にとらわれることなく、ネットワーク攻撃やマルウェアといった問題に集中できるようになりました。
歴史的に、MAC は米国の機密情報を保護する手段として、マルチレベル セキュリティ(MLS)と強く関連付けられてきました。この主題に関する先駆的な研究であり、オレンジ ブックとしてよく知られているTrusted Computer System Evaluation Criteria (TCSEC) は、MAC を「オブジェクトに含まれる情報の機密性 (ラベルで表される) と、そのような機密性を持つ情報にアクセスするための主体の正式な承認 (つまり、クリアランス) に基づいてオブジェクトへのアクセスを制限する手段」として最初に定義しました。[ 2 ] Honeywellの SCOMP、USAFのSACDIN、NSAのBlacker、Boeingの MLS LAN [ 3 ] [ 4 ]などの MAC の初期実装は、強力な強制力で軍事指向のセキュリティ分類レベルを保護するために MLS に焦点を当てていました。
MACにおける「強制」という言葉は、軍事システムでの使用に由来する特別な意味合いを持つようになりました。この文脈において、MACは極めて高い堅牢性を意味し、制御メカニズムがあらゆる種類の妨害行為に耐えられることを保証します。これにより、大統領令12958号のような政府命令によって義務付けられたアクセス制御を確実に実施することが可能になります。実施は商用アプリケーションよりもさらに厳格に行われるべきであり、ベストエフォート型のメカニズムによる実施は認められません。MACでは、義務を絶対的またはほぼ絶対的に実施できるメカニズムのみが許容されます。これは非常に困難な要求であり、高信頼性戦略に馴染みのない人には非現実的だと考えられることもありますが、馴染みのある人にとっても非常に難しいことです。
システムによっては、ユーザーが他のユーザーへのアクセスを許可するかどうかを決定する権限を持つ場合があります。そのためには、すべてのユーザーがすべてのデータに対するクリアランスを持っている必要があります。これは、MLS システムでは必ずしも当てはまりません。システム環境内のデータへのアクセスを拒否される可能性のある個人またはプロセスが存在する場合、システムは MAC を確実に実行する必要があります。データの分類とユーザーのクリアランスにはさまざまなレベルがあるため、堅牢性には定量化された尺度が必要になります。たとえば、機密扱いの「トップシークレット」情報とクリアランスのないユーザーを含むシステム環境は、「シークレット」情報と少なくとも「機密」のクリアランスを持つユーザーを含むシステム環境よりも堅牢性が高いことが示されます。堅牢性の程度の一貫性を促進し、主観性を排除するために、このトピックに関する広範な科学的分析とリスク評価により、システムのセキュリティ堅牢性機能を定量化し、さまざまなセキュリティ環境で保証される信頼の度合いにマッピングする画期的なベンチマーク標準化が作成されました。その結果は、CSC-STD-004-85 に文書化されています。[ 5 ]堅牢性の 2 つの比較的独立したコンポーネントが定義されました。保証レベルと機能です。どちらの基準も、高い精度で規定されており、これらの基準に基づく認証に対する信頼性は十分に高いものであった。
共通基準規格[ 6 ]はこの科学に基づいており、保証レベルをEALレベルとして、機能仕様を保護プロファイルとして維持することを意図していました。客観的堅牢性ベンチマークのこれら2つの重要な構成要素のうち、EALレベルのみが忠実に維持されました。1つのケースでは、TCSECレベルC2 [ 7 ](MAC対応カテゴリではない)が、制御アクセス保護プロファイル(CAPP)として共通基準でかなり忠実に維持されました。[ 8 ] MLS保護プロファイル(B2に類似したMLSOSPPなど)[ 9 ]はB2よりも一般的です。これらはMLSに準拠していますが、オレンジブックの前身のような詳細な実装要件がなく、目標に重点を置いています。これにより、認証者は評価対象製品の技術的機能が目標を適切に達成しているかどうかを判断する際に主観的な柔軟性が高まり、評価対象製品の一貫性が損なわれ、信頼性の低い製品の認証取得が容易になる可能性があります。こうした理由から、保護プロファイルの技術的な詳細の重要性は、製品の適合性を判断する上で極めて重要である。
このようなアーキテクチャは、特定の分類レベルまたは信頼レベルにある認証済みユーザーまたはプロセスが、異なるレベルの情報、プロセス、またはデバイスにアクセスすることを防止します。これにより、既知および未知のユーザーとプロセスの両方を隔離するメカニズムが提供されます。未知のプログラムには、システムがデバイスやファイルへのアクセスを監視または制御する必要がある、信頼できないアプリケーションが含まれる場合があります。
Unisys社のBlackerプロジェクトなど、いくつかのMAC実装は、2000年代後半に最高機密情報と非機密情報を分離できるほど堅牢であると認証されました。しかし、それらの基盤技術は時代遅れとなり、更新されませんでした。現在、TCSECによってそのレベルの堅牢性で認証された実装は存在しません。ただし、堅牢性に劣る製品はいくつか存在します。
Windows VistaおよびServer 2008以降、Microsoft は、実行中のプロセスに整合性レベル(IL) を追加する強制整合性制御(MIC) を Windows オペレーティングシステムに組み込みました。目的は、信頼性の低いプロセスによる機密情報へのアクセスを制限することです。MIC は、低、中、高、システムの 4 つの整合性レベルを定義します。[ 10 ]デフォルトでは、プロセスは中 IL で開始されます。昇格されたプロセスは高 IL を受け取ります。[ 11 ]デフォルトでは、子プロセスは親の整合性を継承しますが、親プロセスはより低い IL で子プロセスを起動できます。たとえば、Internet Explorer 7 はサブプロセスを低 IL で起動します。Windows は、IL に基づいてオブジェクトへのアクセスを制御します。ファイル、レジストリキー、その他のプロセスやスレッドなど、名前付きオブジェクトには、オブジェクトを使用できるプロセスの最小 IL を示すエントリがACLにあります。MIC は、プロセスの IL がオブジェクトの IL 以上である場合にのみ、プロセスがオブジェクトに書き込んだり削除したりできることを強制します。さらに、メモリ内の機密データへのアクセスを防ぐため、プロセスは読み取りアクセス用により高いILを持つプロセスを開くことはできません。[ 12 ]
Apple Inc. は、 iOSおよびmacOSオペレーティングシステムにTrustedBSDフレームワークの実装を組み込んでいます。[ 13 ] (macOS の「mac」は「Macintosh」の略で、「強制アクセス制御」の略語とは何の関係もありません。) コマンドライン関数は、限定的な高レベルのサンドボックスインターフェイスを提供します。[ 14 ]sandbox_init
Googleが開発したAndroidオペレーティングシステムのバージョン5.0以降では、 SELinux (SEAndroidとして)を使用して、元のUIDベースのDACアプローチの上にMACセキュリティモデルを適用しています。[ 15 ]
Linuxや他の多くのUnixディストリビューションは、CPU (マルチリング)、ディスク、メモリ用の MAC を備えています。OS ソフトウェアは権限を適切に管理できない場合がありますが、Linux は 1990 年代に非 Unix の代替システムよりも安全で安定性が高いことで有名になりました。MAC を実装している主な 3 つの Linux セキュリティ モジュールは、SELinux、AppArmor、およびTOMOYO Linuxです。[ 16 ]
セキュリティ強化Linux(SELinux)は、もともとNSAによって開発され、2000年にオープンソースコミュニティに公開されました。[ 17 ] これはLinux向けの最初のMAC実装の1つであり、最も人気のあるものの1つでもあります。[ 18 ] これはv2.4以降のLinuxカーネルに組み込まれており、Android 5.0以降、Red Hat Enterprise Linux / Fedora Linux、およびSUSE Linux Enterprise / openSUSEでデフォルトで有効になっています。[ 19 ] SELinuxは強力で細かい制御を提供するため、高度なセキュリティ環境に適していますが、多くのユーザーは、その強力さと粒度には高度な複雑さと急な学習曲線が伴うと感じています。[ 16 ]
TOMOYO Linux は、 NTT データ株式会社が開発した、LinuxおよびEmbedded Linux用の軽量 MAC 実装です。2009 年 6 月に Linux Kernel メインライン バージョン 2.6.30 に統合されました。[ 20 ] SELinuxで使用されているラベルベースのアプローチとは異なり、TOMOYO Linux はパス名ベースの強制アクセス制御を実行し、システム動作を記述するプロセス呼び出し履歴に基づいてセキュリティ ドメインを分離します。ポリシーはパス名で記述されます。セキュリティ ドメインは、プロセス呼び出しチェーンによって単純に定義され、文字列で表されます。無効、学習、許可、強制の 4 つのモードがあります。管理者は、異なるドメインに異なるモードを割り当てることができます。TOMOYO Linux は、「学習」モードを導入しました。このモードでは、カーネルで発生したアクセスが自動的に分析され、MAC ポリシーを生成するために保存されます。このモードは、ポリシー作成の最初のステップとなり、後で簡単にカスタマイズできます。
AppArmor は、Linux 2.6 のLinux Security Modules (LSM) インターフェイスを利用する MAC 実装であり、SUSE Linux およびUbuntu 7.10 に組み込まれています。LSM は、カーネル コードのモジュールが ACL (DAC ACL、アクセス制御リスト) を管理できるようにするカーネルAPIを提供します。AppArmor はすべてのプログラムを制限できるわけではなく、バージョン 2.6.36 以降、Linux カーネルにオプションで含まれています。[ 21 ] SUSE は 2025 年以降の新規インストールで SELinux に移行し、Ubuntu はDebianおよびSolusとともに AppArmor をデフォルトで使用しています。[ 19 ] [ 22 ] [ 23 ]
Amon Ott 氏のRSBAC (Rule Set Based Access Control) は、Linux カーネル向けに、さまざまなセキュリティ ポリシー / 決定モジュールを可能にするフレームワークを提供します。実装されているモデルの 1 つは、強制アクセス制御モデルです。RSBAC の設計の一般的な目標は、(廃止された) Orange Book (TCSEC) B1 レベルに到達することでした。RSBAC で使用されている強制アクセス制御モデルは、Unix System V/MLS バージョン 1.2.1 (1989 年に米国国立コンピュータ セキュリティ センターによって開発され、分類は B1/TCSEC) とほぼ同じです。RSBAC は標準カーネルへの一連のパッチを必要としますが、これらはプロジェクト オーナーによってかなり適切に維持されています。
Smack (Simplified Mandatory Access Control Kernel) は、シンプルさを主な設計目標として、一連のカスタム強制アクセス制御ルールを使用してデータとプロセスの相互作用を悪意のある操作から保護するLinux カーネルのセキュリティ モジュールです。 [ 24 ] Linux 2.6.25 リリース以降、正式にマージされています。[ 25 ]
grsecurityは、MAC実装(正確にはRBAC実装)を提供するLinuxカーネルのパッチです。はLSMgrsecurity APIを介して実装されていません。[ 26 ]
ロシア軍向けに開発されたAstra Linux OSには、独自の強制アクセス制御機能がある。[ 27 ]
FreeBSD は、TrustedBSD プロジェクトの一部として実装された強制アクセス制御(MAC)をサポートしています。これは FreeBSD 5.0 で導入され、FreeBSD 7.2 以降ではデフォルトで有効になっています。このフレームワークは拡張可能で、 Bibaやマルチレベルセキュリティなどのポリシーを実装するさまざまな MAC モジュールが用意されています。
Sun社のTrusted Solarisは、強制的なシステム強制アクセス制御メカニズム(MAC)を採用しており、セキュリティポリシーを適用するためにクリアランスとラベルが使用されます。ただし、ラベルを管理する機能があるからといって、カーネルがマルチレベルセキュリティモードで動作するだけの強度を備えているとは限りません。カーネルが管理する保護ドメインでは、ラベルや制御メカニズムへのアクセスが破損から確実に保護されているわけではありません。ユーザーが実行するアプリケーションは、セッションでユーザーが作業しているセキュリティラベルと組み合わされます。情報、プログラム、デバイスへのアクセスは、制御が弱いものとなります。
セキュア ネットワーク サーバー (SNS) を A1-MI レーティングの候補として特定し、8 つの階層レベルと 256 のカテゴリで MAC を適用します。製品パンフレット(1988年版)も参照してください。