Data Catalog と Scheduler の監査証跡¶
Scheduler と Data Catalog の両方で実行される変更とアクションの監査証跡を保持できます。これにより、いつ誰がどのエレメントに対して何を実行し、その結果はどうだったかという質問に答えます。
これらの変更は、構成に応じて、JSON ファイルやデータベースに保存できます。どちらのケースでも Log4j サポートを使用するので、この機能を有効にする場合はログの構成を伴います (後述)。
Virtual DataPort の監査証跡を保持するには、Denodo Monitor によって生成されるログを使用します。
監査情報¶
監査情報に含まれるフィールドを以下に示します。
startTime
: 要求されたアクションの開始日時。endTime
: 要求されたアクションの終了日時。elapsedTime
: アクションの所要時間 (ミリ秒単位)。sessionID
: ユーザーのセッションの内部 ID。clientIP
: 最終クライアント (HTTP リクエストを送信したクライアント。通常はクライアントブラウザーが存在するマシン) の IP アドレス。intermediateClientIP
: (Scheduler の場合のみ) Scheduler Administration Tool が動作している IP アドレス。serverIP
: サーバーが動作している IP アドレス。userAuthMethod
: ユーザーがログインするために使用した認証方法(LOCAL 、 REMOTE 、 SSO 、 KERBEROS 、 NO_AUTHENTICATION 、 ACCESS_TOKEN)。userBatchedMode
: (Scheduler の場合のみ) ユーザーがアクションをバッチモードで実行したかどうか。userPermissions
: アクションを実行したユーザーの権限。requestType
: メソッドによって実行されたオペレーションのタイプ。Scheduler は`CREATE` 、 READ 、 UPDATE 、 DELETE 、 START 、 STOP 、 ENABLE 、 DISABLE などのリクエストタイプを考慮します。
Data Catalog は`CREATE` 、 READ 、 UPDATE 、 DELETE 、 SYNCHRONIZE 、 IMPORT 、 ASSIGN 、 CANCEL などのリクエストタイプを考慮します。
elementTypes
: リクエストで使用されたエレメントタイプ。Scheduler は`Job` 、 DataSource 、 Project 、 ServerInfo などのエレメントタイプを考慮します。
Data Catalog は`DATABASE` 、 VIEW 、 WEB_SERVICE 、 TAG 、 CATEGORY 、 PROPERTY 、 PROPERTY_GROUP 、 ASSOCIATION 、 FOLDER などのエレメントタイプを考慮します。
affectedElements
: 監査されるメソッドの実行の影響を受けるエレメントに関する情報 (ID と名前)。endpoint
: 実行されたアクション。Scheduler では、その名前とパラメータによるメソッドシグネチャを含みます。
Data Catalog では、リクエストされた URI のパスを含みます。
arguments
: 実行されたメソッドの入力引数。state
:アクションのステータス (OK 、 ERROR 、 WARNING)。warnings
: (Scheduler の場合のみ) 一括メソッドで実行できなかったエレメントに関する情報。適用されるのは state = WARNING の場合のみです。threadName
: ログイベントを生成したスレッドの名前。threadId
: ログイベントを生成したスレッドの ID。logLevel
: イベントが生成されたログレベル。
Scheduler で監査を構成する方法¶
Scheduler で監査を有効にするには、以下の手順に従う必要があります。
<DENODO_HOME>/conf/scheduler/log4j2.xml
でロガーを有効にします。アペンダーを構成します。アペンダー (
<Appenders>
セクションの内容) は、JSON ファイルまたはデータベースに定義できます (少なくともどちらか一方を構成する必要があります)。JSON へのアペンダー:
<RollingFile name="REQUESTOUT-JSON" fileName="<DENODO_HOME>/logs/scheduler/scheduler-requests.json" filePattern="<DENODO_HOME>/logs/scheduler/scheduler-requests.json.%i"> <JsonTemplateLayout eventTemplateUri="classpath:DenodoJsonLayout.json" stackTraceEnabled="false" charset="UTF-8" /> <SizeBasedTriggeringPolicy size="10 MB" /> <DefaultRolloverStrategy max="7" /> </RollingFile>
<DENODO_HOME>
を正しく置き換えます。データベースへのアペンダー:
<JDBC name="REQUESTOUT-DB" tableName="sched_audit_logs" ignoreExceptions="false"> <ConnectionFactory class="com.denodo.scheduler.core.server.quartz.connection.SchedulerPoolingConnectionProvider" method="getAuditDBConnection" /> <AuditDBLayout /> <ColumnMapping name="startTime" type="java.time.ZonedDateTime" /> <ColumnMapping name="endTime" type="java.time.ZonedDateTime" /> <ColumnMapping name="elapsedTime" type="java.lang.Long" /> <ColumnMapping name="sessionID" /> <ColumnMapping name="clientIP" /> <ColumnMapping name="intermediateClientIP" /> <ColumnMapping name="serverIP" /> <ColumnMapping name="userName" /> <ColumnMapping name="userAuthMethod" /> <ColumnMapping name="userBatchedMode" type="java.lang.Boolean" /> <ColumnMapping name="userPermissions" /> <ColumnMapping name="requestType" /> <ColumnMapping name="elementTypes" /> <ColumnMapping name="affectedElements" /> <ColumnMapping name="endpoint" /> <ColumnMapping name="arguments" type="java.sql.Clob" /> <ColumnMapping name="state" /> <ColumnMapping name="warnings" type="java.sql.Clob" /> <ColumnMapping name="threadName" /> <ColumnMapping name="threadId" type="java.lang.Long" /> <ColumnMapping name="logLevel" /> </JDBC>
ロガーを追加します (前の手順に応じてファイルまたはデータベースへのアペンダーを使用)。
<Logger name="EventLogger" level="INFO" additivity="false"> <AppenderRef ref="REQUESTOUT-JSON" /> <AppenderRef ref="REQUESTOUT-DB" /> </Logger>
ログレベルに応じて以下を設定します。
INFO
: デフォルトレベル。主に、メタデータを変更 (作成、更新、削除など) するアクション (たとえばジョブの作成) を記録します。DEBUG
:INFO
で登録される情報に加えて、getter (たとえばジョブの取得) を含みます。TRACE
:DEBUG
で登録される情報に加えて、内部メタデータ呼び出しおよび簡単な getter (たとえば VDP ジョブのメタ構成の取得) を含みます。API のより多くのメソッドを監査することに加えて、それぞれについてより多くの情報を含みます (「 監査情報 」を参照)。
UserAuthenticationMethod
UserBatchMode
UserPermissions
データベースへのアペンダーが構成されている場合のみ、以下の手順を実行する必要があります。
監査データベースを構成します。
監査情報を保存するターゲットデータベースを構成できます。監査で使用するデータベースは、デフォルトではメタデータと同じです。
Scheduler メタデータを保存するのに使用するデータベースとは別のデータベースを使用する場合 (こうすることが強く推奨されます)、
<DENODO_HOME>/conf/scheduler/ConfigurationParameters.properties
で手動でその設定を構成する必要があります。PostgreSQL を使用する場合の監査データベース設定の例¶# Audit DataSource AuditDataSource/driverClassName=org.postgresql.Driver AuditDataSource/url=jdbc:postgresql://auditdb.denodo.com:5432/audit AuditDataSource/user=audit_user AuditDataSource/password.secret=audit_password AuditDataSource/databaseName=PostgreSQL AuditDataSource/useKerberos=false AuditDataSource/classpath=postgresql-12
前の手順で設定した監査データベースに、監査情報を保存するテーブル (
sched_audit_logs
) を作成します。それには、<DENODO_HOME>/scripts/scheduler/sql/<db>
にある SQL スクリプトtables_audit_trail_<db>.sql
を実行します。
注釈
JDBC
アペンダータグのプロパティtableName
を使用して、<schema>.<table_name>
の形式でスキーマとテーブル名の両方を指定できます。例:<JDBC name="REQUESTOUT-DB" tableName="dbo.sched_audit_logs" ignoreExceptions="false">
Data Catalog で監査を構成する方法¶
Data Catalog で監査を有効にするには、以下の手順に従って <DENODO_HOME>/conf/data-catalog/log4j2.xml
でロガーをコメント解除します。
アペンダーを構成します。アペンダー (
<Appenders>
セクションの内容) は、コメント解除するか、JSON ファイルまたはデータベースに定義することができます。少なくともどちらか一方を構成する必要があります。JSON へのアペンダー:
<RollingFile name="REQUESTOUT-JSON" fileName="<DENODO_HOME>/logs/vdp-data-catalog/data-catalog-requests.json" filePattern="<DENODO_HOME>/logs/vdp-data-catalog/data-catalog-requests.json.%i"> <JsonTemplateLayout eventTemplateUri="classpath:DenodoJsonLayout.json" stackTraceEnabled="false" charset="UTF-8"/> <SizeBasedTriggeringPolicy size="10 MB"/> <DefaultRolloverStrategy max="7"/> </RollingFile>
データベースへのアペンダー:
<JDBC name="REQUESTOUT-DB" tableName="data_catalog_audit_logs" ignoreExceptions="false"> <ConnectionFactory class="com.denodo.webapp.datacatalog.business.common.datasource.AuditConnectionProvider" method="getAuditDBConnection"/> <AuditDBLayout/> <ColumnMapping name="startTime" type="java.time.ZonedDateTime"/> <ColumnMapping name="endTime" type="java.time.ZonedDateTime"/> <ColumnMapping name="elapsedTime" type="java.lang.Long"/> <ColumnMapping name="sessionID"/> <ColumnMapping name="clientIP"/> <ColumnMapping name="userName"/> <ColumnMapping name="userAuthMethod"/> <ColumnMapping name="userPermissions"/> <ColumnMapping name="requestType"/> <ColumnMapping name="elementTypes"/> <ColumnMapping name="affectedElements"/> <ColumnMapping name="endpoint"/> <ColumnMapping name="arguments" type="java.sql.Clob"/> <ColumnMapping name="state"/> <ColumnMapping name="threadName"/> <ColumnMapping name="threadId" type="java.lang.Long"/> <ColumnMapping name="logLevel"/> </JDBC>
ロガーをコメント解除します (前の手順に応じてファイルまたはデータベースへのアペンダーを使用)。
<Logger name="EventLogger" level="INFO" additivity="false"> <AppenderRef ref="REQUESTOUT-JSON" /> <AppenderRef ref="REQUESTOUT-DB" /> </Logger>
ログレベルに応じて以下を設定します。
INFO
: デフォルトレベル。Data Catalog がそのパブリック API REST 経由で受信する HTTP リクエストのほとんどが記録されます。DEBUG
:INFO
で記録される情報に加えて、notification/user/unread
またはPing
のように反復的に呼び出される HTTP リクエストが記録されます。API のより多くのメソッドを監査することに加えて、それぞれについてより多くの情報を含みます (「 監査情報 」を参照)。
UserAuthenticationMethod
UserPermissions
データベースへのアペンダーが構成されている場合のみ、以下の手順を実行する必要があります。
監査データベースを構成します。監査情報を保存するターゲットデータベースを指定し、その設定を
<DENODO_HOME>/conf/data-catalog/audit-datasource.properties
で構成します。PostgreSQL を使用する場合の監査データベース設定の例¶# Audit DataSource # Supported types: derby, mysql, oracle, postgresql, sqlserver audit.datasource.type=postgresql audit.datasource.driver-class-name=org.postgresql.Driver audit.datasource.url=jdbc:postgresql://auditdb.denodo.com:5432/audit audit.datasource.user=audit_user audit.datasource.password.secret=audit_password audit.datasource.maxPoolSize=50 audit.datasource.minimumIdle=50 # Validation query. If using JTDS driver for SQL Server this field is mandatory audit.datasource.connectionTestQuery= audit.datasource.connectionTimeout=100000 audit.datasource.kerberos.use-kerberos= audit.datasource.kerberos.userName= audit.datasource.kerberos.password.secret= audit.datasource.kerberos.key-tab-file= audit.datasource.kerberos.credentials-cache-file=
注釈
「 Data Catalog での外部データベースの使用 」を参照してください。
前の手順で設定した監査データベースに、監査情報を保存するテーブル (
data_catalog_audit_logs
) を作成します。それには、<DENODO_HOME>/scripts/data-catalog/sql/audit/<db>
にある SQL スクリプトdata_catalog_tables_audit_trail_<db>.sql
を実行します。
機密情報のマスク¶
デフォルトでは、イベントを監査する際、機密情報または環境に依存する情報はマスクされます。
以下のプロパティを使用して、マスクする必要がある情報を制御できます。
com.denodo.util.audit.config.AuditMaskingConfig.obfuscate.ip
: ユーザーの IP アドレスを読めないように書き換える必要がない場合はfalse
に設定します。com.denodo.util.audit.config.AuditMaskingConfig.obfuscate.user
: ユーザー名を読めないように書き換える必要がない場合はfalse
に設定します。com.denodo.util.audit.config.AuditMaskingConfig.obfuscate.auditMask
: 機密プロパティ (主に環境に依存するサーバー URI、ホスト名、ポートなどのプロパティ) を読めないように書き換える必要がない場合はfalse
に設定します。com.denodo.util.audit.config.AuditMaskingConfig.obfuscate
:true
に設定すると、(他のプロパティの値に関係なく) すべての保護 (読めないように書き換え) を有効にします。false
に設定すると、(他のプロパティの値に関係なく) すべての保護 (読めないように書き換え) を無効にします。設定されない場合、前のプロパティによって保護 (読めないように書き換え) が制御されます。
注釈
パスワードとキータブは、前のプロパティに関係なく、常にマスクされます。
監査情報をマスクする方法を構成するには、以下のファイルでプロパティを構成する必要があります。
Scheduler の場合:
<DENODO_HOME>/conf/scheduler/ConfigurationParameters.properties
Data Catalog の場合:
<DENODO_HOME>/conf/data-catalog/DataCatalogBackend.properties