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

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

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

policy.conf データベースには、すべてのユーザーに適用される承認、特権、および権利プロファイルが含まれます。詳細については、policy.conf ファイル」を参照してください。

RBAC データベースの関係

各 RBAC データベースには、key= value という構文を使用して、値を格納します。この方式は、将来のデータベースの拡張に対応します。また、ポリシーが認識できないキーワードが検出された場合にも対応できます。key=value の内容によって、ファイルがリンクされます。4 つのデータベースの互いにリンクした次のエントリは、RBAC データベースの相互関係を示しています。


例 10–1 RBAC データベースの接続を示す

次の例で、ユーザー jdoe は、役割 filemgr を割り当てられることにより、File System Management プロファイルの機能を取得します。

  1. ユーザー jdoe には、user_attr データベースの jdoe ユーザーエントリの役割 filemgr が割り当てられます。


    # user_attr - user definition
    jdoe::::type=normal;roles=filemgr
    
  2. 役割 filemgr には、user_attr データベースの役割のエントリの権利プロファイル File System Management が割り当てられます。


    # user_attr - role definition
    filemgr::::profiles=File System Management;type=role

    ユーザーと役割は、ローカルシステムの passwd ファイルおよび shadow ファイル、または分散ネームサービスの同等のデータベースに一意に定義されます。

  3. File System Management 権利プロファイルは prof_attr データベースに定義されています。また、このデータベースは File System Management エントリに 3 つの承認のセットを割り当てます。


    # prof_attr - rights profile definitions and assigned authorizations
    File System Management:::Manage, mount, share file systems:
    help=RtFileSysMngmnt.html;
    auths=solaris.admin.fsmgr.*,solaris.admin.diskmgr.*,solaris.admin.volmgr.*
  4. これらの承認は、auth_attr データベースに定義されています。


    # auth_attr - authorization definitions
    solaris.admin.fsmgr.:::Mounts and Shares::help=AuthFsmgrHeader.html
    solaris.admin.fsmgr.read:::View Mounts and Shares::help=AuthFsmgrRead.html
    solaris.admin.fsmgr.write:::Mount and Share Files::help=AuthFsmgrWrite.html
  5. File System Management 権利プロファイルには、exec_attr データベースでセキュリティー属性を指定したコマンドが割り当てられます。


    # exec_attr - rights profile names with secured commands
    File System Management:suser:cmd:::/usr/sbin/mount:uid=0
    File System Management:suser:cmd:::/usr/sbin/dfshares:euid=0
    …
    File System Management:solaris:cmd:::/usr/sbin/mount:privs=sys_mount
    …

RBAC データベースとネームサービス

RBAC データベースのネームサービスの適用範囲は、ローカルホストにのみ適用することができます。また、適用範囲には、 NIS、NIS+、LDAP などのネームサービスによってサービスが提供されるすべてのホストが含まれます。どのネームサービスが優先されるかは、/etc/nsswitch.conf ファイルでデータベースごとに設定されます。

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 を設定します。役割の場合 typerole になります。

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

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

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

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


% grep operator /etc/user_attr 
jdoe::::type=normal;roles=operator
operator::::profiles=Operator;type=role

auth_attr データベース

承認はすべて auth_attr データベースに格納されます。承認は、ユーザー、役割、権利プロファイルに割り当てることができます。承認を権利プロファイルに配置し、権利プロファイルを役割のプロファイルリストに含めたあと、その役割をユーザーに割り当てることをお勧めします。

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


authname:res1:res2:short_desc:long_desc:attr

フィールドの意味は次のとおりです。

authname

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

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

authname が「grant」で終わるときは、認可承認として機能します。認可承認を持つユーザーは、同じ接頭辞と機能領域で構成される承認をほかのユーザーに委託できます。たとえば、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/profiles/locale/C ディレクトリの index.html ファイルからアクセスできます。

キーワード auths には、auth_attr データベースから選択した承認名をコンマで区切って指定します。承認名には、ワイルドカードとしてアスタリスク (*) を使用できます。

次の例では、標準的な 2 つの prof_attr データベースエントリを示します。Printer Management 権利プロファイルは、Operator 権利プロファイルの補助権利プロファイルです。この例は、表示の都合上、折り返して記載されています。


% grep 'Printer Management' /etc/security/prof_attr
Printer Management:::         Name of rights profile
Manage printers, daemons, spooling: Description
help=RtPrntAdmin.html;              Help file
auths=solaris.admin.printer.read, Authorizations
solaris.admin.printer.modify,solaris.admin.printer.delete
...
Operator:::                         Name of rights profile
Can perform simple administrative tasks: Description
profiles=Printer Management,  Supplementary rights profiles
Media Backup,All;
help=RtOperator.html               Help file

exec_attr データベース

exec_attr データベースでは、成功するためにセキュリティー属性を必要とするコマンドが定義されます。このコマンドは、権利プロファイルの一部です。セキュリティー属性を指定したコマンドは、プロファイルが割り当てられている役割が実行できます。

exec_attr データベースのフィールドは次のようにコロンで区切って指定します。


name:policy:type:res1:res2:id:attr

フィールドの意味は次のとおりです。

profname

権利プロファイルの名前。権利プロファイル名では大文字と小文字が区別されます。この名前は、prof_attr データベースのプロファイルを参照します。

policy

このエントリに関連付けるセキュリティーポリシー。現時点では、susersolaris が有効なエントリです。solaris ポリシーでは、特権が認識されます。suser ポリシーでは、認識されません。

type

指定するエンティティーの種類。現在は、cmd (コマンド) が唯一の有効なエンティティーです。

res1:res2

これらのフィールドは、将来的な使用のために予約されています。

id

エンティティーを識別する文字列。コマンドには、完全パスかワイルドカード (*) をもつパスを指定します。引数を指定する場合は、引数をもつスクリプトを作成し、そのスクリプトを id に指定します。

attr

実行時にそのエンティティーに適用するセキュリティー属性を記述する鍵と値のペアをセミコロン (;) で区切ったリスト (オプション)。 0 または 1 つ以上の鍵を指定できます。有効なキーワードのリストは、適用するポリシーによって異なります。

suser ポリシーに対して有効な鍵は、euiduidegidgid の 4 つです。

  • euid および uid キーワードには、1 つのユーザー名またはユーザー ID (UID) の数値が含まれます。euid を使用すると、コマンドは指定された UID で動作します。これは、実行可能ファイルに setuid ビットを設定することと同じです。uid を使用すると、コマンドは指定された実 UID と実効 UID で動作します。

  • egid および gid キーワードには、1 つのグループ名またはグループ ID (GID) の数値が含まれます。egid を使用すると、コマンドは指定された GID で動作します。これは、実行可能ファイルに setgid ビットを設定することと同じです。gid を使用すると、コマンドは指定された実 GID と実効 GID で動作します。

solaris ポリシーに対して、有効なキーワードは privs です。値は、コンマで区切られた特権のリストから構成されます。

次の例に、exec_attr データベースの標準的な値をいくつか示します。


% grep 'File System Management' /etc/security/exec_attr
File System Management:suser:cmd:::/usr/sbin/ff:euid=0
File System Management:solaris:cmd:::/usr/sbin/mount:privs=sys_mount
…

policy.conf ファイル

policy.conf ファイルは、特定の権利プロファイル、特定の承認、および特定の特権をすべてのユーザーに与える方法を定義します。ファイル内の関連するエントリは、key=value のペアから構成されます。

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


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

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

# grep PRIV /etc/security/policy

#PRIV_DEFAULT=basic
#PRIV_LIMIT=all

権限の詳細は、「特権 (概要)」を参照してください。