Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

監査

安全な監査データベースのログに特定のキー・イベントを記録する機能は、Caché セキュリティが持つ大きな特長です。Caché を使用すると、イベントを監視し、これらのイベントが発生したときに監査データベースにエントリを追加できます。このようなイベントには、Caché 内部で発生するものと、アプリケーションの一部で発生するものがあります。すべての動作が監視されていること、およびすべてのログを確認できることがわかっていると、一般的に大きな抑止効果が期待できます。

この章では、次のようなさまざまなトピックについて説明します。

監査の基本的な概念

Caché を使用すると、Caché のインスタンス全体に対する監査の有効化または無効化が可能になります。監査を有効にすると、要求したすべてのイベントが記録されます。監査できるイベントは、次の 2 つのカテゴリに分類できます。

  • システム・イベント — 明示的に有効にした場合にのみ記録される Caché システム・イベントです。

  • ユーザ・イベント — 明示的に有効にした場合にのみ記録されるアプリケーション・イベントです。

Caché システム・イベントとは、Caché 内で発生する起動、シャットダウン、ログインなどの動作を監視する組み込みイベントです。システム・イベントでは、セキュリティ設定や監査設定の変更など、セキュリティに関するイベントも監視します。

テーブルに対するデータの挿入、更新、削除などのデータベースの動作は、Caché では自動的には監査されません。それは、このような動作では通常、あまりにも多数の監査エントリが生成されるので、これらが役立つことはなく、ときにはシステムの性能に影響を与えるために逆効果となるからです。例えば、医療記録アプリケーションで患者の医療情報へのアクセスをすべて記録するようにした場合、このようなアクセス・イベントが 1 回発生すると、データベースに対して数百から数千のアクセスが行われます。このような場合は、データベース・マネージャで数千の監査エントリを生成するより、アプリケーション側で監査エントリを 1 件生成する方がはるかに効率的です。

監査の有効化または無効化

[監査] メニュー ([システム管理] > [セキュリティ] > [監査]) には、監査を有効または無効にする選択項目があります。[監査の有効化] が選択できる状態であれば監査が無効になっています。また、[監査の無効化] が選択できる状態であれば監査が有効になっています。Caché の監査の既定値は、最小セキュリティ・インストールでは [無効化]、通常のインストールおよびロックダウン・インストールでは [有効化] です。

監査の有効化

監査を有効にするには、[監査] メニュー ([システム管理] > [セキュリティ] > [監査]) で [監査の有効化] を選択します。

監査の無効化

監査を無効にするには、[監査] メニュー ([システム管理] > [セキュリティ] > [監査]) で [監査の無効化] を選択します。

監査を有効にすると、Caché では次のイベントが監査されるようになります。

  • 有効化されているすべてのシステム・イベント

  • 有効化されているすべてのユーザ・イベント

監査イベントについて

以下のセクションでは、監査イベントのさまざまな側面について説明します。

Note:

このセクションでは、管理ポータルで監査イベントを管理する方法について説明します。プログラムで監査イベントを管理するには、Security.EventsOpens in a new tab クラスを使用します。

監査イベントの要素

監査情報は、CACHEAUDIT データベースにあります。新しいエントリは、ログの末尾に追加されます。監査ログを表示すると、各エントリについて以下の情報が表示されます。

Time (UTCTimestamp とも呼ぶ)

イベントが記録された UTC 日時。

Event Source*

イベントの発生元である Caché インスタンスのコンポーネント。Caché イベントの場合は、必ず “%System” です。ユーザ定義のイベントの場合、この名前には、あらゆる英数字、およびコロンとコンマを除くあらゆる句読点記号を使用でき、先頭の文字には、これらの文字や記号のうち、パーセント記号を除くあらゆるものを記述できます。最大長は 64 バイトです。

Event Type*

イベントに対する情報の分類。この文字列には、あらゆる英数字、およびコロンとコンマを除くあらゆる句読点記号を使用できます。また、先頭の文字には、これらの文字や記号のうち、パーセント記号を除くあらゆるものを記述できます。最大長は 64 バイトです。

Event* (Event Name ともいいます)

記録されたイベントの識別子。この文字列には、あらゆる英数字、およびコロンとコンマを除くあらゆる句読点記号を使用できます。また、先頭の文字には、これらの文字や記号のうち、パーセント記号を除くあらゆるものを記述できます。最大長は 64 バイトです。

PID (Process ID ともいいます)

イベントを記録した Caché プロセスのオペレーティング・システム ID。Caché では、ネイティブ形式で OS PID を使用します。

CSP Session (検索結果のみ)

イベントの原因となった CSP セッションのセッション ID (存在する場合)。

User (Username ともいいます)

イベントを記録したプロセスの $USERNAME の値。

Description

監査イベントを要約するためにアプリケーションで使用できる短いフィールド。このフィールドは、表示または説明のみを目的としています。EventSource、EventType、Event を組み合わせて、特定の種類の監査イベントを独自に定義します。Description は、ユーザが読み取れる説明です。最大長は 128 文字です。

