特権コマンド・データベース

許可、ロール、および特権によって、細分化されたセキュリティー管理を実行することができます。 ただし、さまざまなシステム操作による RBAC の活用によって RBAC セキュリティー・ポリシーを適用することができます。

歴史的には、AIXコマンドの中には認可を直接チェックするものもあったが、これらのチェックを実行するためには、実行コード自体を変更する必要があった。 拡張 RBAC モードでは、システムの実行可能ファイルへの変更を必要とせずに特権コマンド・データベースを使用して、許可検査を実行し関連する特権を付与するためのフレームワークが提供されます。

特権コマンド・データベースでは、ユーザーが通常は実行できないコマンドを実行するために必要な、またはタスクを実行する適切な特権を得るために必要な、コマンドへのアクセスおよび権限が許可されています。 このデータベースでは、特定のコマンドの許可情報とともに、許可検査が成功した場合にプロセスに対して許可される特権を保存しています。 データベースがローカルに保管されている場合、そのデータベースは /etc/security/privcmds ファイルに存在し、情報のスタンザが command-versus-security 属性の形式で含まれています。 次に、このデータベースのいくつかのキー属性を挙げます (すべての属性の詳細については、/etc/security/privcmds ファイルを参照してください)。
accessauths
コマンドの実行を保護するアクセス許可のリスト。 リストされている許可のいずれか 1 つをもつユーザーは、コマンドを実行することができ、さらにコマンドに含まれている特権操作の一部または全部を行うことができます。
innateprivs
固有の特権は、呼び出し側がアクセス許可検査に成功した場合にプロセスに割り当てられる特権です。
authprivs
許可されている特権は、ユーザーに関連する許可がある場合にプロセスに割り当てられる追加の特権です。 この属性では、コマンドのより細分化された制御が可能になり、制限された一連のユーザーが追加の特権操作を実行することができます。
inheritprivs
継承可能な特権は、プロセスから子プロセスに渡される特権です。
secflags
セキュリティー・フラグのリスト。 FSF_EPS は、コマンドの実行時に最大特権セット (MPS) をロードして有効特権セット (EPS) にするためのフラグです

拡張 RBAC モード・システム上のユーザーがコマンドの実行を試みると、そのコマンドは最初に特権コマンド・データベースで検査されます。 そのコマンドが特権コマンド・データベースに存在している場合は、ユーザーのセッションおよびコマンドの accessauths 属性の値に関連付けられている許可に対して検査が行われます。 リストされている許可の 1 つがセッションにある場合には、ユーザーは、コマンドに対する DAC 実行検査の結果に関わらずコマンドを実行することができます。 呼び出し時は、コマンド・プロセスには、最大特権セット (MPS) に割り当てられた innateprivs 属性の中にリストされている特権があります。 追加の許可検査は、authprivs 属性にリストされている「許可 ? 特権」のペアによって実行されます。 リストされている許可の 1 つがセッションにある場合には、関連する特権もコマンド・プロセスの MPS に追加されます。 secflags 属性で設定されている FSF_EPS 値をもつ特権コマンド・データベース内のコマンド・エントリーは、コマンドの呼び出し時に MPS 中のすべての特権を有効特権セット (EPS) に割り当てます。

コマンドは、特権コマンド・データベース内にあるときは特権コマンドとして認識されます。 特権コマンド・データベースにリストされていない setuid プログラムは技術的には特権コマンドのままですが、RBAC の性質を記述する時に特権コマンドとして参照されることはありません。 コマンドに特権コマンド・データベース中のエントリーがない場合には、そのコマンドは特権コマンドではなく、そのコマンドへのアクセスは DAC およびコマンド自体によって実行されます。 さらに、コマンドが特権コマンド・データベースにリストされている場合で、ユーザーのセッションにコマンドの呼び出しを許可する権限がない場合は、システムは DAC アクセス検査に戻り、その検査に問題がなければコマンドの実行を許可します。

いくつかの管理コマンドが特権コマンド・データベースの操作および照会のために作成されています。 特権コマンド・データベース内の項目は、 lssecattr コマンドで表示される setsecattr コマンドを使用して作成または変更できます。 rmsecattr コマンドで削除されます。