Trusted Solaris 開発ガイド

アプリケーション監査

アプリケーションは、auditwrite(3) ライブラリルーチンを使用して、アプリケーション自体の独自の監査イベントのログを記録できます。この例は、auditwrite() に対する 1 つのコールでユーザー監査記録を作成します。記録される監査イベントは、「successful login at console (コンソールのログインが完了しました)」というテキストを含む AUE_su です。通常、auditwrite() は、アプリケーションレベルの監査イベントを記録します。この例では、ルーチンの使用方法を示すために、Trusted Solaris 7 のユーザーイベントを記録しています。独自の監査イベントの詳細は、第 9 章「アプリケーション監査」を参照してください。

AUE_su はトラステッドコンピューティングベース (TCB) の監査イベントであるため、このプログラムを実行するプロセスは、有効セット内に proc_audit_tcb 特権を必要とします。コードのコメントは、どこで特権のブラケット化が必要かを示します (特権のブラケット化の詳細は第 3 章「特権」を参照)。aw_strerror(3) ルーチンは、auditwrite エラーメッセージ (aw_errno) を文字列に変換します。auditwrite() に渡されるパラメータを次に示します。

#include <bsm/auditwrite.h>
 #include <types.h>
 #include <unistd.h>

 main()
 {
 	char		*aw_string;
 	int		retval, errno;

/* 有効な特権セットの proc_audit_tcb をオン (有効) にする */
 	retval = auditwrite(						AW_EVENT, "AUE_su", AW_TEXT, "Successful login at console",
 							AW_WRITE, AW_END);
/* proc_audit_tcb 特権をオフ(無効) にする */

 	aw_string = aw_strerror(aw_errno);
 	printf("Retval = %d AW_ERROR = %s ERRNO = %d¥n", retval, aw_string, errno);
 }

このプログラムを実行して監査記録を表示するには、次の手順に従ってください。

  1. 管理役割になり、表示用端末ウィンドウを ADMIN_HIGH で開き、次のコマンドを実行します。loAUE_su が属するクラスを示し、pid は端末のプロセス ID を示します。

    # auditconfig -setpmask pid lo

  2. 管理役割になり、2 番目の表示用端末を ADMIN_HIGH で開きます。続いて、praudit(1M) を使用し、次のコマンドとオプションを入力して not_terminated (最新のまだ閉じていない) 監査ログファイルを読み取ります。


    注 -

    この構文は、*not_terminated* ファイルが 1 つだけ存在する場合に動作します。ほかにもファイルが存在する場合は、古いファイルを削除してからこのコマンドを実行してください。


    phoenix% tail -0f *not_terminated* | praudit

  3. 最初に開いたウィンドウで、コードをコンパイルして実行します。

    この例のコンパイルには、次のライブラリが必要です。

    -lbsm -lnsl -lintl -lsocket -ltsol

    この例が動作するためには、プロセスに proc_audit_tcb 特権が必要です。特権を設定するには、次に示すように setfpriv(1) を使用してください。

    setfpriv(1) は、file_setpriv 特権を必要とするので、このコマンドをプロファイルシェルから実行するときは、この特権を使用しなければなりません。

    phoenix% setfpriv -s -a proc_audit_tcb executable

    printf 文によって、最初の端末ウィンドウに次のように出力されます。

    Retval = 0, AW_ERROR = No error, ERRNO = 0

    表示用ウィンドウには、監査記録が次のように表示されます。


    header, 129,2,su,,Wed Jun 26 14:50:19 1996, +699964500 msec  
    text, Successful login at console
    
    subject,zelda,zelda,staff,zelda,staff,1050,853,24,7 phoenix
    
    slabel,Confidential
    
    return,success,0

    この監査記録は、一連のトークンから構成されています。それぞれの行には、トークンとそれに続くトークン値が含まれます。この例では、監査イベント AUE_su のトークンは header、text、subject、slabel、return です。トークン値は、次のトークンが出現するまでに示される、そのトークンの情報です。トークンの詳細は、『Trusted Solaris の監査管理』を参照してください。