この章では、第 18 章「役割によるアクセス制御 (概要)」 の追加情報を提供します。
この章の内容は次のとおりです。
RBAC タスクについては、第 19 章「役割によるアクセス制御 (手順)」を参照してください。
この節では、役割によるアクセス制御 (RBAC) の要素について詳細に説明します。
Solaris 9 には、事前定義済みの役割は組み込まれていません。顧客サイトの管理者は、設定する役割の種類を決定する必要があります。ただし、適切な事前定義済みの権利プロファイルを対応する役割に割り当てると、次の 3 つの推奨される役割を簡単に構成できます。
「Primary Administrator」権利プロファイル – すべての管理タスクを実行できる役割用。ほかのユーザーに権限を与えたり、管理役割に関連付けられた権限を編集したりする。この役割のユーザーは、Primary Administrator 役割を割り当てたり、他のユーザーに権利を与えたりすることができる
「System Administrator」権利プロファイル – セキュリティに関係しない管理タスクを実行できる役割用。たとえば、System Administratorは、新しいユーザーアカウントは追加できるが、パスワードを設定したりほかのユーザーに権利を与えたりすることはできない
これらの権利プロファイルを利用すると、システム管理者は権利プロファイルを組み合わせたり調整したりしなくても、1 つの権利プロファイルを使って推奨される役割を構成することができます。
役割をカスタマイズするときは、役割に割り当てられた権利プロファイルの順序を詳細に確認する必要があります。同一のコマンドを複数回入力しても、エラーにはなりません。権利プロファイルでは、最初に発生したコマンドに割り当てられる属性が優先され、後続の同一コマンドはすべて無視されます。
root は、役割として設定することもできます。root を役割に設定すると、ユーザーは root として直接ログインできなくなり、通常のユーザーとしてログインする必要があります。root を役割にするを参照してください。
この節では、いくつかの標準的な権利プロファイルについて説明します。
「Primary Administrator」権利プロファイルは、Primary Administrator 役割用に設計されている。Primary Administrator 権利プロファイルでは、ワイルドカードを使用できる
「System Administrator」権利プロファイルは、System Administrator 役割用に設計されている。System Administrator 権利プロファイルでは、複数の補助プロファイルを組み合わせて強力な役割を作成する
「Operator」権利プロファイルは、Operator 役割用に設計されているOperator 権利プロファイルでは、複数の補助プロファイルを組み合わせて単純な役割を作成する
「Basic Solaris User」権利プロファイルには、 policy.conf ファイルを使用して、セキュリティに関係しないタスクをユーザーに割り当てる
次の節の表では、コマンド、承認、補助権限、権利プロファイル、関連するヘルプファイルなど、これらの権利プロファイルの目的と内容を示します。
ヘルプファイルは HTML 形式なので、必要に応じて簡単にカスタマイズできます。ヘルプファイルは、/usr/lib/help/auths/locale/C ディレクトリにあります。
Solaris 管理コンソールの権利ツールを使用して、権利プロファイルの内容を検査することもできます。
All 権利プロファイルは、セキュリティ属性のないコマンドを除いたすべてのコマンドを使用できるようにワイルドカードを使用したプロファイルです。この権利プロファイルは、ほかの権利プロファイルに明示的に割り当てられていないすべてのコマンドにアクセスできる役割です。All 権利プロファイルまたはワイルドカードを使用するその他の権利プロファイルを使用しないと、役割は明示的に割り当てられているコマンド以外にはアクセスできません。これは、あまり実用的ではありません。
権利プロファイルのコマンドは、発生順に解釈されます。このため、ワイルドカードを使用する場合は、最後に指定します。明示的に割り当てた属性が、誤って優先指定されないようにするためです。All 権利プロファイルを使用する場合は、最後に割り当ててください。
表 20–1 All 権利プロファイルの内容
目的 |
内容 |
---|---|
ユーザーまたは役割として任意のコマンドを実行する |
コマンド: * ヘルプファイル: RtAll.html |
Primary Administrator 権利プロファイルには、システム上で最も強力な役割が割り当てられます。実質的に、スーパーユーザーの機能を持つ役割が提供されます。
solaris.* 承認は、実質的に Solaris ソフトウェアから提供されるすべての承認を割り当てる
solaris.grant 承認は、任意の権利プロファイル、役割、またはユーザーに任意の承認を割り当てる
*:uid=0;gid=0 のコマンド割り当ては、UID=0 および GID=0 ですべてのコマンドを実行する
ヘルプファイル RtPriAdmin.html はサイト内では同一であるため、必要に応じて変更できます。ヘルプファイルは、 /usr/lib/help/auths/locale/C ディレクトリに格納されています。
Primary Administrator 権利プロファイルがサイトのセキュリティポリシーと矛盾する場合は、 このプロファイルを変更したり、割り当てないようにしたりすることもできます。ただし、Primary Administrator 権利プロファイルのセキュリティ機能は、ほかの権利プロファイル処理するのに必要となります。
表 20–2 Primary Administrator 権利プロファイルの内容
目的 |
内容 |
---|---|
すべての管理タスクを実行する |
コマンド:* 承認: solaris.*、solaris.grant ヘルプファイル: RtPriAdmin.html |
System Administrator 権利プロファイルは、System Administrator 役割用に設計されています。System Administrator では、Primary Administrator の強力な権限を持たないため、ワイルドカードは使用できません。代わりに、セキュリティに関係しない個別の管理権利プロファイルが割り当てられます。次の表では、補助権利プロファイルに割り当てられているコマンドは説明していません。
All 権利プロファイルは、補助権利プロファイルのリストの最後にあります。
表 20–3 System Administrator 権利プロファイルの内容
目的 |
内容 |
---|---|
セキュリティに関係しない管理タスクを実行する |
補助権利プロファイル: Audit Review、Printer Management、Cron Management、Device Management、File System Management、Mail Management、Maintenance and Repair、Media Backup、Media Restore、Name Service Management、Network Management、Object Access Management、Process Management、Software Installation、User Management、All ヘルプファイル: RtSysAdmin.html |
Operator 権利プロファイルは、権限の弱い管理権利プロファイルで、バックアップとプリンタ管理を行います。ファイルの復元は、セキュリティに影響するため、デフォルトではこの権利プロファイルに割り当てられていません。
表 20–4 Operator 権利プロファイルの内容
目的 |
内容 |
---|---|
単純な管理タスクを実行する |
補助権利プロファイル: Printer Management、Media Backup、All ヘルプファイル: RtOperator.html |
デフォルトでは、Basic Solaris User 権利プロファイルは、policy.conf ファイルによってすべてのユーザーに自動的に割り当てられます。この権利プロファイルでは、通常の操作に使用する基本的な承認を与えます。Basic Solaris User 権利プロファイルを使用するときは、サイトのセキュリティ要件を考慮する必要があります。高いセキュリティを必要とするサイトでは、この権利プロファイルを policy.conf ファイルから削除することをお勧めします。
表 20–5 Basic Solaris User 権利プロファイルの内容
目的 |
内容 |
---|---|
すべてのユーザーに自動的に権限を割り当てる |
承認: solaris.profmgr.read、 solaris.admin.usermgr.read、solaris.admin.logsvc.read、 solaris.admin.fsmgr.read、solaris.admin.serialmgr.read 、solaris.admin.diskmgr.read、solaris.admin.procmgr.user 、solaris.compsys.read、solaris.admin.printer.read 、solaris.admin.prodreg.read、solaris.admin.dcmgr.read 補助権利プロファイル: All ヘルプファイル: RtDefault.html |
Printer Management は、特定のタスクを実行する標準権限ファイルです。Printer Management 権利プロファイルには、承認とコマンドが割り当てられます。次の表では、使用できるコマンドの一部を示します。
表 20–6 Printer Management 権利プロファイルの内容
目的 |
内容 |
---|---|
プリンタ、デーモン、スプール処理を管理する |
承認: solaris.admin.printer.delete、solaris.admin.printer.modify、solaris.admin.printer.read コマンド: /usr/sbin/accept:euid=lp、/usr/ucb/lpq:euid=0、/etc/init.d/lp:euid=0、/usr/bin/lpstat:euid=0、/usr/lib/lp/lpsched:uid=0、/usr/sbin/lpfilter:euid=lp ヘルプファイル: RtPrntMngmnt.html |
「承認」とは、役割またはユーザーに許可できる個別の権限のことです。RBAC に準拠したアプリケーションによって承認が確認されてから、ユーザーはアプリケーションまたはアプリケーションの特定の操作へのアクセス権を取得します。従来の UNIX アプリケーションでは、UID=0 で承認が確認されていました。
承認名には、RBAC の内部およびファイル内で使用される名前 (solaris.admin.usermgr.pswd など) と、グラフィカルユーザーインタフェースに表示される短い名前 (Change Passwords など) があります。
承認名の書式は、インターネット名と逆の順序になり、サプライヤ、被認証者領域、任意の下位領域、および承認の機能で構成されます。各要素の区切り文字はドット (.) です。たとえば、com.xyzcorp.device.access のように指定します。ただし、Sun から許可される承認では、インターネット名の代わりに接頭辞 solaris が使用されます。システム管理者は、ドットの右側に任意の文字列を表すワイルドカード (*) を使用して、承認を階層方式で適用することができます。
ここでは、承認の使用方法の例を示します。Operator 役割のユーザーは、多くの場合、solaris.admin.usermgr.read 承認に制限されます。この承認では、ユーザーの構成ファイルに対する読み取り権は許可されますが、書き込み権は許可されません。System Administrator 役割では、solaris.admin.usermgr.read 承認だけでなく、ユーザーのファイルを変更できる solaris.admin.usermgr.write 承認も許可されます。ただし、System Administrator には、solaris.admin.usermgr.pswd 承認が許可されないため、パスワードは変更できません。Primary Administrator では、これらの 3 つの承認がすべて許可されます。
Solaris 管理コンソールのユーザーツールのパスワードを変更するには、solaris.admin.usermgr.pswd 承認が必要です。この承認は、smuser、smmultiuser、および smrole コマンドのパスワード変更オプションを使用するときにも必要になります。
接尾辞が grant の承認が許可されたユーザーまたは役割は、割り当てられている承認のうち同じ接頭辞を持つ任意の承認を、ほかのユーザーに委託することができます。
たとえば、solaris.admin.usermgr.grant 承認と solaris.admin.usermgr.read 承認を持つ役割は、solaris.admin.usermgr.read 承認をほかのユーザーに委託できます。solaris.admin.usermgr.grant と solaris.admin.usermgr.* を持つ役割は、solaris.admin.usermgr 接頭辞を持つ任意の承認をほかのユーザーに委託できます。
次の 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 |
この節では、RBAC の管理に使用するコマンドを一覧します。承認を使用してアクセス権を制御できるコマンドについても説明します。
RBAC データベースを直接編集するほかに、次のコマンドを使用して RBAC のタスクへのアクセスを管理できます。
表 20–7 RBAC 管理コマンド
次の表では、承認を使用して Solaris 環境のコマンドオプションを制限する方法を示します。承認も参照してください。
表 20–8 コマンドおよび関連する承認