User's Guide > 高度な操作
高度な操作
高度な操作は、AZCC の外部から監査データにアクセスするためのユーティリティや方法を必要とするユーザー向けのものです。
SQL を使って直接監査データを照会する
監査レコードにアクセスするための手段は、AZCC クライアントとその Query Builder だけではありません。これらのレコードに対して直接 SQL クエリを実行することもできます。これを行うには、まず、Audit for Zen で提供される Query Data-Model Generator(QDMG)ユーティリティを使用する必要があります。このユーティリティは、Audit for Zen システムの監査レコードにリンクされたビューの仮想データベースを作成するスクリプトを生成します。
クエリ データ モデル方法を使って、現在のビューとアーカイブの両方の監査レコードを直接照会することができます。直接クエリは、レポートを作成する、または監査レコードを表示するためのアプリケーションだけでなく、展開やデバッグ目的の役目を果たすアプリケーションをサポートできます。
Zen インストールに含まれる Demodata データベースに直接クエリ メソッドを適用する方法を示すための使用事例が提供されています。
このトピックでは、以下の項目について説明します。
メモ:  Audit for PSQL v12 では、内部ログおよび設定ファイルは Zen の長いオーナー ネームで保護され暗号化されているため、ここで説明する SQL クエリ メソッドはサポートされません。 v14 以降では、[監査レコードを暗号化しない]が設定されている場合は監査レコードを照会することができます。
Query Data-Model Generator ユーティリティ
Query Data-Model Generator(QDMG)は、一連の SQL ステートメントから成る、空のデータベースに対して実行するスクリプトを生成します。スクリプトはこの仮想データベースに、Audit for Zen ログ ファイルに格納されている監査レコードにリンクするビューを移入します。ビューが作成されたら、それに対してクエリを実行し、Audit for Zen 内の監査レコードから結果を返すことができます。
構文
qdmg -d DDF_path [-m password] -p name ‑o file [‑l logfile] [-a folder]
オプション
オプション
説明
-a
amserver ファイルがある、リモート サーバー上の Data ディレクトリ。amserver がクライアントと同じシステムにある場合は任意です。
-d
インポートするデータベース スキーマ(.ddf ファイル)のパス名。
-m
データベースがセキュリティで保護されている場合は、Master パスワード。
-p
監査設定の名前。例:Zen Demo。スペースが含まれる名前は引用符で囲んでください。
-o
生成された SQL の出力(.sql)ファイルのパスとファイル名。パス名を指定しない場合、ファイルは現在のディレクトリに書き込まれます。
-l
QDMG メッセージを記録したログ ファイル名。デフォルトは amlog です。
-h
ヘルプ。
ログ ファイルは、AZCC 内の現在のビュー ファイルのレコードを含んでいます。アーカイブ ファイル内の監査レコードにアクセスすることもできますが、それにはまず、現在のビュー ファイルに対するクエリを有効にする必要があります。次の短い手順を指定された順序どおりに行ってください。
仮想データベースを作成する
このタスクでは、qdmg ユーティリティを使用して、監査データの直接クエリ用の仮想データベースを作成する手順を示します。この例では、Zen によってインストールされる Demodata を使用します。
1. 仮想データベースの設定を行う前に、監査対象のデータベースのスキーマを AZ にインポートします。既に処理済みである場合は、次の手順に進みます。
この例では、Demodata に対するインポートは、AZ インストールの一環として既に行われています。
独自のデータベースからスキーマをインポートする方法について説明が必要な場合は、スキーマの管理を参照してください。
2. 仮想データベースの作成では、監査レコードを照会するデータベースの DDF へのアクセスが必要となります。DDF のパスを見つけるには、以下のすべてを実行します。
Zen Control Center を開いて、監査するデータベース Demodata のブランチを展開します。
Demodata の[テーブル]ブランチを開き、テーブルを右クリックして[プロパティ]を選択します。
DDF が置かれる[辞書パス]に注目します。
3. 仮想データベースを監査レコードにリンクする場合は、AZ 内のどの監査の設定が使用されるかを示す必要があります。その名前を調べるには、以下の両方を実行します。
AZCC を開いて、Audit for Zen 管理者としてログインします。
[テーブル]タブの[監査の設定]リストから、スキーマをインポートする際に入力した監査設定の名前を見つけます。この例では、名前は "Zen Demo" で、Audit for Zen のインストレーションに既にインポートされているものです。
4. Windows エクスプローラーで、既存の Demodata フォルダーと同じレベルに新しいフォルダーを作成します。
この例では、"virtual" の V を付加して DemodataV というフォルダー名にしていますが、独自の名前を選択してもかまいません。仮想データベースを作成するためのスクリプトは、データベース自体と同様に、ここに保存されます。
5. qdmg を使用して、次の条件に基づいてスクリプトを生成します。
監査するデータベースの DDF のパス名(デフォルト値:C:\ProgramData\Actian\Zen\Demodata)
Demodata データベースのセキュリティは無効になっているので、パスワードはありません
監査の設定の製品名は "Zen Demo"
生成されたスクリプトの出力用のパスとファイル名
コマンドは次のようになります。
qdmg -d C:\ProgramData\Actian\Zen\Demodata -p "Zen Demo" ‑o C:\ProgramData\Actian\Zen\DemodataV\script
6. コマンド プロンプト ウィンドウを開いて、コマンドを実行します。
プロンプトが次のメッセージを返します。
Query Data-Model Generator Utility for Actian AuditMaster
Copyright (C) Actian Corporation 2019
Query Data-Model was generated into C:\ProgramData\Actian\Zen\DemodataV\script.sql
次に、スクリプトを実行するデータベースを作成します。
7. Zen Control Center を開きます。
8. サーバーの名前の下にあるデータベース(エンジン)ノードを右クリックし、[新規作成]>[データベース]を選択します。
データベースの新規作成ウィザードが表示されます。
9. この例では、データベース名 DemodataV と作成したディレクトリ C:\ProgramData\Actian\Zen\DemodataV を使用します。
メモ:  仮想データベースは、Audit for Zen インストール ディレクトリと同じボリュームにある必要があります。また、元のデータベースが長い(V2)メタデータを使用している場合は、この新しい仮想データベースの対応するチェック ボックスをオンにします。
10. 完了]をクリックしてデータベースの作成を完了します。
11. Zen Control Center で[ファイル]>[開く]を選択します。
12. [SQL ドキュメントを開く]ダイアログ ボックスで、これに先立って C:\ProgramData\Actian\Zen\DemodataV に保存された script.sql ファイルの場所まで移動します。
13. [データベースの選択]ダイアログ ボックスで、[データベース]ツリーを展開し、DemodataV を選択して[OK]をクリックします。
SQL Editor に script.sql 内の SQL ステートメントが表示されます。
14. SQL]>[すべての SQL ステートメントを実行]を選択します。
script.sql 内のステートメントにより、DemodataV に監査レコードのビューが移入されます。作成内容を確認するには、ZenCC で、DemodataV データベースの下にある[ビュー]ノードを展開します。
これで、仮想データベース DemodataV は、監査レコードの列に対するクエリだけでなく、Demodata のデータ列に対するクエリもサポートするようになりました。
次のいずれかを行えます。
照会できる対象を調べる。監査レコードの構造を参照してください。
現在の監査レコードを照会する。現在のビュー ファイルでクエリを実行するを参照してください。
アーカイブされている監査レコードを照会する。アーカイブ ファイルでクエリを実行するを参照してください。
監査レコードの構造
このセクションでは、監査レコードの列について説明します。その構造は、SELECT * FROM vstudent などのクエリによって返される結果の典型です。
この例では次のことを注意してください。
結果内の監査列には、名前にプレフィックス AM$ が付き、監査データが含まれています。
AM$ 監査データ列の後に続く行の残り部分は、監査対象テーブルのデータ フィールドで構成されており、監査イベントの発生時にそのテーブルから取り込まれた値が含まれています。
多くの監査列は、AZCC や Query Builder ウィンドウのタブに見られるクエリ属性と合致しています。
列名はすべて照会可能ですが、一部には、人的監査に特に関連していない内部的に使用されるコードが含まれています。
監査レコードの構造を検討した後、DemodataV 例でクエリを実行する手順については、現在のビュー ファイルでクエリを実行するを参照してください。
次の表では、監査レコードの列と AZCC の[監査レコード]タブに表示される列を比較しています。
仮想データベース
AZCC
説明
AM$rec_id
レコード番号
監査レコードの内部番号
AM$opdate
日付
監査レコードのキャプチャ日付(例:2023-06-07)
AM$optime
時刻
監査レコードのキャプチャ時刻(例:17:04:30)
AM$dbms_id
内部使用
AM$dbmsverkey
Zen システムのバージョン
AM$opcontextkey
操作コンテキスト
正常な操作(BTRIEVE など)またはエラー
AM$opcode
内部使用
AM$optext
操作
データベース イベント。イベントには、Query Builder の[対象]タブの[操作]リストにある任意の項目が含まれます。
SQL ログインは、この列に表示されます。また、[サーバー設定]ウィンドウの[監査するエラー]領域で Zen ステータス コードを最初に選択したときに、その選択したステータス コードがここに表示されます。
AM$dep_rec_id
依存するレコード
以前の関連レコードのレコード番号:
変更後のレコードに対する変更前のレコード
トランザクションを終了/中止したレコードに対する、トランザクションを開始したレコード
AM$prod_id
内部使用
AM$prodverkey
製品バージョン
監視対象ファイルの監査の設定に記載されている値
AM$product_name
製品
監視対象ファイルの監査の設定に記載されている値
AM$comp_id
データベース エンジン
AM Message API(AZ 内部で使用)または Zen
AM$compverkey
コンポーネント バージョン
監視対象ファイルの監査の設定に記載されている、コンポーネント バージョン
AM$comp_name
コンポーネント
監視対象ファイルの監査の設定に記載されている値
AM$tab_id
内部使用
AM$tabverkey
AM$compverkey と同じです
AM$table_name
テーブル名
イベントが発生したファイル。[対象]タブの[テーブル]属性と同じです。このファイルは、監査の設定で監視対象として選択されている必要があります。構成されたすべてのファイルは、Query Builder の[対象]タブの[テーブル]リストに表示されています。
AM$tabdef_id
内部使用
AM$group_name
グループ名
監査の設定における監視対象ファイルのグループ。[対象]タブの[グループ]属性と同じです。
AM$net_id
マシン名
イベントが発生したマシン名または IP アドレス。[場所]タブの[マシン名]属性と同じです。
AM$net_user_id
ユーザー名
イベントが発生したログイン ID。[ユーザー]タブのユーザー名と同じです。Zen セキュリティの下での監査レコードの表示を参照してください。
AM$process_name
プロセス名
監査イベントの発生元となったプロセス。[方法]タブの[プロセス]属性と同じです。
AM$sess_num
内部使用
AM$lic_num
内部使用
AM$mapstate
内部使用
AM$database_name
データベース名
監査イベントが発生したデータベース。イベントのレベルにおけるデータベース概念の実装によっては、この値は "n/a"(適用外)になる場合があります。
AM$osverkey
OS バージョン
AZ サーバーが実行されているオペレーティング システムの名前とバージョン
AM$retcode
内部使用
AM$reserved
内部使用
AM$databufsize
内部使用
AM$len
内部使用
<Data Column 1>
監査イベントが発生したテーブルの最初のデータ列
<Data Column 2>
監査イベントが発生したテーブルの 2 番目のデータ列
<Data Column n...>
さらなるデータ列...
現在のビュー ファイルでクエリを実行する
監査レコードの構造で説明した監査レコードを照会する前に、次の作業が完了していることを確認してください。
qdmg を実行して、監査レコードにリンクされているビューを仮想データベースに入れ込むためのスクリプトを生成する
空のデータベースを作成する
データベースでスクリプトを実行する
これらの作業が完了したら、この後の例に示すように、監査レコードに対する直接クエリを実行することができます。
DemodataV 監査レコードの単純クエリを実行するには
1. AZ で、Demodata の Student テーブルを監視するように組み込みの Zen Demo 監査設定を行い、その後、その設定を有効にするために Zen Control Center の[サービス]で Zen データベース エンジンを再起動します。
2. Zen Control Center で、Demodata データベース、Student テーブルの順に開きます。
SQL Editor で、デフォルトのクエリ SELECT * FROM "Student" によってすべての行が返されます。
3. 先頭行の学生 ID には 190907350 が入っているはずです。この学生の GPA フィールドをクリックし、4.000 を 3.000 に変更して Enter キーを押します。
4. Zen Control Center で、[ファイル]>[新規作成]>[SQL ドキュメント]を選択します。
5. データベースを選択するよう求められたら、DemodataV をクリックします。
6. 新しい SQL ドキュメントで次のクエリを実行します。このステートメントをコピーして、SQL Editor に貼り付けることができます。
SELECT AM$rec_id, AM$opdate, AM$optext, ID, Cumulative_GPA FROM VStudent
クエリは次のような結果を返します。
AM$rec_id  AM$opdate AM$optext             ID Cumulative_GPA
========== ========== ============= ========= ==============
637         10/2/2019 Modify Before  190907350 4.000
638         10/2/2019 Modify After   190907350 3.000
アーカイブ ファイルでクエリを実行する
このトピックでは、仮想データベースを作成するで作成された仮想データベース DemodataV を参照します。
qdmg スクリプトは、仮想データベース内の選択テーブルが、現在のビュー ファイル内の監査レコードを指すように設定します。このファイルのデフォルトのパスは、C:\ProgramData\Actian\Zen\Audit\data\amlog です。このセクションで説明するように、アーカイブ ファイルへのパスは、名前がわかっている場合には設定し直すことができます。
アーカイブ ファイル名は、作成日に基づいた yyyymmdd.nn という書式になります。yyyy は年、mm は月、dd は日、nn はその日におけるアーカイブ ファイルの番号です。番号はゼロから始まります。ファイル名は大文字の V で終わります。アーカイブ ファイルのデフォルト フォルダーは、C:\ProgramData\Actian\Zen\Audit\Arch です。
アーカイブ ファイルを圧縮すると、そのファイルは別のフォルダーへ移動されます。移動先のデフォルトは C:\ProgramData\Actian\Zen\Audit\Comp で、ファイル名の V は Z に変更されます。ファイルの圧縮を解除すると、ファイルは Arch フォルダーに戻され、Z は V に戻されます。クエリは圧縮されていないレコードに対してのみ実行できます。
ここで説明する方法は、2 つの SQL スクリプトを使用します。
最初のスクリプトは、仮想データベースが、現在のビュー ファイルではなくアーカイブ ファイルを指すように設定します。
2 つ目のスクリプトは、仮想データベースを元の状態に戻して、再びクエリが現在のビュー ファイルから結果を返すようにします。
以下の手順は、以前に作成した仮想データベースの DemodataV を使用して、これらのスクリプトを示しています。この例は、これらのスクリプトを独自に書く方法を説明することを目的としています。
アーカイブ ファイルのクエリ用に仮想データベースを設定し直すには
1. 以下の手順を使用するには、アーカイブ ファイルが必要です。AZCC を開き、現在のビュー ファイルを右クリックして[アーカイブ]を選択します。
Audit for Zen は現在の監査レコードをアーカイブ ファイルに移動させます。
2. [アーカイブ ファイル]ノードを展開し、右クリックして[更新]を選択します。
新しく作成されたアーカイブ ファイルがリストに表示されます。
3. ファイルの名前に注目してください。この例では 20160220.00V です。ファイルの接尾辞が V であることを確認したい場合は、アーカイブ フォルダー(たとえば、C:\ProgramData\Actian\Zen\Audit\Arch)を見てください。
4. Zen Control Center で、[ファイル]>[新規作成]>[SQL ドキュメント]を選択します。
5. データベースを選択するよう求められたら、DemodataV をクリックします。
6. 新しい SQL ドキュメントで、次の SQL ステートメントをすべて実行します。これらをコピーして、SQL Editor に貼り付けることができます。アーカイブ ファイルの名前は、20191015.00V ではなく独自の名前を使用してください。
-- このスクリプトは、仮想データベースを圧縮されていない
-- アーカイブ ファイル 20191015.00V に設定し直します。
ALTER TABLE AM$amlog IN DICTIONARY USING '..
\Audit\Arch\20191015.00V';
ALTER TABLE Billing IN DICTIONARY USING '..
\Audit\Arch\20191015.00V';
ALTER TABLE Class IN DICTIONARY USING '..
\Audit\Arch\20191015.00V';
ALTER TABLE Course IN DICTIONARY USING '..
\Audit\Arch\20191015.00V';
ALTER TABLE Dept IN DICTIONARY USING '..
\Audit\Arch\20191015.00V';
ALTER TABLE Enrolls IN DICTIONARY USING '..
\Audit\Arch\20191015.00V';
ALTER TABLE Faculty IN DICTIONARY USING '..
\Audit\Arch\20191015.00V';
ALTER TABLE Person IN DICTIONARY USING '..
\Audit\Arch\20191015.00V';
ALTER TABLE Room IN DICTIONARY USING '..
\Audit\Arch\20191015.00V';
ALTER TABLE Student IN DICTIONARY USING '..
\Audit\Arch\20191015.00V';
ALTER TABLE Tuition IN DICTIONARY USING '..
\Audit\Arch\20191015.00V';
メモ:  スクリプトは、仮想データベース内の AM$amlog テーブルに加え、監査対象のデータベースに含まれているデータ テーブルのすべてのコピーについても、テーブルの場所プロパティを変更します。このスクリプトの独自のバージョンを書く場合、仮想データベースの AM$Components、AM$OpList、AM$Products、AM$Tables テーブルについては、テーブルの場所プロパティを変更しないようにしてください。
7. スクリプトを実行した後、これを再利用できるよう保持するために[ファイル]>[別名保存]を選択し、201015.00V.sql のような名前で保存することができます。
これで、現在のビュー ファイルでクエリを実行するで実行した差分クエリは、現在のビューに対して実行した場合と同じ結果を返すはずです。これらの監査レコードは、現在仮想データベースが指しているアーカイブ ファイルに移動されました。
現在のビューのクエリ用に仮想データベースを設定し直すには
以下の手順により、再び現在のビュー ファイルで直接クエリを実行できるようになります。
1. Zen Control Center で、[ファイル]>[新規作成]>[SQL ドキュメント]を選択します。
2. データベースを選択するよう求められたら、DemodataV をクリックします。
3. 新しい SQL ドキュメントで、次の SQL ステートメントをすべて実行します。これらをコピーして、SQL Editor に貼り付けることができます。
-- このスクリプトは、仮想データベースを現在のビュー ファイルに設定し直します。
ALTER TABLE AM$amlog IN DICTIONARY USING '..\Audit\DATA\amlog';
ALTER TABLE Billing IN DICTIONARY USING '..
\Audit\DATA\amlog';
ALTER TABLE Class IN DICTIONARY USING '..
\Audit\DATA\amlog';
ALTER TABLE Course IN DICTIONARY USING '..
\Audit\DATA\amlog';
ALTER TABLE Dept IN DICTIONARY USING '..
\Audit\DATA\amlog';
ALTER TABLE Enrolls IN DICTIONARY USING '..
\Audit\DATA\amlog';
ALTER TABLE Faculty IN DICTIONARY USING '..
\Audit\DATA\amlog';
ALTER TABLE Person IN DICTIONARY USING '..
\Audit\DATA\amlog';
ALTER TABLE Room IN DICTIONARY USING '..
\Audit\DATA\amlog';
ALTER TABLE Student IN DICTIONARY USING '..
\Audit\DATA\amlog';
ALTER TABLE Tuition IN DICTIONARY USING '..
\Audit\DATA\amlog';
メモ:  スクリプトは、仮想データベース内の AM$amlog テーブルに加え、監査対象のデータベースに含まれているデータ テーブルのすべてのコピーについても、テーブルの場所プロパティを変更します。このスクリプトの独自のバージョンを書く場合、仮想データベースの AM$Components、AM$OpList、AM$Products、AM$Tables テーブルについては、テーブルの場所プロパティを変更しないようにしてください。
4. スクリプトを実行した後、これを再利用できるよう保持するために[ファイル]>[別名保存]を選択し、currentview.sql のような名前で保存することができます。
これで、現在のビュー ファイルでクエリを実行するで実行した差分クエリは、アーカイブ ファイルに対する結果ではなく現在のビューに対する結果を返すようになりました。
直接クエリ メソッドの要約
このセクションでは、監査レコードの直接クエリ メソッドについて要約します。
1. 仮想データベースは、AZCC と関係なく、監査レコードの直接クエリを有効にすることができます。
2. 特別なスクリプトにより、データベースを作成します。Query Data-Model Generator ユーティリティの qdmg を使用して、このスクリプトの記述を自動化します。
3. データベースを Audit for Zen のインストール ルート(たとえば、デフォルトの C:\ProgramData\Actian\Zen\Audit)と同じボリュームに作成します。
4. データベースで qdmg スクリプトを実行します。
5. これで、作成されたビューを使用して、現在のビュー ファイルから監査レコードを返すクエリを仮想データベースで実行できるようになりました。
6. アーカイブ ファイル内の監査レコードを照会できるようにするには、そのために、ALTER スクリプトを使用して仮想データベースを設定し直します。
7. 再び現在のビュー ファイルを照会するように仮想データベースを元の状態に戻すには、2 番目の ALTER スクリプトを使用します。
8. 現在のビュー ファイルと、直接クエリの実行対象としたいアーカイブ ファイルごとに、リセット スクリプトを作成して保存します。仮想データベースで、直接クエリを実行する前に必要なスクリプトを実行します。
9. アーカイブ ファイルのクエリが成功するには、ファイルが圧縮されていない必要があることを覚えておいてください。
Audit for Zen とクライアント側のキャッシュ
Zen データベースでは、クライアント側のキャッシュ エンジンがオンになっている場合、キャッシュ エンジンは 8 回連続で読み取りをした後、さらに読み取ることを見越してデータベース ページ全体を読み取ります。キャッシュ エンジンによって読み取られたデータベース ページ内のレコードは、サーバー上のモニターで監査されません。監査において、あらゆる読み取りがキャプチャされることを必要とする場合は、キャッシュ設定がオフになっていることを確認してください。ただし、エンジンのキャッシュを使わないと、データベースのパフォーマンスが低下することがあります。この動作は、8 回連続の読み取りというしきい値に達した場合にのみ発生します。7 回読み取った後に更新が発生した場合には、キャッシュは発生せず、7 回すべての読み取りがキャプチャされます。Zen Control Center で[キャッシュ エンジンの使用]設定を確認するには、[ローカル クライアント]を展開し、[MicroKernel ルーター]を右クリックして[プロパティ]を選択します。次に、[パフォーマンス チューニング]をクリックします。デフォルトで、この設定はオフです。
読み取り操作を監査しない場合は、クライアント側のキャッシュの使用を制限する必要はありません。
最終更新日: 2024年07月10日