セキュリティ管理役割が追加することのできる Trusted Solaris セキュリティ機能には次のものがあります。
監査イベント
監査クラス
実行プロファイル
役割
承認
特権
監査イベントおよび監査クラスの追加に関しては、マニュアル『Trusted Solaris の監査管理』を参照してください。実行プロファイルの追加に関しては、「プロファイルマネージャを使った実行プロファイルの作成または変更」で説明します。役割の追加に関しては、「新しい役割の作成」で説明しています。この節では承認および特権の追加方法について説明します。
承認は、実行プロファイルを通じてのみ、そのユーザーに与えられます。
プロファイルマネージャを通じて、各実行プロファイルにはゼロまたはそれ以上の数の承認が割り当てられます。この割り当てられた承認は、各プロファイルの tsolprof(4) エントリ内の「承認 (authorizations)」フィールドに格納されます。承認フィールドの内容は、承認番号、名前、all
、none
のいずれかのキーワードのうち任意のものをコンマで区切ったものです。tsolprof エントリの書式を次に示します。
profile:description:authorizations:actions:commands:links:flags; (<プロファイル名> : <説明> : <承認名> : <アクション名> : <コマンド名> : <リンク名> : <フラグ> ;)
tsolprof ファイルは直接編集しないでください。
下の図は、Audit Review という名前のプロファイルの tsolprof エントリを示しています。このプロファイルは、「端末ログイン」承認 (番号 3) と「ファイルの特権を設定」承認 (番号 9) を持っています。
Audit Review:View The Audit Trail:none:none:/var/sbin;praudit; 3,9;none;none,0x0000000000000000000000000000000000000000000000 0000000000000000000000[0x7ffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffff]:1:none |
アカウントの設定や変更を行う際、セキュリティ管理者は、ユーザーマネージャを使ってゼロまたはそれ以上の数の実行プロファイルを割り当てます。割り当てられたプロファイルの名前は、そのアカウント用の tsoluser(4) エントリ内のプロファイル用のフィールドに格納されます。
次の図は、ローカルに作成された auditadmin という名前の管理役割アカウント用の tsoluser エントリを示しています。このエントリのプロファイル用のフィールドには、割り当てられたプロファイル名をコンマで区切ったものが格納されています。
auditadmin:fixed:automatic:Audit Control,Audit Review,Media Restore,:none:5:l ock:internal, showil,showsl:0x0000:0x000000000000000000000000000000000000000000 00000000000000000000000000:0x7fffffffffffffffffffffffffffffffffffffffffffffffff fffffffff:utadm:res1:res2:res3 |
上の例では、この新しい役割には、Audit Control、Audit Review、Media Restoreという 3 つのプロファイルが割り当てられています。
新しい承認を追加するには、その承認のためのエントリを次の 2 つのファイルに追加する必要があります (localename はロケール名を示しています)。
/usr/include/tsol/auth_names.h
/usr/lib/tsol/locale/localename/auth_name
ヘッダーファイル /usr/include/tsol/auth_names.h には、承認用の明示的定数とそれに関連付けられている番号が定義されています。最大で 128 個の承認が定義できます。次に示すように、TSOL_AUTH_*
ではじまる 55 個の承認が事前に定義されています。デフォルトでは、これらの承認は番号として 1〜55 を持ち、番号 0 は承認が存在しないことを表します。
TSOL_AUTH
承認
TSOL_AUTH_ENABLE_LOGIN = 1, /* indirectly required*/ . . . TSOL_AUTH_PRINT_MAC_OVERRIDE = 55, |
これ以外に、番号 56〜89 の承認が、将来のサンの拡張のために予約されています。これらの承認は、次の図に示すように、いずれも tsol_auth_reserved という名前で識別されています。
tsol_auth_reserved53 = 53, ` . . . tsol_auth_reserved89 = 89, |
auth_reserved という名前で識別される残りの承認が、任意のサイトでの拡張用に使用可能です。これらの承認を次の図 に示します。
auth_reserved90 = 90, . . . auth_reserved127 = 127 |
デフォルトのシステムでは、auth_name(4) ファイルは、/usr/lib/tsol/locale/localename にあります (localename はロケール名を示しています)。
デフォルトのロケールにおけるファイルエントリの書式を次の図に示します。
constant:name:description (<定数>:<名前>:<説明>)
/usr/lib/tsol/locale/locale_name/auth.h の定数値は、/usr/include/tsol/auth.h ファイルで定義されている承認の宣言定数名とまったく同じものでなければなりません。名前フィールドには、承認の内容を正確に表すような名前を入力します。名前 フィールドに入力した名前は、プロファイルマネージャなどの各種 GUI で使用されます。
承認の名前 (例 2-8 の例では「ログインを有効化」) は、プロファイルマネージャなどの GUI で承認の一覧を表示する場合に使用されます。
説明フィールドには、承認によって許可される動作の説明を入力します。この説明の文字数に制限はありません。この説明は、プロファイルマネージャによって、セキュリティ管理者役割が承認をプロファイルに割り当てる際のガイド情報として使われます。
例 2-8 に、デフォルトの auth_name ファイル内に定義した実際の承認の例を示します。承認の宣言定数名はすべて英大文字に、逆に承認の名前はすべて英小文字にします。承認の説明が複数行にまたがる場合には行末にバックスラッシュ (¥) を付けます。
TSOLAUTH_ENABLE_LOGIN:enable logins:Allows a user to enable logins on a¥ machine that was just booted. Until logins are enabled there is¥ no interactive use of the machine's resources. |
可能であれば、作業開始前に Trusted Solaris のご購入先に連絡をとり、承認番号の予約をとってください。
ログインし、セキュリティ管理者の役割になります。
必要に応じて、「ログイン後、特定の管理役割になるには」を参照してください。
ADMIN_LOW
のセキュリティ管理者として、管理用エディタを使用して、/usr/include/tsol/auth_names.h ファイルを開き、編集を行います。
必要に応じて、「管理用エディタアクションを使用してファイルを編集するには」を参照してください。
ファイル auth_names.h に、追加したい承認の宣言定数を持つエントリを作成します。
AUTH_POWER = 127, /* To leap tall MAC check failures and otherwise be irresponsible and unaccountable*/ |
ファイルの内容を保存し、このファイルを閉じます。
:wq |
管理用エディタを使用して、ファイル /usr/lib/tsol/locale/locale_name/auth_name を編集用に開きます (localename はロケール名を示しています)。
ファイル auth_name 内に、新しい承認の宣言定数・名前・説明を定義したエントリを作成します。
第 1 フィールドには、ファイル auth_names.h に定義した承認の宣言定数名と全く同じものを指定しなければなりません。
AUTH_POWER:power user:Allows a user to bypass all MAC and DAC checks and auditing flag settings and to be otherwise totally unaccountable for his or her actions. |
ファイルの内容を保存し、このファイルを閉じます。
:wq |
新しい特権を追加するには、その特権のためのエントリを次の 2 つのファイルに追加する必要があります(locale_name はロケール名を示しています)。
/usr/include/sys/tsol/priv_names.h
/usr/lib/tsol/locale/locale_name/priv_name
ヘッダファイル /usr/include/sys/tsol/priv_names.h には、特権用の宣言定数とそれに関連付けられている番号が定義されています。最大で 128 個の特権が定義できます。デフォルトでは、これらの承認は番号として 1 〜 86 を持ち、番号 0 は特権が存在しないことを表します。また、後述するように、番号 29、62 は回収された特権を表します。
PRIV_FILE_AUDIT = 1, /* operational */ PRIV_FILE_CHOWN = 2, /* operational */ PRIV_FILE_DAC_EXECUTE = 3, /* policy */ . . . PRIV_WIN_SELECTION = 84, /* operational */ PRIV_WIN_UPGRADE_IL = 85, /* operational */ PRIV_WIN_UPGRADE_SL = 86, /* operational */ |
例 2-10 に示す特権が、Trusted Solaris での拡張用に予約されています。これらは、いずれも tsol_reserved という名前で識別されます。このうち、予約リストの番号 62 は回収された特権 (以前定義されていたが、現在は未定義である特権) を表します。このファイルの先頭に説明されているように、任意のユーザーが一度定義した特権を未定義に戻す場合、その特権は予約リストの先頭に追加するようにします。
/* Reserved for Trusted Solaris */ tsol_reserved28 = 28, tsol_reserved29 = 29, tsol_reserved62 = 62, tsol_reserved87 = 87, tsol_reserved88 = 88, tsol_reserved89 = 89, |
reserved という名前で識別される残りの特権が、任意のサイトでの拡張用に使用可能です。これらの特権を次の例に示します。
/* Reserved for ISV, GOTS, integrator, ... use */ reserved90 = 90, reserved91 = 91, reserved92 = 92, . . . reserved126 = 126, reserved127 = 127, reserved128 = 128 |
/usr/lib/tsol/locale/locale_name/priv_name ファイル内のエントリの書式を次に示します (locale_name はロケール名を示しています)。
constant:name:description(<定数>:<名前>:<説明>)
(priv_name(4) のマニュアルページを参照してください。) 上記の constant フィールドの値は、ファイル /usr/include/sys/tsol/priv.h に定義されている特権の宣言定数名と全く同じものを指定します。名前フィールドには、特権の内容を正確に表すような名前を入力します。名前フィールドに入力した名前は、GUI で使用されます。
特権の名前は、プロファイルマネージャ、ファイルマネージャなどの GUI で特権の一覧を表示する場合に使用されます。
説明フィールドには、特権によって許可される動作の説明を入力します。この説明の文字数に制限はありません。この説明は、プロファイルマネージャによって、セキュリティ管理者が特権をプログラムに割り当てる際のガイド情報として使われます。
例 2-12 に、デフォルトの priv_name
ファイル内に定義した特権の例を示します。特権の宣言定数名はすべて英大文字に、逆に特権の名前はすべて英小文字にします。特権の説明が複数行にまたがる場合には行末にバックスラッシュ (¥) を付けます。
PRIV_FILE_AUDIT:file_audit:Allows a process to get or set a file's or ¥ directory's audit preselection information. The auditing preselection ¥ information may override the preselection information associated with ¥ a process' access to a file or directory. ¥ Allows a process to get or set a file's or directory's public object ¥ flag. The public object flag may override the successful read/search ¥ access preselection information associated with a process' access to ¥ a file or directory. |
可能であれば、作業開始前に Trusted Solaris のご購入先に連絡をとり、特権番号の予約をとってください。
ログインし、セキュリティ管理役割になります。
必要に応じて、「ログイン後、特定の管理役割になるには」を参照してください。
ADMIN_LOW
として、管理用エディタを使用して、/usr/include/sys/tsol/priv_names.h ファイルを開き、編集を行います。
必要に応じて、「管理用エディタアクションを使用してファイルを編集するには」を参照してください。
priv_names.h ファイルの先頭にあるコメントを読みます。
コメントを次の図に示します。
/ * * ********************** IMPORTANT ********************** * * The privilege names should be maintained in alphabetical order * not numeric order. * * When a privilege is retired it should be placed in the appropriate * reserved area in the form "tsol_reserved## = ##," or * "reserved## = ##". * * When a new privilege is needed, it should be taken from the first * available privilege in the appropriate reserved area. * * ISVs, GOTS', integrators who need privileges are encouraged to * request and retire them by contacting their respective Trusted * Solaris support representative. * * This file is parsed by the priv_to_str(3) functions. * * In order to guarantee correct parsing, the format of the * following priv_t definition must be preserved. * * Specifically, the following guidelines must be followed: * * 1. All privileges must have an explicitly assigned id. * DO NOT RELY ON COMPILER TO ASSIGN IDs. * * 2. One privilege id assignment per line. * DO NOT CONCATENATE OR BREAK LINES. * * 3. Do not use the `=' character at anywhere other than * the privilege id assignment. * For example, DO NOT use `=' in the comments. |
ファイル priv_names.h に、追加したい特権の宣言定数を持つエントリを作成します。
入力例を次に示します。
PRIV_RISKY = 90, |
ファイルの内容を保存し、このファイルを閉じます。
:wq |
管理用エディタを使用して、ファイル /usr/lib/tsol/locale/locale_name/priv_name を編集用に開きます (locale_name はロケール名を示しています)。
たとえば、C ロケールでは、/usr/lib/tsol/locale/C/priv_name ファイルを編集します。
ファイル priv_name 内に、新しい特権のための宣言定数、名前、説明を定義したエントリを作成します。
第 1 フィールドには、上の例のファイル priv_names.h に定義した特権の宣言定数名とまったく同じものを指定しなければなりません。
入力例を次に示します。
PRIV_RISKY:override everything:Allows a process to bypass all MAC and ¥ DAC checks and auditing flag settings and be otherwise totally ¥ unaccountable. |
ファイルの内容を保存し、このファイルを閉じます。
:wq |