OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

Verticaの監査機能について

公開日:
更新日:
セキュリティ
#システムテーブル

はじめに

Verticaで監査を行う場合、下記2通りの方法があります。

– vertica.log に出力されている情報を参照する
– システムテーブルに格納されている情報を参照する

vertica.logには実行された全てのクエリやVertica内部ジョブの実行履歴も出力されるため、定常的なモニタリングには適していないと考えられます。
本記事では、定常的なモニタリングを行うことを想定し、システムテーブルの内容を参照するために必要な内容を記載しています。

システムテーブルで取得可能な監査ログ内容

以下の表は、システムテーブルを参照することで監査可能な代表的な操作および項目を示しています。

取得対象操作

操作内容

取得可否

スキーマ.テーブル名

列名

備考

ログイン

v_monitor.user_sessions

session_start_timestamp

ログオフ

v_monitor.user_sessions

session_end_timestamp

失敗ログオン

×

vertica.log には記録される

成功DML

v_monitor.query_requests

request

失敗DML

×

vertica.log には記録される

成功DDL

v_monitor.query_requests

request

失敗DDL

×

v_monitor.query_requests

request

構文エラーは記録されないが、テーブル無しエラー等は記録される。vertica.log には記録される

成功SELECT

v_monitor.query_requests

request

失敗SELECT

×

vertica.log には記録される

取得対象項目

取得項目

取得可否

スキーマ.テーブル名

列名

備考

ログイン日時

v_monitor.user_sessions

session_start_timestamp

ログオフ日時

v_monitor.user_sessions

session_end_timestamp

SQL実行日時

v_monitor.query_requests

session_start_timestamp

OSユーザ

×

v_monitor.user_sessions

client_os_user_name

DBユーザ

v_monitor.user_sessions

user_name

マシン

v_monitor.user_sessions

node_name

端末

v_monitor.user_sessions

client_hostname

プログラム

×

v_monitor.user_sessions

client_type

"ADO.NET"、"vsql"、
"JDBC"、"ODBC"の
タイプのみ取得可能

オブジェクト

×

SQL文からオブジェクトを
読み取ることで代替

SQL文

v_monitor.query_requests

request

最大64,000バイト

処理件数

v_monitor.query_profiles

processed_row_count

Vertica監査に有用なシステムテーブル

以下の表は、監査に有用なシステムテーブルと項目を示しています。
「有用度」列は、各項目の監査に対する有用度を示しています。「○」は有用、「△」は補足情報として有用であることを示しています。
以下のシステムーブルについては、基本的にスーパーユーザー以外(dbadmin以外)は、自ユーザーの監査情報しか参照できません。
自ユーザー以外の監査情報も参照したい場合は、pseudosuperuserロールの割当てが必要です。

v_monitor.user_sessionsシステムテーブル(ユーザーセッション履歴)

カラム名

データ型

有用度

説明

authentication_method

varchar(128)

client_hostname

varchar(128)

クライアントホスト名

client_label

varchar(64000)

クライアントラベル。ODBC、JDBCのプロパティで任意文字列を埋め込める
アプリ名称等を埋め込むことでアプリ処理 or その他処理の見分けが可能

client_os

varchar(128)

client_os_user_name

varchar(128)

クライアントのOSユーザ名

client_pid

int

クライアントのプロセスID。Vertica以外の監査ログと突き合わせできる可能性がある

client_type

varchar(128)

クライアントタイプ

client_version

varchar(128)

is_active

boolean

node_name

varchar(128)

SQL実行サーバー名

runtime_priority

varchar(128)

session_end_timestamp

timestamptz

セッション終了時刻。NULLの場合はセッション継続中であることを示す

session_id

varchar(128)

他システムテーブルとの結合キーに使用

session_start_timestamp

timestamptz

セッション開始時刻

ssl_state

varchar(128)

statement_id

int

transaction_id

int

user_name

varchar(128)

DBユーザー名

v_monitor.query_requestsシステムテーブル(ユーザーが発行したクエリ・リクエスト)

カラム名

データ型

有用度

説明

end_timestamp

timestamptz

SQL実行終了時刻。NULLの場合はSQL実行中であることを示す

error_count

int

is_executing

boolean

memory_acquired_mb

float

node_name

varchar(128)

request

varchar(64000)

SQL文

request_duration_ms

int

SQL実行経過時間(ミリ秒)。実行中の場合は現在までの経過時間を示す

request_id

int

request_label

varchar(128)

request_type

varchar(128)

search_path

varchar(64000)

session_id

varchar(128)

他システムテーブルとの結合キーに使用

start_timestamp

timestamptz

SQL実行開始時刻

statement_id

int

他システムテーブルとの結合キーに使用

success

boolean

実行されたSQLの成否。実行中断したSQLは失敗で記録。構文エラーは記録されない

transaction_id

int

他システムテーブルとの結合キーに使用

user_name

varchar(128)

query_profilesシステムテーブル(クエリ・プロファイル)

カラム名

データ型

有用度

説明

error_code

int

identifier

varchar(128)

is_executing

boolean

node_name

varchar(128)

processed_row_count

int

SQL処理件数。実行中断したSQLは0件で記録される

query

varchar(64000)

query_duration_us

numeric(36,6)

query_search_path

varchar(64000)

query_start

varchar(63)

query_start_epoch

int

query_type

varchar(128)

SQLのタイプ(DDL,LOAD,QUERY,SET,TRANSACTION,UTILITYの6種類の存在を確認)

reserved_extra_memory

int

schema_name

varchar(128)

session_id

varchar(128)

他システムテーブルとの結合キーに使用

statement_id

int

他システムテーブルとの結合キーに使用

table_name

varchar(128)

transaction_id

int

他システムテーブルとの結合キーに使用

user_name

varchar(128)

Vertica監査用SQL(サンプル)

上記のテーブルを利用した監査用のSQLのサンプルが以下記事に記載しております。

実行されたSQLをシステムテーブルで確認する方法
https://www.ashisuto.co.jp/cm/analytics-database/executed-query.html

監査ログ取得の留意事項

システムテーブルを参照して監査を行う場合、下記2点に留意する必要があります。

1. システムテーブル参照に伴うオーバーヘッド
2. システムテーブル・データの保存サイズや保存期間

システムテーブル参照に伴うオーバーヘッドについて

システムテーブル参照のオーバーヘッドは、サーバースペックやデータ参照量に依存します。
システムへの影響を考慮する場合は、事前にテストすることを推奨します。

システムテーブル・データの保存サイズや保存期間

システムテーブルの情報は、データコレクター機能によって収集・管理されます。
データコレクター機能については以下の記事をご参照ください。

システムテーブルの保存条件について
https://www.ashisuto.co.jp/cm/analytics-database/datacollector.html

検証バージョン

この記事の内容はVertica 9.2で確認しています。

更新履歴

2019/07/18 本記事を公開