監査証跡¶
更新プログラム 8.0u20240306 以降は、Scheduler のサーバーメタデータに対する変更とアクションの監査証跡を保持できます。更新プログラム 8.0u20240926 以降では、Solution Manager でも、この機能を使用できます。
これにより、いつ誰がどのエレメントに対して何を実行し、その結果はどうだったかという質問に答えます。
これらの変更は、構成に応じて、JSON ファイルやデータベース (Solution Manager では使用できません) に保存できます。どちらのケースでも Log4j サポートを使用するので、この機能を有効にする場合はログの構成を伴います (後述)。
Virtual DataPort の監査証跡を保持するには、Denodo Monitor によって生成されるログを使用します。
監査情報¶
監査情報に含まれるフィールドを以下に示します。
StartTime
: 要求されたアクションの開始日時。EndTime
: 要求されたアクションの終了日時。Elapsed Milliseconds
: アクションの所要時間 (ミリ秒単位)。SessionId
: ユーザーのセッションの内部 ID。ClientIP
: 最終クライアント (HTTP リクエストを送信したクライアント。通常はクライアントブラウザが存在するマシン) の IP アドレス。IntermediateClientIP
: (Scheduler の場合のみ) Scheduler Administration Tool が動作している IP アドレス。serverIP
: サーバーが動作している IP アドレス。UserName
: アクションを実行したユーザーのログイン名。UserAuthenticationMethod
: ユーザーがログインするために使用した認証方法 (LOCAL / REMOTE / SSO / KERBEROS
)。UserBatchMode
: (Scheduler の場合のみ) ユーザーがアクションをバッチモードで実行したかどうか。UserPermissions
: アクションを実行したユーザーの権限。RequestType
: メソッドによって実行されたオペレーションのタイプ (START / STOP / ENABLE / DISABLE / CREATE / READ / UPDATE / DELETE
など)。ElementTypes
: リクエストが行われたエレメントタイプ (Job / DataSource / Project / ServerInfo
など)。AffectedElements
: 監査されるメソッドの実行の影響を受けるエレメントに関する情報 (ID と名前)。Endpoint
: 実行されたアクション。その名前とパラメータによるメソッドシグネチャを含みます。Arguments
: 実行されたメソッドの入力引数。State
:アクションのステータス (OK / ERROR / WARNING
)。Warnings
: (一括メソッドの場合のみ) 実行できなかったエレメントに関する情報が示されます。適用されるのはState=WARNING
の場合のみです。Thread Name
:ログイベントを生成したスレッドの名前。ThreadID
: ログイベントを生成したスレッドの ID。LogLevel
: イベントが生成されたログレベル。
機密情報のマスク¶
デフォルトでは、イベントを監査する際、機密情報または環境に依存する情報はマスクされます。
以下のプロパティを使用して、マスクする必要がある情報を制御できます。
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 で監査を構成する方法¶
Scheduler で監査を有効にするには、以下の手順に従う必要があります。
<DENODO_HOME>/conf/scheduler/log4j2.xml
でロガーを有効にします。<Configuration>
を<Configuration packages="com.denodo.util.audit.log">
で置き換えます。アペンダーを構成します。アペンダー (
<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=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
を実行します。
Solution Manager で監査を構成する方法¶
Solution Manager で監査を有効にするには、以下の手順に従う必要があります。
<DENODO_HOME>/conf/solution-manager/log4j2.xml
でロガーを有効にします。<Configuration>
を<Configuration packages="com.denodo.util.audit.log">
で置き換えます。アペンダーを構成します。アペンダー (
<Appenders>
セクションの内容) は、JSON ファイルに定義できます (現在のところ、JDBC アペンダーはサポートされていません)。JSON へのアペンダー:
<RollingFile name="REQUESTOUT-JSON" fileName="<DENODO_HOME>/logs/solution-manager/solution-manager-requests.json" filePattern="<DENODO_HOME>/logs/solution-manager/solution-manager-requests.json.%i"> <JsonTemplateLayout eventTemplateUri="classpath:DenodoJsonLayout.json" stackTraceEnabled="false" charset="UTF-8" /> <SizeBasedTriggeringPolicy size="10 MB" /> <DefaultRolloverStrategy max="7" /> </RollingFile>
<DENODO_HOME>
を正しく置き換えます。
ロガーを追加します (ファイルへのアペンダーを使用)。
<Logger name="EventLogger" level="INFO" additivity="false"> <AppenderRef ref="REQUESTOUT-JSON" /> </Logger>
- ログレベルに応じて以下を設定します。
INFO
: デフォルトレベル。主に、メタデータを変更 (作成、更新、削除など) するアクション (たとえば環境の作成) を記録します。DEBUG
:INFO
で登録される情報のほか、getter (たとえば環境の取得) が記録されます。TRACE
:DEBUG
で登録される情報のほか、内部メタデータ呼び出しおよび簡単な getter が記録されます。API のより多くのメソッドを監査することに加えて、それぞれについてより多くの情報を含みます (「 監査情報 」を参照)。
UserAuthenticationMethod
UserPermissions
<DENODO_HOME>/conf/solution-manager/SMConfigurationParameters.properties
で監査モードを有効にします。com.denodo.solutionmanager.audit.enabled=true