必須アクセス制御

必須アクセス制御 (MAC) は、オブジェクトの機密性およびユーザーの認可に基づいてオブジェクトへのアクセスを制限するシステム実施の方法です。 対照的に、任意アクセス制御は、システムによってではなく個別のファイル所有者によって実施されます。

MAC 用のラベルの使用

TrustedAIX®は、ラベルシステムを使ってMACを強制する。 TrustedAIXシステムでは、すべての名前付きオブジェクトは、オブジェクトの機密レベルを識別するための機密ラベル(SL)を持っています。 プロセスにも SL があります。 プロセスの SL は、プロセスがどのレベルの機密情報にアクセスできるかを示します。 通常、プロセスには、オブジェクトにアクセスするために、オブジェクトの機密レベルと等しいかそれ以上の機密レベルがなければなりません。 SL を使用して、ファイルを読み取り専用としてアクセス可能にするか、または通常のユーザーによるファイルへのアクセスを完全に防止することができます。

ファイル、IPC オブジェクト、ネットワーク接続、およびプロセスのようなすべてのシステム・オブジェクトに SL があります。 オブジェクトが作成される時に、SL はそのオブジェクトに自動的に入れられます。 すべてのコア・ダンプはオブジェクトとみなされ、システムによって自動的にラベル付けされます。

TrustedAIXのインストール前に存在したオブジェクトは、TrustedAIXのインストール後にこれらのオブジェクトにアクセスすると、デフォルトの「SYSTEM_LOWSL(SLSL)を受け取ります。 SL は、これらのオブジェクトに永続的に設定されるわけではありません。 SL を設定するためには、settxattr コマンドをオブジェクトに対して実行しなければなりません。 TrustedAIXのインストール後に作成されたオブジェクトでは、オブジェクトのSLは作成プロセスのSLに設定されます。

ユーザーおよびラベル

システムは各ユーザー・アカウントに、システムのデフォルトまたはユーザー固有の設定のいずれかによって有効な SL の範囲を割り当て、ユーザーはこの範囲内でのみ操作を行うことができます。 プロセスまたはユーザーは、プロセスまたはユーザーの現行の機密ラベルでファイルおよびディレクトリーの作成のみを行うことができ、システム強制の MAC の制限の対象となるファイルの読み取りおよび書き込みのみを行うことができます。

MAC の実施

必須アクセス制御は、プロセスがファイルシステム・オブジェクトのオープン、ファイルシステム・オブジェクトの属性の検索、プロセスへのシグナルの送信、STREAM を使用したデータの転送、またはネットワーク・インターフェースを使用したパケットの送受信を試みるときは常に実施されます。 すべてのファイルシステム・オブジェクトへのアクセスは、MAC と DAC の両方の基準を満たした場合にのみ可能です。 ユーザーがファイルへのアクセスを試みると、許可ビットまたは ACL のような DAC 制限が検査される前に MAC 制限が実施されます。

ファイルシステム・オブジェクトへのアクセスは、オブジェクトの SL だけでなく、オブジェクトが常駐するディレクトリーの SL によっても制限されます。 そのため、ファイルシステム・オブジェクトは、オブジェクト自体の SL とは異なる機密レベル (ディレクトリーの SL) で保護することができます。 ファイルシステム・オブジェクトは、1 つ以上のディレクトリーに配置されている複数の名前 (リンク) をもつことができます。 それぞれの名前 (リンク) はリンクが指すファイルと同じ SL で保護されますが、リンクはさまざまなレベルで保護されたディレクトリーに入っているので、さまざまなリンクの有効な保護が異なることがあります。

オブジェクトの名前は、オブジェクトが常駐するディレクトリーに保管されます。 そのため、そのディレクトリーにアクセスするすべてのプロセスで、ディレクトリーの中のすべてのオブジェクトの名前を表示することができます。 ただし、適切なアクセスを行うプロセスのみが、いずれかのオブジェクトからの読み取りまたはオブジェクトへの書き込みを行うことができます。

SL のリスト作成および変更

システム上のオブジェクトおよびプロセスの SL は、lstxattr コマンドを用いて表示することができ、settxattr コマンドを用いて変更することができます。

適切な許可をもつユーザーおよび適切な特権をもつプロセスのみが、ファイルまたはプロセスの SL を変更することができます。

settxattr コマンドを用いて、ファイルシステム・オブジェクトの SL を低レベル SL に変更するためには、ユーザーは aix.mls.label.sl.downgrade 許可をもたなければなりません。 ファイルシステム・オブジェクトの SL をアップグレードするためには、ユーザーは aix.mls.label.sl.upgrade 許可をもたなければなりません。 プロセスの SL を変更するためには、アップグレードには aix.mls.proc.sl.upgrade 許可を、ダウングレードには aix.mls.proc.sl.downgrade 許可をユーザーがもっている必要があります。

オープン・ファイル記述子に関する MAC

読み取り/書き込みおよび単純なファイル・アクセスの場合は、プロセスがファイルにアクセスするときに MAC 検査が行われます。 いったんプロセスがファイルのファイル記述子をもつと、プロセスの SL がファイルの SL よりも低いレベルに変更されたとしても、プロセスはファイルの読み取りおよび書き込みを行うことができます。 ただし、ファイル所有者、許可、ラベル、および特権の設定などの一部の操作では、プロセスがファイル記述子を獲得した後でアクセス検査を実行します。

つまり、MAC 検査および分割ディレクトリー・パスの解決は、プロセスがファイル記述子を使用してファイルにアクセスするときは実行されません。 ファイルまたはプロセス (あるいはその両方) の SL は変更されることがあり、アクセスは引き続き許可されます。