次の 4 つのデータベースには、RBAC 要素のデータが格納されます。
prof_attr (権利プロファイル属性のデータベース) – 権利プロファイルを定義し、その権利プロファイルに割り当てられた承認を指定し、関連するヘルプファイルを指定する
exec_attr (実行属性のデータベース) – 特定の権利プロファイルに割り当てられたセキュリティ属性を持つコマンドを指定する
コマンドには、セキュリティポリシーを指定することもできます。Solaris オペレーティング環境で現在利用できるセキュリティポリシーは、suser (スーパーユーザーの短縮形) だけです。suser ポリシーはデフォルトで使用され、ID 属性と承認が格納されます。Solaris 環境と相互運用できる Trusted Solaris 環境では、tsol というポリシーが使用されます。今後のリリースでは、ポリシーが追加される予定です。
RBAC の実装では、policy.conf データベースも重要です。このデータベースには、すべてのユーザーにデフォルトで適用される承認と権利プロファイルが含まれます。
次の図は、RBAC データベースの相互関係を示しています。
user_attr データベースには、ユーザーと役割の基本定義が格納されます。ユーザーと役割は、タイプフィールドで識別します。 user_attr データベースには、図に示す属性が格納されます。権利プロファイル名を、コンマで区切って指定します。権利プロファイルは、2 つのデータベースに分けて定義します。prof_attr データベースには、権利プロファイルの ID 情報、そのプロファイルに割り当てる承認、および補助プロファイルが格納されます。exec_attr データベースには、セキュリティポリシーを識別し、コマンド、およびコマンドに関連付けられたセキュリティ属性が格納されます。auth_attr データベースには、Sun 管理コンソールツールに渡す承認情報が格納されます。policy.conf データベースには、すべてのユーザーに適用されるデフォルトの承認と権利プロファイルが格納されます。
各データベースには、key=valueという構文を使用して、値を格納します。この方式は、データベースの拡張に対応するだけでなく、ポリシーが認識できない鍵が検出された場合にも対応できます。
RBAC データベースの適用範囲は、NIS、NIS+、LDAP などのネームサービスを使用している各ホストまたはすべてのホストに適用できます。ローカル構成ファイルと 配布された user_attr データベースの優先順位は、/etc/nsswitch.conf ファイルの passwd エントリに設定します。prof_attr データベースと auth_attr データベースの優先順位は、/etc/nsswitch.conf に個別に設定します。exec_attr データベースには、prof_attr と同じ優先順位が適用されます。たとえば、セキュリティ属性を指定したコマンドを特定のプロファイルに割り当てた場合に、そのプロファイルが 2 つの適用範囲に存在するときは、最初の適用範囲のエントリだけが使用されます。
これらのデータベースは、ローカルシステムに配置するか、NIS、NIS+、LDAP ネームサービスによって管理します。
これらのデータベースは手動編集でき、RBAC を管理するコマンド行アプリケーションで説明するコマンドを使用して操作できます。
user_attr データベースには、ユーザーと役割の情報が格納されます。これらの情報は、passwd および shadow データベースによって利用されます。user_attr データベースには、承認、権利プロファイル、割り当てられた役割など、さまざまなユーザー属性が格納されます。user_attr データベースの各フィールドは次のようにコロンで区切ります。
user:qualifier:res1:res2:attr |
次の表で、これらのフィールドについて説明します。
次の例では、Operator 役割を標準的な user_attr データベースに定義して、それをユーザー johnDoe に割り当てる方法を示しています。役割とユーザーは、type キーワードによって識別されます。
% grep operator /etc/user_attr johnDoe::::type=normal;roles=sysadmin,operator operator::::profiles=Operator;type=role |
承認はすべて auth_attr データベースに格納されます。承認は、 user_attr データベースのユーザー (または役割) に直接割り当てることができます。承認は、ユーザーに割り当てられている権利プロファイルに割り当てることもできます。
auth_attr データベースのフィールドは次のようにコロンで区切ります。
authname:res1:res2:short_desc:long_desc:attr |
次の表で、これらのフィールドについて説明します。
フィールド名 |
説明 |
---|---|
authname |
承認を識別する一意の文字列。書式は prefix.[suffix] 。Solaris オペレーティング環境では、承認の接頭辞として Solaris を使用する。他のすべての承認には、承認を作成する組織のインターネットドメインを逆にしたもので始まる接頭辞を使用する (たとえば、com.xyzcompany)。接尾辞は、一般には機能領域と操作、およびどのように承認されるかを示す authname が接頭辞と機能領域で構成され、ピリオドで終わるときは、実際の承認としてではなく、GUI 内でアプリケーションによって使用されるヘッダーとして機能する。たとえば、authname が solaris.printmgr. の場合、ヘッダーとして使用される authname が grant で終わるときは、認可承認として機能する。この承認を持つユーザーは、同じ接頭辞と機能領域で構成される承認をほかのユーザーに委託できる。たとえば、solaris.printmgr.grant が authname の場合は、認可承認として使用される。solaris.printmgr.grant が許可されたユーザーは、 solaris.printmgr.admin や solaris.printmgr.nobanner などの承認をほかのユーザーに委託する権利を持つ |
res1 |
将来の使用に予約 |
res2 |
将来の使用に予約 |
short_desc |
GUI のスクロールリストの中など、ユーザーインタフェースでの表示に適している承認の簡略名 |
long_desc |
詳しい記述。このフィールドには、承認の目的、承認が使用されるアプリケーション、この使用に関心があるユーザーの種類などを記述する。詳しい記述は、アプリケーションのヘルプテキストに表示できる |
attr |
承認の属性を記述する鍵と値のペアをセミコロン (;) で区切ったリスト (オプション)。0 または 1 つ以上の鍵を指定できる。 キーワード help には HTML 形式のヘルプファイルを指定する。ヘルプファイルは、/usr/lib/help/auths/locale/C ディレクトリの index.html ファイルからアクセスできる |
次の例は、標準的な値がいくつか設定された auth_attr データベースを示します。
% grep printer /etc/security/auth_attr solaris.admin.printer.:::Printer Information::help=AuthPrinterHeader.html solaris.admin.printer.delete:::Delete Printer Information::help=AuthPrinterDelete.html solaris.admin.printer.modify:::Update Printer Information::help=AuthPrinterModify.html solaris.admin.printer.read:::View Printer Information::help=AuthPrinterRead.html |
solaris.admin.printer. はドット(.) で終わっているため、ヘッダーとして定義されます。ヘッダーは、承認の集合を作成するために、GUI によって使用されます。
prof_attr データベースには、権利プロファイルに割り当てる名前、説明、ヘルプファイルの場所、および承認が格納されます。権利プロファイルに割り当てたコマンドとセキュリティ属性は、exec_attr データベースに格納されます (exec_attr データベース を参照)。prof_attr データベースのフィールドは次のようにコロンで区切ります。
profname:res1:res2:desc:attr |
次の表で、これらのフィールドについて説明します。
フィールド名 |
説明 |
---|---|
profname |
権利プロファイルの名前。権利プロファイル名では大文字と小文字が区別される。この名前は、役割とユーザーに権利プロファイルを指定するために、 user_attr データベースでも使用される |
res1 |
将来の使用に予約 |
res2 |
将来の使用に予約 |
desc |
詳しい記述。このフィールドでは、この使用に適したユーザーの種類など、権利プロファイルの目的を説明する。詳しい記述は、アプリケーションのヘルプテキストとして適しているものである必要がある |
attr |
実行時にそのオブジェクトに適用するセキュリティ属性を記述する鍵と値のペアをセミコロン (;) で区切ったリスト (オプション)。0 または 1 つ以上の鍵を指定できる。有効な鍵は、help と auths の 2 つ。 キーワード help には HTML 形式のヘルプファイルを指定する。ヘルプファイルは、/usr/lib/help/auths/locale/C ディレクトリの index.html ファイルからアクセスできる キーワード auths には、auth_attr データベースから選択した承認名をコンマで区切って指定する。承認名には、ワイルドカードとしてアスタリスク (*) を使用できる |
次の例では、標準的な prof_attr データベースを示します。Printer Management 権利プロファイルは、Operator 権利プロファイルに割り当てられる補助権利プロファイルです。
% grep 'Printer Management' /etc/security/prof_attr Printer Management:::Manage printers, daemons, spooling:help=RtPrntAdmin.html; \ auths=solaris.admin.printer.read,solaris.admin.printer.modify,solaris.admin.printer.delete \ Operator:::Can perform simple administrative tasks:profiles=Printer Management,\ Media Backup,All;help=RtOperator.html ... |
実行属性は、特定の UID または GID に関連付けられるコマンドで、権利プロファイルに割り当てられます。セキュリティ属性を指定したコマンドは、権利プロファイルが割り当てられているユーザーまたは役割が実行できます。
exec_attr データベースには、実行属性の定義が格納されます。
exec_attr データベースのフィールドは次のようにコロンで区切って指定します。
name:policy:type:res1:res2:id:attr |
次の表で、これらのフィールドについて説明します。
フィールド名 |
説明 |
---|---|
name |
権利プロファイルの名前。権利プロファイル名では大文字と小文字が区別される。この名前は、prof_attr データベースの権利プロファイルを参照する |
policy |
このエントリに関連付けるセキュリティポリシー。現時点では、suser (スーパーユーザーポリシーモデル) が唯一の有効なエントリである |
type |
指定するエンティティの種類。現在は、cmd (コマンド) が唯一の有効なエンティティである |
res1 |
将来の使用に予約 |
res2 |
将来の使用に予約 |
id |
エンティティを識別する文字列。コマンドには、完全パスかワイルドカードをもつパスを指定する。引数を指定する場合は、引数をもつスクリプトを作成し、そのスクリプトを id に指定する |
attr |
実行時にそのエンティティに適用するセキュリティ属性を記述する鍵と値のペアをセミコロン (;) で区切ったリスト (オプション)。0 または 1 つ以上の鍵を指定できる。有効なキーワードのリストは、適用するポリシーによって異なる。有効な鍵は、euid、uid、egid、gid の 4 つである euid および uid キーワードには、1 つのユーザー名またはユーザー ID (UID) の数値が含まれる。euid を使用すると、コマンドは指定された実効 UID で動作する。これは、実行可能ファイルに setuid ビットを設定することと同じである。uid を使用すると、コマンドは指定された実 UID と実効 UID で動作する egid および gid キーワードには、1 つのグループ名またはグループ ID (GID) の数値が含まれる。egid を使用すると、コマンドは指定された実効 GID で動作する。これは、実行可能ファイルに setgid ビットを設定することと同じである。gid を使用すると、コマンドは指定された実 GID と実効 GID で動作する |
次の例に、exec_attr データベースの標準的な値をいくつか示します。
% grep 'Printer Management' /etc/security/exec_attr Printer Management:suser:cmd:::/usr/sbin/accept:euid=lp Printer Management:suser:cmd:::/usr/ucb/lpq:euid=0 Printer Management:suser:cmd:::/etc/init.d/lp:euid=0 . . . |
policy.conf ファイルには、特定の権利プロファイルと承認をすべてのユーザーに与える方法を定義します。このファイルは、次の 2 つの鍵と値のペアで構成されます。
AUTHS_GRANTED=authorizations – 1 つまたは複数の承認
PROFS_GRANTED=right profiles – 1 つまたは複数の権利プロファイル
次の例では、policy.conf データベースの標準的な値をいくつか示します。
# grep AUTHS /etc/security/policy AUTHS_GRANTED=solaris.device.cdrw # grep PROFS /etc/security/policy PROFS_GRANTED=Basic Solaris User |