* 種類の異なるイベントは、そのイベントの EventSource、そのイベントの EventType、および Event 自体の組み合わせで一意に識別されます。

[詳細] をクリックすると、いくつかの同じ情報に加え、以下の追加情報が表示されます。

Timestamp

イベントが記録された日時 (ローカル時間)。

JobId

ジョブの ID。

IP Address

イベントを記録したプロセスに関連するクライアントの IP アドレス。

Executable

イベントが存在する場合に、そのイベントを記録したプロセスに関連するクライアント・アプリケーション。

System ID

イベントを記録したマシンと Caché インスタンス。例えば、マシンが MyMachine でインスタンスが MyInstance の場合、システム ID は MyMachine:MyInstance になります。

Index

監査ログを含むデータ構造内のインデックス・エントリ。

Roles

LoginFailure を除くすべてのイベントでは、イベントを記録したプロセスの $ROLES の値。LoginFailure の場合は、ユーザがログインしていないので “” の値が使用されます。

Namespace

イベントが記録されたときに使用されていたネームスペース。

Routine

イベントの記録時に実行されていたルーチンまたはサブルーチン。

User Info

プロセスについてのユーザ定義情報。%SYS.ProcessQueryOpens in a new tab インタフェースによりプログラムで追加されます。

O/S Username

オペレーティング・システムによりプロセスに付与されるユーザ名。表示されるときには、16 文字までに切り捨てられます。

これは、UNIX® システム専用の実際のオペレーティング・システム・ユーザ名です。

Windows では以下のようになります。

  • コンソール・プロセスでは、オペレーティング・システム・ユーザ名となります。

  • Telnet では、プロセスの $USERNAME となります。

  • クライアント接続では、クライアントのオペレーティング・システム・ユーザ名となります。

Status

監査された任意の %StatusOpens in a new tab オブジェクトの値。

Event Data

アプリケーションが監査イベントに関連するデータを最大で 3,632,952 バイト保存できるメモ・フィールド。例えば、イベント発生時のアプリケーションの値セットを入れたり、レコードやフィールドを古い状態のものから新しい状態のものまで集約したりできます。

システム監査イベントについて

システム監査イベントとは、既定で監査することが可能な事前定義イベントです。これらのイベントに関する一般的な情報は、[システム監査イベント] ページ ([システム管理] > [セキュリティ] > [監査] > [システムイベントを構成]) のテーブルに表示されます。このテーブルには以下の列があります。

  • イベント名 — Event Source (必ず %SYSTEM)、Event Type、および Event をスラッシュ (“/”) で連結した文字列です。

  • 有効 — イベントが監査の対象となっているかどうかを示します。

  • 合計 — Caché が前回起動した時点以降に発生したこのタイプのイベントの件数です。

  • 書き込み — Caché が前回起動した時点以降に監査ログに書き込まれたこのタイプのイベントの件数です。この数は、イベントの発生総件数とは異なることもあります。

  • リセット — このイベントの監査ログをクリアし、そのカウンタをゼロにリセットします。カウンタの詳細は、“カウンタについて” を参照してください。

  • 状態の変更 — イベントを有効または無効にできます。

システム監査イベントとは Caché システム内で発生する以下のようなイベントで、その EventSource の値は %SYSTEM なので他のイベントと区別できます。

システム監査イベント
イベント・タイプおよびイベント 発生するタイミング EventData の内容 既定の状態

%DirectMode/

DirectMode

ダイレクト・モードでコマンドが実行されたとき。 コマンドのテキスト オフ

%Login/

Login

ユーザが正常にログインしたとき。   オフ

%Login/

LoginFailure

ログインに失敗したとき。 ユーザ名 不定*

%Login/

Logout

ユーザがログアウトしたとき。   オフ

%Login/

Terminate

プロセスが異常終了したとき。 Description フィールドの内容と同様に変化します。下記を参照してください。 オフ

%SMPExplorer/

Change

ポータルを使用して (クラスまたはテーブルの作成、編集、削除、コンパイル、ドロップ、置換、パージなどによって) データが変更されたとき。 Description フィールドの内容と同様に、実行されるアクションに応じて変化します。関連するコンテンツ (コンパイル・フラグやドロップされるスキーマとテーブルなど) を含みます。 オフ

%SMPExplorer/

ExecuteQuery

ポータルの SQL ページを使用してクエリが実行されたとき。 実行されたクエリの構文。 オフ

%SMPExplorer/

Export

ポータルを使用してデータがエクスポートされたとき。 データのエクスポート時に選択されたオプション。 オフ

%SMPExplorer/

Import

ポータルを使用してデータがインポートされたとき。 データのインポート時に選択されたオプション。 オフ

%SMPExplorer/

ViewContents

ポータルを使用してデータが表示されたとき。 表示されるデータを決定したフィルタ。Description フィールドによって、表示内容 (クラスのリスト、個々のグローバル、プロセス情報など) が指定されます。 オフ

%SQL/

DynamicStatement

