Cassandraドキュメント

バージョン

プレリリース版のドキュメントを表示しています。

監査ログ

Cassandraの監査ログは、Cassandraノードへの認証(成功/失敗したログイン)と同様に、すべての着信CQLコマンドリクエストをログに記録します。現在、2つの実装が提供されています。カスタムロガーを実装し、`cassandra.yaml`ファイルのパラメータとしてクラス名で挿入できます。

  • `BinAuditLogger`:バイナリ形式でイベントをファイルに記録する効率的な方法(パフォーマンスのためにコミュニティ推奨のロガー)

  • `FileAuditLogger`:slf4jロガーを使用して`audit/audit.log`ファイルにイベントを記録します

監査ログは何をキャプチャするか

監査ログは、以下のイベントをキャプチャします

  • 成功したログイン試行と失敗したログイン試行

  • ネイティブCQLプロトコルを介して実行されたすべてのデータベースコマンド(試行または正常に実行された)

制限事項

プリペアドステートメントを実行すると、準備呼び出しでクライアントによって提供されたクエリが、実行タイムスタンプと他のすべての属性(下記参照)とともにログに記録されます。プリペアドステートメントの実行にバインドされた実際の値は、監査ログに表示されません。

監査ログは何を記録するか

各監査ログ実装は、以下の属性にアクセスできます。デフォルトのテキストベースのロガーの場合、これらのフィールドはパイプで連結されて最終的なメッセージが生成されます。

  • `user`:ユーザー名(利用可能な場合)

  • `host`:コマンドが実行されているホストIP

  • `source ip address`:リクエストが開始されたソースIPアドレス

  • `source port`:リクエストが開始されたソースポート番号

  • `timestamp`:UNIXタイムスタンプ

  • `type`:リクエストのタイプ(SELECT、INSERTなど)

  • `category` - リクエストのカテゴリ(DDL、DMLなど)

  • `keyspace` - リクエストの実行対象となるキースペース(該当する場合)

  • `scope` - テーブル/集計名/関数名/トリガー名など、該当する場合

  • `operation` - 実行されているCQLコマンド

設定方法

監査ログは、`cassandra.yaml`ファイルを使用して設定できます。1つのノードで監査ログを使用するには、そのファイルを編集するか、`nodetool`を使用して有効化および設定します。

AuditLogのcassandra.yaml設定

以下のオプションがサポートされています

  • `enabled`:このオプションは、監査ログを有効/無効にします

  • `logger`:ロガー/カスタムロガーのクラス名。

  • `audit_logs_dir`:監査ログディレクトリの場所。設定されていない場合、デフォルトは<span class="title-ref">cassandra.logdir.audit</span>または<span class="title-ref">cassandra.logdir</span>/audit/です
    /audit/

  • `included_keyspaces`:監査ログに含めるキースペースのコンマ区切りリスト。デフォルトではすべてのキースペースが含まれます

  • `excluded_keyspaces`:監査ログから除外するキースペースのコンマ区切りリスト。デフォルトでは、<span class="title-ref">system</span>、<span class="title-ref">system_schema</span>、<span class="title-ref">system_virtual_schema</span>を除くキースペースは除外されません

  • `included_categories`:監査ログに含める監査ログカテゴリのコンマ区切りリスト。デフォルトではすべてのカテゴリが含まれます

  • `excluded_categories`:監査ログから除外する監査ログカテゴリのコンマ区切りリスト。デフォルトではカテゴリは除外されません

  • `included_users`:監査ログに含めるユーザーのコンマ区切りリスト。デフォルトではすべてのユーザーが含まれます

  • `excluded_users`:監査ログから除外するユーザーのコンマ区切りリスト。デフォルトではユーザーは除外されません

使用可能なカテゴリのリスト:QUERY、DML、DDL、DCL、OTHER、AUTH、ERROR、PREPARE

AuditLogを有効にするためのNodeToolコマンド

`nodetool enableauditlog`コマンドは、`cassandra.yaml`ファイルのデフォルトでAuditLogを有効にします。これらのデフォルトは、このnodetoolコマンドでオプションを使用してオーバーライドできます。

nodetool enableauditlog

オプション

--excluded-categories

監査ログから除外する監査ログカテゴリのコンマ区切りリスト。設定しない場合、cassandra.yamlの値が使用されます

--excluded-keyspaces

監査ログから除外するキースペースのコンマ区切りリスト。設定しない場合、cassandra.yamlの値が使用されます。<span class="title-ref">system</span>、<span class="title-ref">system_schema</span>、<span class="title-ref">system_virtual_schema</span>はデフォルトで除外されることに注意してください。nodetoolを介してこのオプションを上書きする場合は、監査ログにこれらのキースペースを含めたくない場合は、これらのキースペースを必ず追加してください

