Solaris のシステム管理 (セキュリティサービス)

RBAC をサポートするデータベース

次の 4 つのデータベースには、RBAC 要素のデータが格納されます。


注 –

コマンドには、セキュリティポリシーを指定することもできます。Solaris オペレーティング環境で現在利用できるセキュリティポリシーは、suser (スーパーユーザーの短縮形) だけです。suser ポリシーはデフォルトで使用され、ID 属性と承認が格納されます。Solaris 環境と相互運用できる Trusted Solaris 環境では、tsol というポリシーが使用されます。今後のリリースでは、ポリシーが追加される予定です。


RBAC の実装では、policy.conf データベースも重要です。このデータベースには、すべてのユーザーにデフォルトで適用される承認と権利プロファイルが含まれます。

RBAC データベースの関係

次の図は、RBAC データベースの相互関係を示しています。

図 20–1 RBAC データベースの関係

exec_attr と auth_attr のデータは prof_attr へ流れ、そこから user_attr と policy.conf へ流れ、最後にユーザー/役割へたどり着きます。

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 データベース

user_attr データベースには、ユーザーと役割の情報が格納されます。これらの情報は、passwd および shadow データベースによって利用されます。user_attr データベースには、承認、権利プロファイル、割り当てられた役割など、さまざまなユーザー属性が格納されます。user_attr データベースの各フィールドは次のようにコロンで区切ります。


user:qualifier:res1:res2:attr

次の表で、これらのフィールドについて説明します。

フィールド名 

説明 

user

passwd データベースに指定されているユーザー名または役割名

qualifier

将来の使用に予約 

res1

将来の使用に予約 

res2

将来の使用に予約 

attr

セミコロン (;) で区切られた、鍵と値のペアからなるリスト (省略可能)。ユーザーがコマンドを実行したときに適用されるセキュリティ属性を表す。有効な鍵は、typeauthsprofilesroles の 4 つ

  • type 鍵には、アカウントが通常ユーザーの場合は normal、役割の場合は role を設定する

  • auths 鍵には、auth_attr データベースの定義名から選択した承認名をコンマで区切って指定する。承認名には、ワイルドカードとしてアスタリスク (*) を使用できる。たとえば、solaris.device.* はすべての Solaris デバイスの承認を意味する

  • profiles 鍵には、prof_attr データベースに定義されている権利プロファイル名をコンマで区切って指定する。権利プロファイルの順序は、UNIX 検索パスと同様に動作する。実行するコマンドにどの属性が適用されるかは、そのコマンドが含まれている、リストの最初の権利プロファイルによって決まる (属性を使用する場合)

  • roles 鍵には、ユーザーに割り当てる役割名をコンマで区切って指定する。役割も同じ user_attr データベースに定義されることに注意する。役割の場合は、type 値に role が設定される。役割を他の役割に割り当てることはできない

次の例では、Operator 役割を標準的な user_attr データベースに定義して、それをユーザー johnDoe に割り当てる方法を示しています。役割とユーザーは、type キーワードによって識別されます。


% grep operator /etc/user_attr 
johnDoe::::type=normal;roles=sysadmin,operator
operator::::profiles=Operator;type=role

auth_attr データベース

承認はすべて auth_attr データベースに格納されます。承認は、 user_attr データベースのユーザー (または役割) に直接割り当てることができます。承認は、ユーザーに割り当てられている権利プロファイルに割り当てることもできます。

auth_attr データベースのフィールドは次のようにコロンで区切ります。


authname:res1:res2:short_desc:long_desc:attr

次の表で、これらのフィールドについて説明します。

フィールド名 

説明 

authname

承認を識別する一意の文字列。書式は prefix.[suffix] 。Solaris オペレーティング環境では、承認の接頭辞として Solaris を使用する。他のすべての承認には、承認を作成する組織のインターネットドメインを逆にしたもので始まる接頭辞を使用する (たとえば、com.xyzcompany)。接尾辞は、一般には機能領域と操作、およびどのように承認されるかを示す

authname が接頭辞と機能領域で構成され、ピリオドで終わるときは、実際の承認としてではなく、GUI 内でアプリケーションによって使用されるヘッダーとして機能する。たとえば、authnamesolaris.printmgr. の場合、ヘッダーとして使用される

authnamegrant で終わるときは、認可承認として機能する。この承認を持つユーザーは、同じ接頭辞と機能領域で構成される承認をほかのユーザーに委託できる。たとえば、solaris.printmgr.grantauthname の場合は、認可承認として使用される。solaris.printmgr.grant が許可されたユーザーは、 solaris.printmgr.adminsolaris.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 データベース

prof_attr データベースには、権利プロファイルに割り当てる名前、説明、ヘルプファイルの場所、および承認が格納されます。権利プロファイルに割り当てたコマンドとセキュリティ属性は、exec_attr データベースに格納されます (exec_attr データベース を参照)。prof_attr データベースのフィールドは次のようにコロンで区切ります。


profname:res1:res2:desc:attr

次の表で、これらのフィールドについて説明します。

フィールド名 

説明 

profname

権利プロファイルの名前。権利プロファイル名では大文字と小文字が区別される。この名前は、役割とユーザーに権利プロファイルを指定するために、 user_attr データベースでも使用される

res1

将来の使用に予約 

res2

将来の使用に予約 

desc

詳しい記述。このフィールドでは、この使用に適したユーザーの種類など、権利プロファイルの目的を説明する。詳しい記述は、アプリケーションのヘルプテキストとして適しているものである必要がある 

attr

実行時にそのオブジェクトに適用するセキュリティ属性を記述する鍵と値のペアをセミコロン (;) で区切ったリスト (オプション)。0 または 1 つ以上の鍵を指定できる。有効な鍵は、helpauths の 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
...

exec_attr データベース

実行属性は、特定の 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 つ以上の鍵を指定できる。有効なキーワードのリストは、適用するポリシーによって異なる。有効な鍵は、euiduidegidgid の 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 ファイル

policy.conf ファイルには、特定の権利プロファイルと承認をすべてのユーザーに与える方法を定義します。このファイルは、次の 2 つの鍵と値のペアで構成されます。

次の例では、policy.conf データベースの標準的な値をいくつか示します。


# grep AUTHS /etc/security/policy
AUTHS_GRANTED=solaris.device.cdrw

# grep PROFS /etc/security/policy
PROFS_GRANTED=Basic Solaris User