AU_OPEN(3) | FreeBSD Library Functions Manual | AU_OPEN(3) |
名称
au_close, au_close_buffer, au_close_token, au_open, au_write — 監査レコードを作成してコミットするライブラリ
Basic Security Module User Library (libbsm, -lbsm)書式
#include < bsm/libbsm.h> int
au_open( void);
int
au_write( int d, token_t *tok);
int
au_close( int d, int keep, short event);
int
au_close_buffer( int d, short event, u_char *buffer, size_t *buflen);
int
au_close_token( token_t *tok, u_char *buffer, size_t *buflen);
解説
これらのインタフェースによって、アプリケーションは、監査レコードを割り付けることができ、一連のトークンを使用してレコードを構築して、システムイベントログに監査レコードをコミットします。また、システム監査ログよりむしろ、メモリ内のバッファにレコードをコミットする拡張 API を提供します。au_open() インタフェースは、新しい監査レコード記述子を割り付けます。
au_write() インタフェースは、トークンを割り付けられた監査記述子に追加します。トークンをレコードに追加することが成功したとき、呼び出し側はもはやトークンメモリを所有せず、直接 au_free_token(3) を呼び出して解放する必要はありません。
au_close() 関数は、システム監査ログに監査レコードをコミットするか、またはレコードを破棄するために使用されます。いずれにして、レコードに関連しているすべてのリソースが、解放されます。 keep 引数は振る舞いを決定します: AU_TO_WRITE の値によって、レコードはコミットされます。 AU_TO_NO_WRITE の値によって、破棄されます。監査レコードがコミットされるとき、 event を通して渡されたイベント識別子と、終わりに追加されたトレーラを使用して、トークンがレコードに追加する前に BSM ヘッダが挿入されます。システム監査ログにレコードをコミットするためには特権を必要とします。
au_close_buffer() 関数は、サイズ *buflen のメモリ内バッファに結果のレコードを書き込みます。同じ変数に書き込まれたバッファの長を戻します。引数 event は、記録されたヘッダで使用するエベント識別子です。
au_close_token() 関数は、渡されたバッファ buffer に、単一のトークン tok のために BSM ストリーム出力を生成します。初期のバッファサイズと結果のデータサイズは *buflen を通して渡されます。 au_close_token() 関数は返る前に、トークンを解放します。
戻り値
関数 au_open() は、成功すれば負でない監査レコード記述子番号を返し、失敗すれば errno のエラー情報と共に、負の値を返します。関数 au_write(), au_close(), au_close_buffer() と au_close_token() は、成功すれば 0 を返し、失敗すれば errno のエラー情報と共に、負の値を返します。
歴史
OpenBSM 実装は、2004 年に Apple Computer Inc. との契約に基づき、 McAfee Inc. のセキュリティ部門、McAfee Research によって作成されました。その後にそれは、OpenBSM 配布のための基盤として TrustedBSD Project によって採用されました。作者
このソフトウェアは、Apple Computer Inc. との契約に基づき、 McAfee Inc. のセキュリティ研究部門、McAfee Research のために , と によって作成されました。レコードを監査し、イベントストリームフォーマットを監査する Basic Security Module (BSM) インタフェースは、Sun Microsystems によって定義されました。
バグ
現在、 au_open() は、レコードを軌跡にコミットするために必要なカーネルリソースを予約していません。 au_close() をサポートしているシステムでは、レコードをコミットするためのリソースが利用可能になるまで、呼び出しはブロックされます。しかしながら、これはディスクへの書き込みが保証されるレコードなしで許された動作の可能性を引き起こします。理想的には、 au_open() は、任意の提示されたレコードをコミットするために必要なリソースを予約し、 au_close() で、それらを解放します。March 4, 2006 | FreeBSD |