動的 SQL 呼び出しが実行されます。 文テキストとホスト変数引数の値が渡されます。文と文のパラメータの合計長が 3,632,952 文字を超える場合、イベント・データは切り詰められます。 オフ

%SQL/

EmbeddedStatement

埋め込み SQL 呼び出しが実行されます。 文テキストとホスト変数引数の値が渡されます。文と文のパラメータの合計長が 3,632,952 文字を超える場合、イベント・データは切り詰められます。 オフ

%SQL/

XDBCStatement

ODBC または JDBC を使用して、リモート SQL 呼び出しが実行されます。 文テキストとホスト変数引数の値が渡されます。文と文のパラメータの合計長が 3,632,952 文字を超える場合、イベント・データは切り詰められます。 オフ

%Security/

ApplicationChange

アプリケーションの定義が作成、変更、または削除されたとき。 アクションの内容 (新規作成、変更、または削除)、新旧のアプリケーション・データ オン

%Security/

AuditChange

監査が停止または開始したとき、エントリが消去または削除されたとき、あるいは監査対象イベントのリストが変更されたとき。 アクションの内容 (停止、開始、消去、削除、または指定)、新旧の監査設定 オン

%Security/

AuditReport

任意の標準監査レポートが実行されたとき。 監査レポートの識別情報 オン

%Security/

DBEncChange

データベースまたはデータ要素の暗号化に関連する変更があったとき。 Description フィールドの内容と同様に変化します。下記を参照してください。 オン

%Security/

DomainChange

ドメイン定義が作成、変更、または削除されたとき。 アクションの内容 (新規、変更、または削除)、新旧のドメイン・データ オン

%Security/

LoginRuleChange

このイベントは現在使用されていません。有効 (オン) になっている場合でも、監査ログには表示されません。   オン

%Security/

Protect

プロセスによってセキュリティ保護エラーが生成されたとき。 エラー オフ

%Security/

ResourceChange

リソース定義が作成、変更、または削除されたとき。 アクションの内容 (新規、変更、または削除)、新旧のリソース・データ オン

%Security/

RoleChange

ロール定義が作成、変更、または削除されたとき。 アクションの内容 (新規作成、変更、または削除)、新旧のロール・データ オン

%Security/

SSLConfigChange

SSL/TLS 構成の設定が変更されたとき。 新旧の値を持つ変更後のフィールド オン

%Security/

ServiceChange

サービスのセキュリティ設定が変更されたとき。 新旧のサービス・セキュリティ設定 オン

%Security/

SystemChange

システムのセキュリティ設定が変更されたとき。 新旧のセキュリティ設定 オン

%Security/

UserChange

ユーザ定義が作成、変更、または削除されたとき。 アクションの内容 (新規作成、変更、または削除)、新旧のユーザ・データ オン

%System/

AuditRecordLost

監査システムに影響するリソース上の制限 (ディスクやデータベースに空き領域がないなど) のために、監査エントリが監査データベースに追加されていないとき。 なし オン

%System/

ConfigurationChange

Caché が前回の起動時とは異なる構成で正常に起動したとき、Caché の実行中に新しい構成がアクティブになったとき、またはポータルあるいは ^LOCKTAB ユーティリティを通してロックが削除されたとき。 変更を実行したユーザの名前、変更された要素の新旧の値。ロックが削除された場合は、どのロックが削除されたかに関する情報。 オン

%System/

DatabaseChange

データベース・プロパティへの変更があります。下記を参照してください。 特定の変更に関する詳細。下記を参照してください。 オン

%System/

JournalChange

データベースまたはプロセスに対するジャーナリングが開始したとき、または停止したとき。 ジャーナリングが開始したときはデータベースの名前およびその最大サイズ、ジャーナリングが停止したときはなし。 オン

%System/

OSCommand

$ZF(-100) 関数の呼び出しなどによって、オペレーティング・システム・コマンドがシステム内から発行されます。 呼び出されたオペレーティング・システム・コマンド、呼び出し元のディレクトリ、および コマンドに関連付けられたフラグ。 オン

%System/

RoutineChange

ローカル・インスタンスでメソッドまたはルーチンがコンパイルまたは削除されたとき。詳細は、下記を参照してください。 なし。ただし、Description フィールドは変更そのものによって変化します。下記を参照してください。 オフ

%System/

Start

システムが起動したとき。 リカバリが実行されたかどうかを示す情報 オン

%System/

Stop

Caché が終了したとき。   オン

%System/

SuspendResume

プロセスが一時停止または再開したとき。 プロセスのプロセス ID。 オフ

%System/

UserEventOverflow

定義されていないイベントを、アプリケーションからログに記録しようとしたとき。 アプリケーションから記録しようとしたイベントの名前 オン

* LoginFailure イベントの既定値は、最小セキュリティ・インストールでは [無効]、通常のインストールおよびロックダウン・インストールでは [有効] です。

Important:

監査を有効にすると、有効にしたすべてのイベントが監査されます。

%System/%Login/Logout イベントおよび %System/%Login/Terminate イベントについて

