監査ロギングの構成

DataStax Enterpriseの監査ロギングを構成するための手順。

監査ロギングを有効にし、「DataStax Enterpriseのデータ監査の有効化」の説明に従って、ロガーをSLF4JAuditWriterに出力するように設定した場合は、logback.xmlのオプションを設定してロガーを構成できます。

DataStax Enterpriseは、監査ログをlogback.xml構成ファイルで指定されているディレクトリーに配置します。ログ・ファイルが構成されているサイズしきい値に達すると、ロールオーバーされ、ログ・ファイル名が変更されます。ファイル名には、maxBackupIndexプロパティで決められた数字のサフィックスが含まれます。

logback.xmlファイルの場所は、インストールのタイプによって異なります。

パッケージ・インストールInstaller-Servicesインストール

/etc/dse/cassandra/logback.xml

tarボール・インストールInstaller-No Servicesインストール

installation_location/resources/cassandra/conf/logback.xml

ログ・ファイル内の機密データ

監査はファイル・システム内のテキスト・ファイルを使用して構成されるため、ファイルはOSレベルのセキュリティ侵害に対して脆弱です。この問題に対処するには、DataStax Enterpriseのumask設定を変更し、監査ファイルでパーミッションをデフォルトの600に変更します。他のツールを使用してデータを確認する場合は、この設定を変更すると読み取り問題が発生する可能性があることに注意してください。あるいは、監査ファイルをVormetricなどOSレベルの暗号化されたファイル・システムに格納することもできます。

ヒント: トラブルシューティング目的でログ・ファイルを共有する前に機密データを編集します。
たとえば、以下の場合に編集します。
  • テーブルのパスワードという名前のカラムにパスワードが挿入されている。
  • かつ、監査ログにDML(挿入、更新、削除、およびその他のデータ操作言語イベント)を含めるように、dse.yamlの監査ロギング・オプションがincluded_categories: DML, ...に設定されている。
  • パスワードがログに表示されないように、目的のカラムの値を編集します。以下の構文を使用して、logback.xmlファイルでその文字列を置き換えます。
    %-5level [%thread] %date{ISO8601} %X{service} %F:%L - %replace(%msg){"password='.*'", "password='xxxxx'"}%n
    
置き換えのレイアウト・オプションでは、正規表現を使用して、最終的にログ・ファイルに表示される前にデータを変更します。置き換えフィルターの使用方法の詳細については、ログバックのドキュメントを参照してください。

データ監査の構成

ログに記録する監査イベントのカテゴリー(管理、認証、DML、DDL、DCL、およびクエリー操作)と、特定のキースペースに対する操作を監査ロギングで省略するかどうかを構成できます。

監査ロガーはINFOレベルでログに記録するため、DataAuditロガーはlogback.xmlでINFOレベル以下で構成されている必要があります。ロガーをWARNなどの高いレベルに設定すると、ログ・イベントが記録されるのを防ぐことはできますが、データ監査は完全には無効になりません。通常の処理で発生する程度のオーバーヘッドが発生します。

手順

  1. テキスト・エディターでlogback.xmlファイルを開きます。
  2. データ監査を構成するには、デフォルト設定を受け入れるか、プロパティを変更します。
    <!--audit log-->  
    <appender name="SLF4JAuditWriterAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${cassandra.logdir}/audit/audit.log</file> <!-- logfile location -->
        <encoder>
          <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern> <!-- the layout pattern used to format log entries -->
          <immediateFlush>true</immediateFlush> 
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <fileNamePattern>${cassandra.logdir}/audit/audit.log.%i.zip</fileNamePattern>
          <minIndex>1</minIndex>
          <maxIndex>20</maxIndex> <!-- max number of archived logs that are kept -->
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <maxFileSize>200MB</maxFileSize> <!-- The size of the logfile that triggers a switch to a new logfile, and the current one archived -->
        </triggeringPolicy>
      </appender>
    <logger name="SLF4JAuditWriter" level="INFO" additivity="false">
        <appender-ref ref="SLF4JAuditWriterAppender"/>
      </logger>
  3. ノードを再起動し、ログ内の変更内容を確認します。