USER MANUALS


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: ユーザーがログインするために使用した認証方法(LOCALREMOTESSOKERBEROSNO_AUTHENTICATIONACCESS_TOKEN)。

  • userBatchedMode: (Scheduler の場合のみ) ユーザーがアクションをバッチモードで実行したかどうか。

  • userPermissions: アクションを実行したユーザーの権限。

  • requestType: メソッドによって実行されたオペレーションのタイプ。

    • Scheduler は`CREATE` 、 READUPDATEDELETESTARTSTOPENABLEDISABLE などのリクエストタイプを考慮します。

    • Data Catalog は`CREATE` 、 READUPDATEDELETESYNCHRONIZEIMPORTASSIGNCANCEL などのリクエストタイプを考慮します。

  • elementTypes: リクエストで使用されたエレメントタイプ。

    • Scheduler は`Job` 、 DataSourceProjectServerInfo などのエレメントタイプを考慮します。

    • Data Catalog は`DATABASE` 、 VIEWWEB_SERVICETAGCATEGORYPROPERTYPROPERTY_GROUPASSOCIATIONFOLDER などのエレメントタイプを考慮します。

  • affectedElements: 監査されるメソッドの実行の影響を受けるエレメントに関する情報 (ID と名前)。

  • endpoint: 実行されたアクション。

    • Scheduler では、その名前とパラメータによるメソッドシグネチャを含みます。

    • Data Catalog では、リクエストされた URI のパスを含みます。

  • arguments: 実行されたメソッドの入力引数。

  • state:アクションのステータス (OKERRORWARNING)。

  • warnings: (Scheduler の場合のみ) 一括メソッドで実行できなかったエレメントに関する情報。適用されるのは state = WARNING の場合のみです。

  • threadName: ログイベントを生成したスレッドの名前。

  • threadId: ログイベントを生成したスレッドの ID。

  • logLevel: イベントが生成されたログレベル。

Scheduler で監査を構成する方法

Scheduler で監査を有効にするには、以下の手順に従う必要があります。

  1. <DENODO_HOME>/conf/scheduler/log4j2.xml でロガーを有効にします。

    1. アペンダーを構成します。アペンダー (<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>
        
    2. ロガーを追加します (前の手順に応じてファイルまたはデータベースへのアペンダーを使用)。

      <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

  2. データベースへのアペンダーが構成されている場合のみ、以下の手順を実行する必要があります。

    1. 監査データベースを構成します。

      • 監査情報を保存するターゲットデータベースを構成できます。監査で使用するデータベースは、デフォルトではメタデータと同じです。

      • 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
        
    2. 前の手順で設定した監査データベースに、監査情報を保存するテーブル (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 でロガーをコメント解除します。

  1. アペンダーを構成します。アペンダー (<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>
      
  2. ロガーをコメント解除します (前の手順に応じてファイルまたはデータベースへのアペンダーを使用)。

    <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

  3. データベースへのアペンダーが構成されている場合のみ、以下の手順を実行する必要があります。

    1. 監査データベースを構成します。監査情報を保存するターゲットデータベースを指定し、その設定を <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 での外部データベースの使用 」を参照してください。

    2. 前の手順で設定した監査データベースに、監査情報を保存するテーブル (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

Add feedback