次のいずれかの原因でプロセスが終了すると、%System/%Login/Logout イベントが生成されます。

上記以外の原因でプロセスが終了すると、%System/%Login/Terminate イベントが生成されます。この原因の例として次のものがあります。

  • ユーザがターミナル・ウィンドウを閉じた結果、ターミナルの接続が切断された場合。プロセスがアプリケーション・モードで動作している場合は、監査レコードの Description フィールドに “^routinename client disconnect” というメッセージが記述されます (routinename はプロセスで実行した最初のルーチンです)。また、プロセスがプログラマ・モードで動作している場合は、Description フィールドに “Programmer mode disconnect” というメッセージが記述されます。

  • ^RESJOB や ^JOBEXAM などの別のプロセス、または管理ポータルで発生したアクションによってターミナル・セッションが終了した場合。プロセスがアプリケーション・モードで動作している場合は、監査レコードの Description フィールドに “^routinename client disconnect” というメッセージが記述されます (routinename はプロセスで実行した最初のルーチンです)。また、プロセスがプログラマ・モードで動作している場合は、Description フィールドに “Programmer mode disconnect” というメッセージが記述されます。イベント・データには、対象のプロセスを終了させたプロセスの PID が記述されています。

  • コア・ダンプまたはプロセス例外が発生した場合。プロセスでコア・ダンプまたは例外が発生すると、その時点で既に監査ファイルへの書き込みはできなくなっています。したがって、クリーンアップ・デーモンの実行によってプロセスの状態がクリーンアップされると、“Pid <process nunber> Cleaned” という説明を添えた監査レコードがログに書き込まれます。

  • TCP クライアントが切断された場合。クライアントが切断されたことがプロセスで検出されると、監査レコードの Description フィールドには、“<client application> client disconnect” のように、切断された実行可能プログラムの名前を示すメッセージが記述されます。

%System/%Security/DBEncChange イベントについて

プロセスで次のいずれかが発生すると、%System/%Security/DBEncChange イベントが生成されます。

  • 暗号化キーの有効化

  • 暗号化キーの無効化

  • 暗号化キーおよびキー・ファイルの作成

  • 暗号化キー・ファイルの変更

  • 暗号化設定の変更

暗号化キーの ID やキー・ファイルがイベントに関連している場合は、EventData にこれらが含まれています。

%System/%System/DatabaseChange イベントについて

プロセスは、以下に示すデータベースへの変更のいずれかによって、%System/%System/DatabaseChange を生成します。

  • 作成

  • 変更

  • マウント

  • ディスマウント

  • 圧縮

  • 削除

  • グローバル圧縮

  • デフラグ

作成と変更の場合、以下のプロパティへの変更により監査イベントが発生します (このイベントは、イベント・データに含まれます)。

  • BlockSize (作成のみ)

  • ClusterMountMode (クラスタ・システムのみ)

  • ExpansionSize

  • GlobalJournalState

  • MaxSize

  • NewGlobalCollation

  • NewGlobalGrowthBlock

  • NewGlobalIsKeep

  • NewGlobalPointerBlock

  • ReadOnly

  • ResourceName

  • Size

マウントとディスマウントの場合、イベント・データにはマウントまたはディスマウントされたデータベースが記録されます。圧縮、削除、グローバル圧縮、およびデフラグの場合、イベント・データにはユーザが選択したパラメータが含まれます。

%System/%System/RoutineChange イベントについて

プロセスでルーチンがコンパイルまたは削除されると、%System/%System/RoutineChange イベントが生成されます。このイベントを有効にしておくと、ルーチンまたはクラスをコンパイルしたときに監査ログにレコードが書き込まれます。監査レコードの Description フィールドには、変更が発生したデータベース・ディレクトリ、および変更されたルーチンまたはクラスの名前が記述され、ルーチンが削除されている場合は “Deleted” という語が追記されます。

Caché はローカル・サーバのイベントを監査しますが、関連インスタンスのイベントは監査しません。例えば、Caché のあるインスタンスがデータベース・サーバである別のインスタンスに関連付けられたアプリケーション・サーバである場合、そのアプリケーション・サーバに新しいルーチンを作成してコンパイルするイベントは、RoutineChange 監査イベントがデータベース・サーバで有効になっていても、データベース・サーバでは監査されません。すべての関連インスタンスのすべての変更の包括的なリストを作成するには、すべてのインスタンスの関連イベントを有効にし、それらの監査ログを結合します。

システム・イベントの有効化および無効化

システム・イベントを有効または無効にするには、以下の手順に従います。

  1. 管理ポータルのホーム・ページで、[システム監査イベント] ページ ([システム管理] > [セキュリティ] > [監査] > [システムイベントを構成]) に移動します。

  2. [システム監査イベントの構成] ページで、有効または無効にするイベントを探し、テーブルの最も右の列から [状態変更] を選択します。これにより、[有効] の状態が [いいえ] から [はい]、または [はい] から [いいえ] に変わります。

ユーザ・イベントについて