--excluded-users

監査ログから除外するユーザーのコンマ区切りリスト。設定しない場合、cassandra.yamlの値が使用されます

--included-categories

監査ログに含める監査ログカテゴリのコンマ区切りリスト。設定しない場合、cassandra.yamlの値が使用されます

--included-keyspaces

監査ログに含めるキースペースのコンマ区切りリスト。設定しない場合、cassandra.yamlの値が使用されます

--included-users

監査ログに含めるユーザーのコンマ区切りリスト。設定しない場合、cassandra.yamlの値が使用されます

--logger

AuditLoggingに使用するロガー名。デフォルトはBinAuditLogger。設定しない場合、cassandra.yamlの値が使用されます

AuditLogを無効にするためのNodeToolコマンド

`nodetool disableauditlog`コマンドは、AuditLogを無効にします。

nodetool disableuditlog

AuditLogフィルタをリロードするためのNodeToolコマンド

`nodetool enableauditlog`コマンドを使用して、デフォルトまたは以前の`loggername`と更新されたフィルタを使用してauditlogフィルタをリロードできます

nodetool enableauditlog --loggername <Default/ existing loggerName> --included-keyspaces <New Filter values>

監査ログファイルの内容を表示する

`auditlogviewer`は、監査binlogファイルの内容を人間が読めるテキスト形式で表示するために使用されます。

auditlogviewer <path1> [<path2>...<pathN>] [options]

オプション

-f,--follow
ログの最後に達したら、無期限に続行します

より多くのレコードを待っています

-r,--roll_cycle
ログファイルがロールされた頻度。必要になる場合があります

Chronicleがファイル名を正しく解析するために必要です。(MINUTELY、HOURLY、DAILY)。デフォルトはHOURLYです。

-h,--help

このヘルプメッセージを表示する

たとえば、監査ログファイルの内容をコンソールにダンプするには

auditlogviewer /logs/cassandra/audit

結果は

LogMessage: user:anonymous|host:localhost/X.X.X.X|source:/X.X.X.X|port:60878|timestamp:1521158923615|type:USE_KS|category:DDL|ks:dev1|operation:USE "dev1"

BinAuditLoggerの設定

AuditLoggingでロガーとして`BinAuditLogger`を使用するには、`cassandra.yaml`ファイルの`audit_logging_options`セクションでロガーを`BinAuditLogger`に設定します。`BinAuditLogger`は、`cassandra.yaml`の高度なオプションを使用してさらに設定できます。

BinAuditLoggerの高度なオプション

block

監査ログが遅れた場合にブロックするか、監査ログレコードをドロップするかを示します。デフォルトは`true`に設定されているため、監査ログレコードは失われません

max_queue_weight

ログレコードをブロックまたはドロップする前に、監査ログファイルに書き込まれるのを待機しているレコードのメモリ内キューの最大ウェイト。デフォルトは`256 * 1024 * 1024`に設定されています

max_log_size

ディスク上に保持するロールファイルの最大サイズ。このサイズを超えると、最も古いファイルが削除されます。デフォルトは 16L * 1024L * 1024L * 1024L です。

ロールサイクル

監査ログセグメントをロールする頻度。これにより、ログの再利用が可能になります。利用可能なオプションは、MINUTELY、HOURLY、DAILY、LARGE_DAILY、XLARGE_DAILY、HUGE_DAILY です。その他のオプションについては、net.openhft.chronicle.queue.RollCycles を参照してください。デフォルトは "HOURLY" です。

FileAuditLogger の設定

AuditLogging でロガーとして FileAuditLogger を使用するには、cassandra.yaml ファイルにクラス名を設定し、監査ログイベントが system.log ではなく別のログファイルに流れるように設定します。

<!-- Audit Logging (FileAuditLogger) rolling file appender to audit.log -->
<appender name="AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>${cassandra.logdir}/audit/audit.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <!-- rollover daily -->
    <fileNamePattern>${cassandra.logdir}/audit/audit.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
    <!-- each file should be at most 50MB, keep 30 days worth of history, but at most 5GB -->
    <maxFileSize>50MB</maxFileSize>
    <maxHistory>30</maxHistory>
    <totalSizeCap>5GB</totalSizeCap>
  </rollingPolicy>
  <encoder>
    <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
  </encoder>
</appender>

<!-- Audit Logging additivity to redirect audt logging events to audit/audit.log -->
<logger name="org.apache.cassandra.audit" additivity="false" level="INFO">
    <appender-ref ref="AUDIT"/>
</logger>