論理上、それぞれのトークンには、トークンの型識別子があり、その後にそのトークン固有のデータが続きます。各トークンは固有の書式と構造を持ちます。表 B-1 に監査トークンを示します。「TS7」に丸の付いているトークンは、Trusted Solaris 2.5.1 および 7 でだけ使用するものです。「TS7」に丸の付いていないトークンは、Solaris Basic Security Module の監査トークンの改良版です。トークンのスキーマは拡張できます。
表 B-1 Trusted Solaris 監査トークン
トークン名 |
説明 |
TS7 |
---|---|---|
acl |
アクセス制御リスト情報 |
○ |
arbitrary |
書式とタイプの情報を持つデータ |
|
arg |
システムコールの引数の値 |
|
attr |
ファイル属性 |
|
clearance |
認可上限情報 |
○ |
exec_args |
exec システムコール引数 |
|
exec_env |
exec システムコール環境変数 |
|
exit |
プログラム終了情報 |
|
file |
監査ファイル情報 |
|
groups |
プロセスグループ情報 (廃止) |
|
header |
レコードの開始を示す |
|
host |
監査レコード収集元のホストを示す |
○ |
ilabel |
情報ラベルの情報 |
TS2.5.1 (TS 7 では廃止) |
in_addr |
インターネットアドレス |
|
ip |
IP ヘッダー情報 |
|
ipc |
System V の IPC 情報 |
|
ipc_perm |
System V の IPC オブジェクトトークン |
|
iport |
インターネットポートアドレス |
|
liaison |
トラステッドネットワーク用連絡情報 |
○ |
newgroups |
プロセスグループ情報 |
|
opaque |
非構造化データ (不定書式) |
|
path |
パス情報 (パス) |
|
priv |
特権の使用情報 |
○ |
privilege |
特権の設定情報 |
○ |
process |
process トークン情報 |
|
return |
システムコールの状態 |
|
seq |
トークンのシーケンス番号 |
|
slabel |
機密ラベル情報 |
○ |
socket |
ソケットのタイプとアドレス |
|
socket-inet |
ソケットのポートとアドレス |
|
subject |
subject 情報 (process トークンと同じ構造体) |
|
text |
ASCII 文字列 |
|
trailer |
レコードの終了を示す |
|
xatom |
X ウィンドウのアトム識別情報 |
○ |
xclient |
X クライアントの識別情報 |
○ |
xcolormap |
X ウィンドウの色情報 |
○ |
xcursor |
X ウィンドウのカーソル情報 |
○ |
xfont |
X ウィンドウのフォント情報 |
○ |
xgc |
X ウィンドウのグラフィカルコンテキスト情報 |
○ |
xpixmap |
X ウィンドウのピクセルマップ情報 |
○ |
xproperty |
X ウィンドウのプロパティ情報 |
○ |
xselect |
X ウィンドウのデータ情報 |
○ |
xwindow |
X ウィンドウのウィンドウ情報 |
○ |
監査レコードには必ず header トークンがあり、場合により trailer トークンもあります。 header トークンは、監査トレールの中で監査レコードの始まる位置を示します。オプションの trailer トークンがあると、監査トレールの後方検索ができます。監査レコードには、一部のユーザーアクションを原因としないイベントの監査レコードを除いて、必ず subject トークンがあります。ユーザーアクションによるイベントの場合には、これら 2 つのトークンがそのイベントのきっかけとなったプロセスの値を参照します。また、非同期イベントの場合には、process トークンがシステムを参照します。監査レコードの読み方の例については、「監査レコードの読み方」を参照してください。
acl トークンは、オブジェクトの適所にあるアクセス制御リストの情報を伝えます。現在のアクセス制御リストがない場合には、このトークンは監査レコードに書き込まれません。また、監査レコードの書式で必要とされていなければ、このトークンは通常、適切な監査ポリシーが設定されている場合にだけ記録されます。次のフィールドがあります。
トークン ID
配列要素のオブジェクトタイプ
配列要素のユーザー ID またはグループ ID
サブジェクトに与えられたアクセス権
次の図は、トークンの書式を示しています。
acl トークンのリストは、praudit(1M) により次のように表示されます。
acl,user_obj,,rwx acl,user,bin,--- acl,group_obj,,r-x acl,class_obj,,r-- acl,other_obj,,r-x
arbitrary トークンには、監査トレールの情報が密封されています。このトークンは 4 つの固定フィールドと、データ列で構成されています。項目列には多数の項目がある場合があります。次のフィールドがあります。
トークン ID
10 進数のような推奨書式
int のような蓄積データのサイズ
データ列の項目数
項目列
次の図は、トークンの書式を示しています。
出力書式フィールドは、表 B-2 の値をとることができます。
表 B-2 arbitrary トークンの出力書式フィールドの値
値 |
アクション |
---|---|
AUP_BINARY |
2 進数でデータを出力 |
AUP_OCTAL |
8 進数でデータを出力 |
AUP_DECIMAL |
10 進数でデータを出力 |
AUP_HEX |
16 進数でデータを出力 |
AUP_STRING |
文字列でデータを出力 |
項目サイズフィールドは、表 B-3 の値をとることができます。
表 B-3 arbitrary トークンの項目サイズフィールドの値
値 |
アクション |
---|---|
AUR_BYTE |
バイト単位のデータ (1 バイト) |
AUR_SHORT |
ショート単位のデータ (2 バイト) |
AUR_LONG |
ロング単位のデータ (4 バイト) |
AUR_LONGLONG |
ロングロング単位のデータ (8 バイト) |
arbitrary トークンは、praudit により次のように表示されます。
arbitrary,decimal,int,1 42
arg トークンには、システムコールの引数情報が入っています。監査レコードでは、32 ビット整数のシステムコール引数が認められます。次のフィールドがあります。
トークン ID
関連システムコール引数の引数 ID
引数の値
オプションの説明テキスト文字列の長さ (表示なし)
オプションのテキスト文字列
次の図は、トークンの書式を示しています。
arg トークンは、praudit により次のように表示されます。
argument,2,0x3,cmd
attr トークンには、ファイルまたはフォルダのカーネルの内部表現からのファイル属性情報が入っています。このトークンには通常 path トークンが付いており、パス検索の際に作成されます。パス検索エラーが発生した場合には、ファイル属性情報がないので、このトークンは監査レコードに含まれません。次のフィールドがあります。
トークン ID
ファイルアクセスモードとファイル型
所有者ユーザー ID
所有者グループ ID
ファイルシステム ID
i ノード ID
ファイルが表しているデバイス ID
ファイルシステム ID およびデバイス ID についての詳細は、statvfs(2) のマニュアルページを参照してください。次の図は、トークンの書式を示しています。
attr トークンは、praudit により次のように表示されます。
attribute,100555,root,root,1805,13871,-4288
clearance トークンには、Trusted Solaris の認可上限情報が入っています。次のフィールドがあります。
次の図は、トークンの書式を示しています。
clearance トークンは、praudit により次のように表示されます。
clearance,TOP SECRET
exec_args トークンは、exec() システムコールへの引数を記録します。次のフィールドがあります。
トークン ID
exec コールへ渡される引数の数
0 以上の NULL で終わる文字列。exec コールの引数
次の図は、exec_args トークンを示しています。
exec_args トークンは、監査ポリシー argv が有効な場合にだけ出力されます。詳細は、「動的手続き」を参照してください。
exec_args トークンは、praudit により次のように表示されます。
exec_args,
exec_env トークンは、exec() システムコールへの現在の環境変数を記録します。次のフィールドがあります。
トークン ID
exec コールの現在の環境変数の数
0 またはそれ以上の NULL で終わる文字列。exec コールの引数
次の図は、exec_env トークンを示しています。
exec_env トークンは、監査ポリシー arge が有効な場合にだけ出力されます。詳細は、「動的手続き」を参照してください。
exec_env トークンは、praudit により次のように表示されます。
exec_env,
exit トークンは、プログラムの終了状態と戻り値を記録します。次のフィールドがあります。
トークン ID
exit() システムコールへ渡されるプログラム終了状態
終了状態を説明する戻り値またはシステムエラー番号を示す戻り値
次の図は、exit トークンを示しています。
exit トークンは、praudit により次のように表示されます。
exit,Error 0,0
file トークンは監査デーモンが生成する特別なトークンで、新しい監査トレールファイルの起点と無効になる旧ファイルの終了点を示します。監査デーモンはこのトークンを含む特別な監査レコードを作成して、連続した監査ファイルを 1 つの監査トレールとしてリンクさせます。次のフィールドがあります。
トークン ID
ファイルを作成したり閉じたりした時間を表す時刻と日付の表示
NULL ターミネータを含むファイル名のバイト数 (表示なし)
NULL で終わるファイル名
次の図は、トークンの書式を示しています。
file トークンは、praudit により次のように表示されます。
file,Fri Jan 23 13:32:42 1997, + 79249 msec, /etc/security/audit/patchwork/files/19920901202558.19920901203241.patchwork
このトークンは、newgroups トークンに置き換えられています。newgroups トークンは、情報の型は同じですが必要な容量が少なくて済みます。ここでは完全を期すために groups トークンの説明も記載していますが、アプリケーション設計者は newgroups トークンを使用してください。ただし、praudit はこの 2 つのトークンを区別しません。どちらのトークン ID も ASCII 形式で出力すると groupsとラベルされるからです。
groups トークンは、プロセスの資格からグループエントリを記録します。次のフィールドがあります。
トークン ID
サイズ NGROUPS_MAX (16) のグループエントリの列
次の図は、groups トークンを示しています。
groups トークンは、praudit により次のように表示されます。
group,staff,wheel,daemon,kmem,bin,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
groups トークンは、監査ポリシー group が有効な場合にだけ出力されます。詳細は、「auditconfig コマンド」を参照してください。
header トークンは、監査レコードの起点を示し、trailer トークンとの組み合わせでレコードの中の全トークンをブラケットする特別なトークンです。次のフィールドがあります。
トークン ID
バイト単位のレコード長。header トークンおよび trailer トークンを含む
監査レコードの構造のバージョン番号
監査イベントの型を表すイベント ID
イベントの型の説明情報を持つイベント ID 修飾子
レコードが作成された時刻と日付
イベント修飾子フィールドには、次に定義するフラグが入っています。
値 |
定数名 |
説明 |
---|---|---|
0x0001 |
PAD_MACUSE |
MAC の判断が成功した |
0x0002 |
PAD_MACREAD |
MAC の読み取り失敗 |
0x0004 |
PAD_MACWRITE |
MAC の書き込み失敗 |
0x0008 |
PAD_MACSEARCH |
MAC の検索失敗 |
0x0010 |
PAD_MACKILL |
MAC の信号失敗 |
0x0020 |
PAD_MACTRACE |
MAC の追跡失敗 |
0x0040 |
PAD_MACIOCTL |
MAC の ioctl 失敗 |
0x0080 |
PAD_SPRIVUSE |
成功した特権の使用 |
0x0100 |
PAD_FPRIVUSE |
失敗した特権の使用 |
0x4000 |
PAD_NONATTR |
ユーザーアクションによらないイベント |
0x8000 |
PAD_FAILURE |
失敗した監査イベント |
header トークンは、praudit により次のように表示されます。
header,449,3,pfsh(1M),,Mon May
host トークンには、この監査レコードを生成したワークステーションのマシン ID が入っています。次のフィールドがあります。
トークン ID
監査レコードを生成したホストのワークステーション ID
次の図は、host トークンの書式を示しています。
host トークンは、praudit により次のように表示されます。
host,patchwork
in_addr トークンには、インターネットアドレスが入っています。この 4 バイトの値はインターネットプロトコルのアドレスです。次のフィールドがあります。
トークン ID
インターネットアドレス
次の図は、in_addr トークンの書式を示しています。
in_addr トークンは、praudit により次のように表示されます。
ip addr,129.150.110.3
ip トークンには、インターネットプロトコルのヘッダーのコピーが入っていますが、IP オプションは含まれていません。トークンに IP ヘッダーをさらに付け加えて、IP オプションを追加することもできます。IP ヘッダーの構造は、/usr/include/netinet/ip.h に定義されています。次のフィールドがあります。
トークン ID
IP ヘッダーの 20 バイトのコピー (全 20 バイト)
次の図は、ip トークンの書式を示しています。
ip トークンは、praudit により次のように表示されます。
ip,0.0.0.0
ipc トークンには、呼び出し元が特定の IPC オブジェクトを識別するために使用する System V IPC のメッセージ、セマフォ、共有メモリーハンドルが入っています。次のフィールドがあります。
トークン ID
IPC オブジェクトタイプ識別子
IPC オブジェクトハンドル
次の図は、ipc トークンの書式を示しています。
ipc トークンは、praudit により次のように表示されます。
IPC,msg,3
IPC オブジェクト識別子は、Solaris CMW 監査トークンのコンテキストに制限されない特性に違反しています。IPC オブジェクトを一意に識別するグローバルな「名前」はありません。代わりに、IPC オブジェクトがアクティブな間だけ有効なハンドルで識別されます。ただし、System V IPC 機構が使われるのはまれであり、すべて同じ監査クラスを共有するので、識別は問題にならないはずです。
IPC オブジェクトタイプフィールドは、表 B-4 の値をとることがあります。値は、</usr/include/bsm/audit.h> に定義されています。
表 B-4 PC オブジェクトタイプフィールド
名前 |
説明 |
説明 |
---|---|---|
AU_IPC_MSG |
1 |
IPC メッセージオブジェクト |
AU_IPC_SEM |
2 |
IPC セマフォオブジェクト |
AU_IPC_SHM |
3 |
IPC 共有メモリーオブジェクト |
ipc_perm トークンには、System V IPC アクセス情報のコピーが入っています。共有メモリー、セマフォ、メッセージの IPC の監査レコードには、このトークンが付加されます。次のフィールドがあります。
トークン ID
IPC 所有者のユーザー ID
IPC 所有者のグループ ID
IPC 作成者のユーザー ID
IPC 作成者のグループ ID
IPC アクセスモード
IPC シーケンス番号
IPC キー値
値は、IPC オブジェクトに関連する ipc_perm 構造から受け取ります。次の図は、ipc_perm トークンの書式を示しています。
ipc_perm トークンは、praudit により次のように表示されます。
IPC perm,root,wheel,root,wheel,0,0,0x00000000
iport トークンには、TCP または UDP ポートアドレスが入っています。次のフィールドがあります。
トークン ID
TCP アドレスまたは UDP アドレス
次の図は、iport トークンの書式を示しています。
iport トークンは、praudit により次のように表示されます。
iport,0xf6d6
liaison トークンには、トラステッドネットワークのソフトウェアが使用する連絡 ID が入っています。次のフィールドがあります。
トークン ID
連絡 ID
次の図は、liaison トークンの書式を示しています。
liaison トークンは、praudit により次のように表示されます。
liaison,17
このトークンは、groups トークンに代わって用いられます。praudit はこの 2 つのトークンを区別しません。ASCII 形式で出力すると、どちらのトークン ID も groups とラベルされます。
newgroups トークンは、プロセスの資格のグループエントリを記録します。次のフィールドがあります。
トークン ID
この監査レコードに含まれるグループ数
0 以上のグループエントリ
次の図は、newgroups トークンの書式を示しています。
newgroups トークンは、監査ポリシー group が有効な場合にだけ出力されます。詳細は、「auditconfig コマンド」を参照してください。
newgroups トークンは、praudit により次のように表示されます。
newgroups,1,analysts
opaque トークンには、一連のバイトのような書式化されていないデータが入っています。次のフィールドがあります。
トークン ID
データ列のバイト数
バイトデータの列
次の図は、opaque トークンの書式を示しています。
opaque トークンは、praudit により次のように表示されます。
opaque,12,0x4f5041515545204441544100
path トークンには、オブジェクトのアクセスパス情報が入っています。次のフィールドがあります。
トークン ID
パス長のバイト数 (表示なし)
システムの実際のルートに基づくオブジェクトへの絶対パス
次の図は、path トークンの書式を示しています。
path トークンは、praudit により次のように表示されます。
path,/etc/security/audit/patchwork
priv トークンには、特権の使用情報が入っています。次のフィールドがあります。
トークン ID
特権の使用が成功したかどうかを示す成功・失敗フィールド (1 は成功、0 は失敗)
テストされている特権
次の図は、priv トークンの書式を示しています。
priv トークンは、praudit により次のように表示されます。
useofpriv,failed use of priv,win_mac_write
privilege トークンには、オブジェクトまたはサブジェクトの特権情報が入っています。次のフィールドがあります。
トークン ID
特権の型
特権のセット
特権の型は次のうちの 1 つです。
値 |
型 |
---|---|
0 |
未知または未定義 |
1 |
強制された特権 |
2 |
許容された特権 |
3 |
有効な特権 |
4 |
継承可能な特権 |
5 |
許可された特権 |
6 |
保存された特権 |
次の図は、privilege トークンの書式を示しています。
privilege トークンは、praudit により次のように表示されます。
privilege,1,proc_tcb_audit
process トークンには、信号の受信側など、プロセスをオブジェクトとして説明する情報が入っています。次のフィールドがあります。
トークン ID
ユーザー監査 ID
実効ユーザー ID
実効グループ ID
実ユーザー ID
実グループ ID
プロセス ID
セッション ID
次の 2 つで構成される端末 ID
デバイス ID
ワークステーション ID
次の図は、process トークンの書式を示しています。
監査 ID、ユーザー ID、グループ ID、プロセス ID、セッション ID は、短形式ではなく長形式で示されます。
process トークンのセッション ID、実ユーザー ID、実グループ ID 用の各フィールドは使用できない場合があります。このときエントリは -1 にセットされます。
process トークンは、praudit により次のように表示されます。
process,root,root,wheel,root,wheel,0,0,0,0.0.0.0
return トークンには、システムコールの戻り状態 (u_error) とプロセスの戻り値 (u_rvall) が入っています。このトークンは、アプリケーション監査時の終了状態とそれ以外の戻り値を示します。このトークンは、システムコールに対するカーネル生成の監査レコードの一部として必ず返されます。次のフィールドがあります。
トークン ID
システムコールのエラー状態
システムコールの戻り値
次の図は、return トークンの書式を示しています。
return トークンは、praudit により次のように表示されます。
return,failure: No such file or directory,-1
seq トークン (sequence トークン) は、昇順のシーケンス番号を持つオプションのトークンです。このトークンはデバッグで使用します。このトークンは、AUDIT_SEQ ポリシーが有効な場合にそれぞれの監査レコードに付加されます。次のフィールドがあります。
トークン ID
32 ビットの無符号長形式番号
このシーケンス番号は、監査レコードが生成されて監査トレールに付け足されるたびに 1 ずつ増加します。次の図は、seq トークンの書式を示しています。
seq トークンは、praudit により次のように表示されます。
sequence,1292
slabel トークンには、機密ラベルが入っています。次のフィールドがあります。
トークン ID
機密ラベル
次の図は、slabel トークンの書式を示しています。
slabel トークンは、praudit により次のように表示されます。
slabel,ADMIN_LOW
socket トークンには、インターネットのソケットを説明する情報が入っています。次のフィールドがあります。
トークン ID
ソケットタイプフィールド (TCP、UDP、UNIX)
ローカルポートアドレス
ローカルインターネットアドレス
リモートポートアドレス
リモートインターネットアドレス
ソケットタイプは指定したソケットから受け取り、ポートアドレスとインターネットアドレスは、ソケットの inpcb 制御構造から受け取ります。次の図は、socket トークンの書式を示しています。
socket トークンは、praudit により次のように表示されます。
socket,0x0000,0x0000,0.0.0.0,0x0000,0.0.0.0 socket,0x0002,0x8008,patchwork
socket-inet トークンは、ローカルポートとソケットの接続を説明し、これを使ってインターネットネームスペースのソケット情報を表します。次のフィールドがあります。
トークン ID
インターネットファミリを示すソケットファミリフィールド (AF_INET、AF_OSI など)
ローカルポートアドレス
ソケットアドレス
次の図は、socket-inet トークンの書式を示しています。
socket-inet トークンは、praudit により次のように表示されます。
socket,0x0002,0x8008,patchwork
subject トークンは、サブジェクト (プロセス) を説明します。構造は process トークンと同じです。
トークン ID
ユーザー監査 ID
実効ユーザー ID
実効グループ ID
実ユーザー ID
実グループ ID
プロセス ID
セッション ID
次の 2 つで構成される端末 ID
デバイス ID
ワークステーション ID
このトークンは、システムコールに対してカーネル生成の監査レコードの一部として必ず返されます。監査 ID、ユーザー ID、グループ ID、プロセス ID、セッション ID は、短形式ではなく長形式で示されます。トークンの書式は 図 B-25 に示します。
subject トークンのセッション ID、実ユーザー ID、実グループ ID 用の各フィールドは使用できない場合があります。このときエントリは -1 にセットされます。
subject トークンは、praudit により次のように表示されます。
subject,root,root,staff,root,staff,552,552,24 3 patchwork
text トークンには、テキスト文字列が入っています。次のフィールドがあります。
トークン ID
テキスト文字列の長さ (表示なし)
テキスト文字列
次の図は、text トークンの書式を示しています。
text トークンは、praudit により次のように表示されます。
text,emily
trailer トークンは、監査レコードの終わりを示し、監査トレールの逆方向検索を可能にします。このトークンは、AUDIT_TRAIL 監査ポリシーが設定されている場合に限り、それぞれのレコードに付加されたトークンのいちばん最後に追加される、オプションのトークンです。次のフィールドがあります。
トークン ID
レコードの最後を示すパッド番号 (表示なし)
header トークンおよび trailer トークンを含む監査レコード文字数の総数
trailer トークンは、praudit により次のように表示されます。
trailer,136
xatom トークンには、X アトムに関する情報が入っています。次のフィールドがあります。
トークン ID
文字列の長さ
アトムを示すテキスト文字列
次の図は、xatom トークンの書式を示しています。
xatom トークンは、praudit により次のように表示されます。
xatom,_DT_SAVE_MODE
xclient トークンには、X クライアントに関する情報が入っています。次のフィールドがあります。
トークン ID
クライアント ID
次の図は、xclient トークンの書式を示しています。
xclient トークンは、praudit により次のように表示されます。
xclient,15
xcolormap トークンには、カラーマップに関する情報が入っています。次のフィールドがあります。
トークン ID
X サーバー識別子
作成者のユーザー ID
次の図は、トークンの書式を示しています。
xcolormap トークンは、praudit により次のように表示されます。
xcolormap,0x08c00005,agv
xcursor トークンには、カーソルに関する情報が入っています。次のフィールドがあります。
トークン ID
X サーバー識別子
作成者のユーザー ID
図 B-35 は、トークンの書式を示しています。
xcursor トークンは、praudit により次のように表示されます。
xcursor,0x0f400006,agv
xfont トークンには、フォントに関する情報が入っています。次のフィールドがあります。
トークン ID
X サーバー識別子
作成者のユーザー ID
図 B-35 は、トークンの書式を示しています。
xfont トークンは、praudit により次のように表示されます。
xfont,0x08c00001,agv
xgc トークンには、xgc に関する情報が入っています。次のフィールドがあります。
トークン ID
X サーバー識別子
作成者のユーザー ID
図 B-35 は、トークンの書式を示しています。
xgc トークンは、praudit により次のように表示されます。
xgc,0x002f2ca0,agv
xpixmap トークンには、ピクセルマップに関する情報が入っています。次のフィールドがあります。
トークン ID
X サーバー識別子
作成者のユーザー ID
図 B-35 は、トークンの書式を示しています。
xpixmap トークンは、praudit により次のように表示されます。
xpixmap,0x08c00005,agv
xproperty トークンには、ウィンドウの各種プロパティに関する情報が入っています。次のフィールドがあります。
トークン ID
X サーバー識別子
作成者のユーザー ID
文字列の長さ
文字列 (アトム名)
次の図は、xproperty トークンを示しています。
xproperty トークンは、praudit により次のように表示されます。
xproperty,0x000075d5,root,_MOTIF_DEFAULT_BINDINGS
xselect トークンには、ウィンドウ間を移動するデータが入っています。次のフィールドがあります。
トークン ID
プロパティ列の長さ
プロパティ列
プロパティタイプの長さ
プロパティタイプ列
データのバイトの数を示す長さフィールド
データを含むバイト文字列
次の図は、xselect トークンの書式を示しています。
xselect トークンは、praudit により次のように表示されます。
xselect,
xwindow トークンには、ウィンドウに関する情報が入っています。次のフィールドがあります。
トークン ID
X サーバー識別子
作成者のユーザー ID
図 B-35 は、xwindow トークンの書式を示しています。
xwindow トークンは、praudit により次のように表示されます。
xwindow,0x07400001,gww