Caché ではシステム・イベントを使用できるほか、アプリケーションから監査データベースに追加できるカスタム・イベントを作成できます。現在定義されているイベントはすべて [ユーザ定義の監査イベント] ページ ([システム管理] > [セキュリティ] > [監査] > [ユーザイベントを構成]) に一覧表示されます。

ユーザ定義イベントの作成

Caché でユーザ定義イベントを監査するには、そのイベントをイベントのリストに追加した後、有効にする必要があります。以下はその方法です。

  1. 管理ポータルで、[ユーザ定義の監査イベント] ページ ([システム管理] > [セキュリティ] > [監査] > [ユーザイベントを構成]) に移動します。

  2. [新規イベントの作成] をクリックします。[監査イベント編集] ページが表示されます。

  3. このページで、[イベントソース][イベントタイプ][イベント名]、および [説明] のフィールドに値を入力します。これらのコンポーネントには、“監査イベントの要素” で説明しているような目的があります。

  4. このページにある [有効] チェック・ボックスには、既定でチェックが付いています。イベントを無効にするには、このチェック・ボックスのチェックを外します。

  5. このイベントを作成するには、このページの [保存] ボタンをクリックします。

  6. 監査が有効になっていることを確認します。

  7. イベントを定義し、監査を有効にすれば、以下のコマンドを実行することで、そのイベントを監査ログに追加できます。

    Do $SYSTEM.Security.Audit(EventSource,EventType,Event,EventData,Description)
    

    ポータルで定義した、EventSourceEventTypeEvent、および EventData の値を使用します。詳細は、“監査ログへのエントリの追加” を参照してください。

監査ログへのエントリの追加

以下の $SYSTEM.Security.Audit 関数を使用すると、アプリケーションから独自のエントリを監査ログに追加できます。

Do $SYSTEM.Security.Audit(EventSource,EventType,Event,EventData,Description)

EventSourceEventTypeEventEventData、および Description については、“監査イベントの要素” に説明があります。EventDataDescription の両方の引数には、変数またはリテラル値を指定できます (文字列は二重引用符で囲みます)。ログ項目の他の要素は自動的に指定されます。

EventData の内容は複数の行に記述できます。この内容は、ObjectScript Write コマンドの引数と同じように処理されるため、以下の形式が使用されます。

"Line 1"_$Char(13,10)_"Line 2"

この場合、監査詳細に示された内容が “Line 1” として表示され、$Char(13,10) はキャリッジ・リターンと改行で、その後 “Line 2” が表示されます。

例えば、XYZ Software Company 製の医療記録アプリケーションで以下のような値が使用されているとします。


 $SYSTEM.Security.Audit(
     "XYZ Software",
     "Medical Record",
     "Patient Record Access",
     765432,
     "Access to medical record for patient 765432"
     )

このアプリケーションでは、EventData 要素を使用して、アクセスされた記録を持つ患者の ID を記録しています。

さらに “XYZ Software/Record Update/Modify Assignment” イベントが定義されて有効になっている場合、以下のコードにより、リストからユーザが選択した要素の値が変更され、監査データベースにその変更が記録されます。

 For i=1:1:10 {
     Kill fVal(i)
     Set fVal(i) = i * i
 }

 Read "Which field to change? ",fNum,!
 Read "What is the new value? ",newVal,!
 Set oldVal = fVal(fNum)
 Set fVal(fNum) = newVal
 Set Data = "Changed field " _ fNum _ " from " _ oldVal _ " to "_ newVal _ "."
 Set Description = "Record changed by user with an application manager role"
 Do $SYSTEM.Security.Audit(
     "XYZ Software", 
     "Record Update", 
     "Modify Assignment",
     Data,
     Description
 )
 Write "Field changed; change noted in audit database."

この追加処理が成功したかどうかは、Audit が返す値 1 または 0 で示されます。

監査ログにエントリを追加するために特権が必要になることはありません。

ユーザ・イベントの削除

ユーザ・イベントを削除すると、そのイベントは Caché インスタンスの構成要素として監査できなくなります。ユーザ・イベントを削除する方法は、以下のとおりです。

  1. 管理ポータルのホーム・ページで、[ユーザ定義の監査イベント] ページ ([システム管理] > [セキュリティ] > [監査] > [ユーザイベントを構成]) に移動します。

  2. このページで、有効または無効にするイベントを探し、テーブルの右側近くにある列で [削除] を選択します。

  3. 指示に従って、イベントを削除することを確認します。

監査および監査データベースの管理

イベントが記録されると、監査データベース CACHEAUDIT にそのイベントが表示されます。この監査データベースには、一般的な情報も保存されています。この情報には、例えばサーバ名、Caché 構成の名前、ログ記録の開始日時、ログ記録の終了日時があります。

監査ログの管理では、以下のアクションが可能です。

監査データベースの表示

