操作がセキュリティーポリシーをバイパス、つまり上書きする場合、操作はその実効セットに特別な特権が必要です。
特権は、プログラム上または管理上、次のように実効セットに追加されます。
実行可能ファイルが root によって所有され、セットユーザー ID のアクセス権ビットが設定されている場合、実効セットにすべての特権を含んで起動されます。たとえば、CDE ファイルマネージャーが実効セットにすべての特権を含んで起動されます。次に、ファイルマネージャーはそのほとんどの特権をプログラム上で放棄し、ラベル間のドラッグ&ドロップ操作の実行に必要な特権のみを保持します。
管理者が、SMF サービス用のマニフェストファイル、または一般コマンド用の RBAC データベース exec_attr ファイルに特権を指定できます。このファイルについての詳細は、exec_attr(4) のマニュアルページを参照してください。
バイナリラベルを変換する場合、および機密ラベルをアップグレードまたはダウングレードする場合、操作には特別な特権が必要です。
ユーザーおよび役割は、特別な特権によって操作を実行できます。その特権は「権利プロファイル」を使用することによって指定できます。特定の特権によって特定の関数を実行できるようにアプリケーションを作成することもできます。特別な特権を必要とするアプリケーションを作成する場合、特権を必要とする関数を実行するときのみ特権を有効にし、関数が完了したら特権を削除するようにします。この方法を「特権ブラケット」と呼びます。詳細は、『Solaris セキュリティーサービス開発ガイド』を参照してください。
バイナリラベルの変換 – ラベルの内部表現と文字列を相互に変換できます。プロセスのラベルが変換されるラベルより優位ではない場合、変換を実行するために、呼び出し元プロセスには sys_trans_label 特権が必要です。
機密ラベルのアップグレードまたはダウングレード – ファイルの機密ラベルを「ダウングレード」または「アップグレード」できます。ファイルが呼び出し元プロセスに所有されていない場合、呼び出し元プロセスには file_owner 特権がその実効セットに必要です。詳細は、setflabel(3TSOL) のマニュアルページを参照してください。
プロセスは、その実効セットに file_downgrade_sl 特権を含めることによって、ファイルシステムオブジェクトの既存の機密ラベルをそれより優位ではない新しい機密ラベルに設定できます。 file_downgrade_sl 特権によって、ファイルを分離ラベルに付け替えることができます。
プロセスは、その実効セットに file_upgrade_sl 特権を含めることによって、ファイルシステムオブジェクトの既存の機密ラベルをそれより優位である新しい機密ラベルに設定できます。
アプリケーションは次のいずれかで動作するので、ほとんどのアプリケーションは特権を使用してアクセス制御をバイパスしません。
アプリケーションは 1 つの機密ラベルで起動され、その同じ機密ラベルでオブジェクトのデータにアクセスします。
アプリケーションは 1 つの機密ラベルで起動され、ほかの機密ラベルでオブジェクトのデータにアクセスしますが、必須アクセス操作がシステムセキュリティーポリシーによって許可されます。たとえば、下位読み取りが MAC によって許可されます。
アプリケーションがそのプロセスの機密ラベルとは異なる機密ラベルでデータにアクセスしようとして拒否される場合、プロセスにはアクセスを得るための特権が必要です。「特権」によって、アプリケーションは MAC または DAC をバイパスできます。たとえば、file_dac_read、 file_dac_write、および file_dac_search 特権は DAC をバイパスします。file_upgrade_sl および file_downgrade_sl 特権は MAC をバイパスします。どのようにアクセスするにしても、アクセスされるデータの格付けが、アプリケーションの設計によって損なわれてはなりません。
アプリケーションがそれ自体の機密ラベルまたは別のオブジェクトの機密ラベルを変更する場合、必ずすべてのファイル記述子を閉じてください。開いているファイル記述子があると、機密データがほかのプロセスに漏れる可能性があります。