EN JA
AU_OPEN(3)
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 のエラー情報と共に、負の値を返します。

関連項目

audit_submit(3), libbsm(3)

歴史

OpenBSM 実装は、2004 年に Apple Computer Inc. との契約に基づき、 McAfee Inc. のセキュリティ部門、McAfee Research によって作成されました。その後にそれは、OpenBSM 配布のための基盤として TrustedBSD Project によって採用されました。

作者

このソフトウェアは、Apple Computer Inc. との契約に基づき、 McAfee Inc. のセキュリティ研究部門、McAfee Research のために Robert Watson, Wayne SalamonSuresh Krishnaswamy によって作成されました。

レコードを監査し、イベントストリームフォーマットを監査する Basic Security Module (BSM) インタフェースは、Sun Microsystems によって定義されました。

バグ

現在、 au_open() は、レコードを軌跡にコミットするために必要なカーネルリソースを予約していません。 au_close() をサポートしているシステムでは、レコードをコミットするためのリソースが利用可能になるまで、呼び出しはブロックされます。しかしながら、これはディスクへの書き込みが保証されるレコードなしで許された動作の可能性を引き起こします。理想的には、 au_open() は、任意の提示されたレコードをコミットするために必要なリソースを予約し、 au_close() で、それらを解放します。
March 4, 2006 FreeBSD