監査データベースを表示するには、[監査] メニューから [監査データベースの閲覧] を選択します。[監査データベースの閲覧] ページ ([システム管理] > [セキュリティ] > [監査] > [監査データベースの閲覧]) が表示されます。このページでは、監査データベースを表示し、以下のフィールドを基準にして検索を絞り込むことができます。

  • イベント・ソース — イベントのソースである Caché インスタンスのコンポーネント。詳細は、“監査イベントの要素” を参照してください。このフィールドの右にあるボタンをクリックすると、使用されている値のリストが表示されます。アスタリスク (“*”) を使用すると、すべての値が選択されます。これ以外のワイルドカードはサポートされていません。

  • イベント・タイプ — イベントの分類に関する任意の情報。詳細は、“監査イベントの要素” を参照してください。このフィールドの右にあるボタンをクリックすると、使用されている値のリストが表示されます。アスタリスク (“*”) を使用すると、すべての値が選択されます。これ以外のワイルドカードはサポートされていません。

  • イベント名 (イベントともいいます) — 記録されているイベントの識別子。詳細は、“監査イベントの要素” を参照してください。このフィールドの右にあるボタンをクリックすると、使用されている値のリストが表示されます。アスタリスク (“*”) を使用すると、すべての値が選択されます。これ以外のワイルドカードはサポートされていません。

  • システム ID — 各監査ログ・エントリに表示される Caché インスタンスの識別子。この識別子は、machine_name:instance_name の形式で表されます。したがって、“MyMachine” というマシンで “MyCache” という Caché インスタンスを実行している場合、システム ID は “MyMachine:MyCache” となります。複数のシステム ID を検索する場合は、それぞれの ID をコンマで区切ってリストにします。アスタリスク (“*”) を使用すると、すべての値が選択されます。これ以外のワイルドカードはサポートされていません。

  • PID — イベントを記録した Caché プロセスのオペレーティング・システム ID。詳細は、“監査イベントの要素” を参照してください。

  • 開始日時 — 最初に表示するイベントの日時 (既定では、現在の日の午前 0 時)。

  • 終了日時 — 最後に表示するイベント (最新のイベント) の日時 (既定では、現在の日時)。

  • 並べ替え — 以下の順で結果を並べ替えます。

    • 日付の降順 — 日付が新しい順

    • イベント順 — イベント名のアルファベット順

    • ユーザ順 — ユーザ名のアルファベット順

    • PID 順 — オペレーティング・システム・プロセス ID の小さい順

  • 最大行数 — 監査ログの一覧に表示する最大行数 (最大 10,000 行)。

  • 色 — 検索結果の色の設定方法を決定するフィールド (ある場合)。検索結果の色の決定が可能なフィールドとして、説明、イベント、イベント・ソース、イベント・タイプ、PID、タイム・スタンプ、およびユーザ名があります。

  • ユーザ — イベントの原因となったユーザ。アスタリスク (“*”) を使用すると、イベントの原因となったすべてのユーザが選択されます。これ以外のワイルドカードはサポートされていません。

監査データベースのコピー、エクスポート、および削除

監査ログは %SYS ネームスペースの %SYS.Audit テーブルに格納されます。また、監査データはすべて CACHEAUDIT データベースにマップされ、%DB_CACHEAUDIT リソースによって保護されます。既定では、このリソースの読み取り許可は %Manager ロールが持っています。また、書き込み許可を持つロールはありません。

監査ログ・データベースは、他の Caché データベースと同じツールで管理されます。例えば、管理ポータルを使用して、初期サイズ、増分サイズ、および場所を指定できます。監査ログ・データベースには指定された最大サイズはありませんが、ディスク容量などの要因で制約されます。

管理ポータルでは、監査データベースに対して以下の特別な管理操作を実行できます。

  • コピー — 1 日分以上のエントリを指定のネームスペースにコピーできます。

  • エクスポート — 1 日分以上のエントリをログからファイルにエクスポートできます。

  • 削除 — 1 日分以上のエントリをログから削除できます。

Note:

これらすべての操作は、1 日分以上のエントリすべてに適用できます。特定のエントリのみを対象とした操作はありません。

監査データベースのコピー

Caché では、管理データベースの全体または一部を CACHEAUDIT 以外のネームスペースにコピーできます。以下はその方法です。

  1. 管理ポータルのホーム・ページで、[監査ログのコピー] ページ ([システム管理] > [セキュリティ] > [監査] > [監査ログのコピー]) に移動します。

  2. [監査ログのコピー] ページで、まず以下のいずれかを選択します。

    • 監査ログからすべてのアイテムをコピー

    • この日数より古い項目を監査ログからコピー : このフィールドに入力した日数より多くの日数が経過した古い項目が、新しいネームスペースにコピーされます。

  3. 次にドロップダウン・メニューを使用して、監査エントリのコピー先とするネームスペースを選択します。

  4. 監査項目をコピーした後、コピー元の項目を削除するには、該当するチェック・ボックスにチェックを付けます。

  5. [OK] をクリックし、目的のエントリをコピーします。

選択した監査ログ・エントリが、指定のネームスペースにある ^CacheAuditD グローバルに置かれます。以下の手順で、このデータを表示できます。

  1. 管理ポータルのホーム・ページで、[グローバル] ページ ([システム・エクスプローラ] > [グローバル]) に移動します。

  2. [グローバル] ページで、以下の項目を以下の順序で選択します。

    1. ページの左上の領域にある [データベース] ラジオ・ボタン。

    2. コピーした監査ログ・エントリが保持されているデータベースの名前。

    3. グローバルのリストの上に表示されている [システム] チェック・ボックス。

    これによって、データベースにある ^CacheAuditD などのグローバルのリストが表示されます。このリストでは、グローバルの名前の前に “^” 文字が表示されません。プログラムやターミナルでグローバルを操作する際は、名前の前にこの文字が必要です。

    Note:

    このページで [グローバルの表示] をクリックすると、ページの表示が更新されますが、[システム] チェック・ボックスのチェックが外されるので ^CacheAuditD が表示されなくなります。

  3. CacheAuditD の行で [データ] をクリックすると、その監査ログ・エントリの詳細が表示されます。

別のネームスペースに監査データをコピーし終わったら、%SYS.AuditOpens in a new tab クラスのクエリを使用してそのデータを確認できます。

監査データベースのエクスポート

Caché では、監査データベースの全体または一部をエクスポートできます。以下はその方法です。

  1. 管理ポータルのホーム・ページで、[監査ログのエクスポート] ページ ([システム管理] > [セキュリティ] > [監査] > [監査ログのエクスポート]) に移動します。

  2. [監査ログのエクスポート] ページで、まず以下のいずれかを選択します。

    • [監査ログからすべてのアイテムをエクスポート]

    • [この日数より古い項目を監査ログからエクスポート] : このフィールドに入力した日数より多くの日数が経過した古い項目が、新しいネームスペースにエクスポートされます。

  3. 次に、監査エントリのエクスポート先とするファイルのパスを、[ファイルにエクスポート] フィールドに入力します。フル・パスで入力しない場合は、パスのルートには cachesys/Mgr/ が使用されます。cachesys は既定のインストール・ディレクトリ名です。

  4. 監査項目をエクスポートした後、エクスポート元の項目を削除するには、該当するチェック・ボックスにチェックを付けます。

  5. [OK] をクリックし、目的のエントリをエクスポートします。

監査データベースの削除

Caché では、データベースの全体または一部を削除できます。

Important:

削除によるデータベース操作は元に戻せません。つまり、削除した項目は永久に削除されます。データベースから削除した項目は、元のデータベースにリストアできません。

以下はその方法です。

  1. 管理ポータルのホーム・ページで、[監査ログのパージ] ページ ([システム管理] > [セキュリティ] > [監査] > [監査ログのパージ]) に移動します。

  2. [監査ログのパージ] ページで、まず以下のいずれかを選択します。

    • [監査ログからすべてのアイテムをパージ]

    • [この日数より古い項目を監査ログからパージ] : このフィールドに入力した日数より多くの日数が経過した古い項目が削除されます。

  3. [OK] をクリックし、目的のエントリを削除します。

監査データベースの暗号化

Caché では、監査ログを保持するデータベースを暗号化できます。詳細は、"Caché セキュリティ管理ガイド" の “マネージド・キー暗号化” の章にある “Caché データベース暗号化の起動設定の構成” を参照してください。

汎用管理関数

監査ログはテーブルに格納されるため、Caché の標準的なシステム管理ツールおよび手法を使用して管理できます。

  • ジャーナリングは監査ログに対して常に有効になっています。

  • 監査ログは、Caché の標準的なコマンドを使用して読み取ることができます。また、その内容には標準 SQL を使用してアクセスでき、任意の標準 SQL ツールを使用して監査ログを処理できます。

  • 監査ログは、Caché の標準的なデータベース・バックアップ機能を使用してバックアップできます。

  • データベースがいっぱいになると <FILEFULL> エラーが発生し、他の Caché データベースに対する処理と同じ処理が行われます。このような状態を避けるには、“監査データベースのサイズの維持” のセクションを参照してください。

Note:

すべてのアクセスは、データベース・レベルまたはネームスペース・レベル (あるいはこれら両方) において、またはテーブル・ベースのアクティビティ用の SQL によって、標準的なセキュリティ制限の対象となります。

%SYS ネームスペースの %SYS.AuditOpens in a new tab テーブルは監査ログを保持します。監査データはすべて、CACHEAUDIT データベースにマップされます (“監査データベースのコピー” のセクションで説明されている機能を使用して、監査データを他のデータベースにコピーすることもできます。その後で、ネームスペースごとに使用可能な %SYS.AuditOpens in a new tab クラスを使用して、監査ログを照会できます)。

監査データベースのサイズの維持

Caché を実行すると監査ログへの書き込みが発生します。操作を行わないと、最終的に監査データベースが一杯になります。監査データベースがいっぱいになると Caché は停止します。監査情報を適切に保存し、ダウンタイムを防ぐには、監査データベースの内容を定期的にエクスポートして保存し、その内容を削除する必要があります。

以下はその方法です。

  1. 監査データベースのエクスポート” のセクションの説明に従って、監査データベースの内容をエクスポートします。

    Note:

    すべてのエントリをデータベースからエクスポートすることをお勧めします。

  2. 監査データベースのエクスポートした内容が有効であることを確認します。

    Important:

    データの削除は元に戻せない操作であるため、このデータが有効であることを確認することをお勧めします。

  3. 監査データベースの削除” のセクションの説明に従って、既存のデータベースから古いエントリを削除します。

    Important:

    最後の日付のエントリ以外のすべてのエントリを削除することをお勧めします。こうすることによって、保存済みのエントリのさまざまなグループに重複が発生します。

Caution:

監査データベースがいっぱいになると、監査イベントを引き起こすアクションの監査エントリは記録されなくなります。さらに、法則の面から考えれば、AuditRecordLost 監査エントリのみが 1 件存在している場合は、レコードが 1 件以上失われたことを示しています。

その他の監査の問題

このセクションでは、以下のトピックについて説明します。

監査ログが書き込み不能な場合の Caché のフリーズ

Caché の動作中に、監査データベースへの書き込みが不可能になることがあります。これは、ディスクがいっぱいになった場合やネットワーク接続に障害が起きた場合などに発生します。このような場合、Caché は以下の 2 種類のモードのいずれかで動作できます。

  • 既定では、監査ログへの書き込みで問題が発生するとエラーが生成されます。

  • 代替の動作として、監査ログへの書き込みで問題が発生したときにシステムをフリーズするようにスイッチを設定できます。

このスイッチを設定するには、以下のように ^SECURITY ルーチンを使用します。

  1. ターミナルで、%SYS ネームスペースに移動します。

    > zn "%SYS"
    
  2. 以下のように ^SECURITY を起動します。

    > Do ^SECURITY
    
  3. ^SECURITY でオプション 6 ([監査の設定]) を選択し、[監査の設定] でオプション 1 ([監査の有効化]) を設定します。

  4. [監査データベースにエラーが発生したときにシステムをフリーズしますか。] というプロンプトが表示されたら、「Yes」または「Y」と入力します。指示に従って、変更操作を確認します。

これによって、システムのフリーズ動作が設定されます。

ディスクが一杯になってエラーが発生した場合の対処方法は、システムを停止し、監査ディスクに空き容量を確保した後、再起動することです。データベースの破損によってエラーが発生した場合は、監査データベースを移動または削除し、その場所に新しいデータベースを作成するか、データベースをコピーします。システムを再起動するだけでは、エラーは解決されません。それは、再起動によって監査レコードが書き込まれ、システムが再度フリーズするからです。

例えば、監査データベースが格納されているディスクが一杯になったとき、監査ログに書き込もうとすると、既定の動作では <FILEFULL> エラー (ディスクが一杯) が発生します。この監査レコードは監査ログに書き込まれないため、失われます。問題を解決すると、失われた監査イベントの件数が記録された監査ログにエントリが書き込まれます。

このスイッチが設定された状態で監査ログへの書き込みエラーが発生すると、監査ログに書き込もうとしていたプロセスは <FILEFULL> などのエラーを受け取ります。するとプロセスは cconsole.log にこのエラー・メッセージを書き込み、システムをフリーズします。

カウンタについて

セキュリティ監視を容易にするために、Caché では監査イベント・タイプごとにカウンタを保持し、Caché 監視インタフェースを介して、これらのカウンタを利用できるようにしています。これらのカウンタは、監査が有効ではない状態でも維持されています。例えば、LoginFailure イベント・カウンタを監視していれば、サイトに侵入しようとする行為の検出に役立ちます。

Note:

監査のカウンタは、インスタンスの再起動時にリセットされます。

システム・イベントのカウンタのリセット

システム・イベントのカウンタをリセットするには、以下の手順に従います。

  1. 管理ポータルのホーム・ページで、[システム監査イベント] ページ ([システム管理] > [セキュリティ] > [監査] > [システムイベントを構成]) に移動します。

  2. このページで、有効または無効にするイベントを探し、テーブルの右側近くにある列で [リセット] を選択します。

  3. プロンプトが表示されたら、[OK] をクリックします。これによって、選択したイベントの [合計] カウンタと [書き込み] カウンタの両方がリセットされます。

ユーザ・イベントのカウントのリセット

ユーザ・イベントのカウンタをリセットするには、以下の手順に従います。

  1. 管理ポータルのホーム・ページで、[ユーザ定義の監査イベント] ページ ([システム管理] > [セキュリティ] > [監査] > [ユーザイベントを構成]) に移動します。

  2. このページで、有効または無効にするイベントを探し、テーブルの右側近くにある列で [リセット] を選択します。これによって、選択したイベントの [合計] カウンタと [記録数] カウンタの両方がリセットされます。

  3. プロンプトが表示されたら、[OK] をクリックします。これによって、選択したイベントの [合計] カウンタと [書き込み] カウンタの両方がリセットされます。

FeedbackOpens in a new tab