Apache Cassandra 审计日志功能详解与配置指南

Apache Cassandra 审计日志功能详解与配置指南

cassandra Cassandra是一个分布式的NoSQL数据库,主要用于海量数据的存储和访问。它的特点是高可用、可扩展性强、易于部署等。适用于海量数据存储和访问场景。 cassandra 项目地址: https://gitcode.com/gh_mirrors/cassa/cassandra

审计日志概述

Apache Cassandra 的审计日志功能是一项重要的安全特性,它能够记录所有进入节点的 CQL 命令请求以及认证事件(包括成功和失败的登录尝试)。这项功能对于数据库安全监控、合规性审计以及故障排查都具有重要意义。

审计日志实现方式

Cassandra 提供了两种开箱即用的审计日志实现:

  1. BinAuditLogger(二进制日志记录器)

    • 采用高效的二进制格式记录日志
    • 社区推荐的生产环境首选方案,性能优异
    • 适合高吞吐量场景
  2. FileAuditLogger(文件日志记录器)

    • 使用 slf4j 日志框架
    • 将审计事件记录到 audit/audit.log 文件
    • 采用文本格式,便于直接阅读

此外,系统支持自定义日志记录器实现,只需在配置文件中指定自定义类的全限定名即可。

审计日志记录内容

审计日志会捕获以下关键信息:

  1. 认证事件

    • 所有登录尝试(成功和失败)
  2. 数据库操作

    • 通过原生 CQL 协议执行的所有命令
    • 包括尝试执行和成功执行的命令

记录字段详解

每个审计日志条目包含以下详细信息(字段间默认用竖线分隔):

| 字段名 | 描述 | |--------|------| | user | 执行操作的用户名(如可用) | | host | 执行命令的主机IP | | source ip address | 请求来源IP地址 | | source port | 请求来源端口号 | | timestamp | Unix时间戳 | | type | 请求类型(SELECT、INSERT等) | | category | 请求类别(DDL、DML等) | | keyspace | 目标键空间(如适用) | | scope | 表/聚合/函数/触发器名称等 | | operation | 执行的CQL命令 |

使用限制

需要注意的是,对于预编译语句(prepared statements),审计日志只会记录客户端在准备调用时提供的查询语句,而不会记录执行时绑定的实际参数值。这是当前实现的一个已知限制。

配置审计日志

通过配置文件配置

cassandra.yaml 中可配置以下审计日志选项:

audit_logging_options:
  enabled: true/false  # 启用/禁用审计日志
  logger: BinAuditLogger  # 日志记录器类名
  audit_logs_dir: /path/to/logs  # 日志目录
  included_keyspaces: ks1,ks2  # 包含的键空间列表
  excluded_keyspaces: ks3,ks4  # 排除的键空间列表
  included_categories: DDL,DML  # 包含的类别列表
  excluded_categories: QUERY  # 排除的类别列表
  included_users: user1,user2  # 包含的用户列表
  excluded_users: user3  # 排除的用户列表

可用类别包括:QUERY、DML、DDL、DCL、OTHER、AUTH、ERROR、PREPARE。

通过命令行工具配置

Cassandra 提供了 nodetool 命令来动态管理审计日志:

  1. 启用审计日志

    nodetool enableauditlog [--logger BinAuditLogger] [--included-keyspaces ks1,ks2] ...
    
  2. 禁用审计日志

    nodetool disableauditlog
    
  3. 重新加载过滤器

    nodetool enableauditlog --loggername BinAuditLogger --included-keyspaces new_ks
    

查看审计日志

对于二进制格式的日志,需要使用专门的查看工具:

auditlogviewer /path/to/audit/logs [--follow] [--roll_cycle HOURLY]

常用选项:

  • --follow:实时跟踪日志变化
  • --roll_cycle:指定日志滚动周期(MINUTELY, HOURLY, DAILY)

高级配置

BinAuditLogger 高级选项

block: true  # 当队列满时是否阻塞(默认为true,不丢失记录)
max_queue_weight: 268435456  # 内存队列最大权重(字节)
max_log_size: 17179869184  # 日志文件最大保留大小(字节)
roll_cycle: "HOURLY"  # 日志滚动周期

FileAuditLogger 配置

需要在 logback 配置文件中添加专门的 appender:

<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">
    <fileNamePattern>${cassandra.logdir}/audit/audit.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
    <maxFileSize>50MB</maxFileSize>
    <maxHistory>30</maxHistory>
    <totalSizeCap>5GB</totalSizeCap>
  </rollingPolicy>
  <encoder>
    <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %F:%L - %msg%n</pattern>
  </encoder>
</appender>

<logger name="org.apache.cassandra.audit" additivity="false" level="INFO">
  <appender-ref ref="AUDIT"/>
</logger>

最佳实践建议

  1. 生产环境推荐:使用 BinAuditLogger 以获得最佳性能
  2. 安全考虑:定期归档和备份审计日志
  3. 性能调优:根据负载情况调整队列大小和滚动策略
  4. 合规要求:确保审计日志包含所有必要的操作和用户
  5. 存储规划:为审计日志预留足够的磁盘空间

通过合理配置和使用 Cassandra 的审计日志功能,可以有效监控数据库活动,满足合规要求,并为安全事件调查提供可靠依据。

cassandra Cassandra是一个分布式的NoSQL数据库,主要用于海量数据的存储和访问。它的特点是高可用、可扩展性强、易于部署等。适用于海量数据存储和访问场景。 cassandra 项目地址: https://gitcode.com/gh_mirrors/cassa/cassandra

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

资源下载链接为: https://pan.quark.cn/s/00cceecb854d 这个项目名为“mnist-nnet-hls-zynq7020-fpga prj”,是一个机器学习相关的工程,专注于利用高级综合(HLS)技术将针对MNIST数据集设计的神经网络(nnet)实现在Zynq 7020 FPGA平台上,以加速图像识别任务。项目提供的压缩包包含所有相关代码文件,如C/C++源码、HLS接口定义、Vivado HLS项目文件、硬件描述语言代码(Verilog或VHDL)及配置文件等,用户可通过这些代码理解、实现或修改设计流程。 项目标签“mnist-nnet-hls-z”进一步明确了其关注点:MNIST数据集、HLS技术以及Zynq目标平台。MNIST是用于手写数字识别的知名训练数据集;HLS可将高级编程语言转化为硬件描述语言;Zynq 7020是Xilinx的SoC FPGA,融合了ARM处理器可编程逻辑。文件名中提到的“vivado”指的是Xilinx的Vivado设计套件,它是一个用于FPGA设计、实现、仿真和调试的集成开发环境,其中的Vivado HLS工具能够将C、C++或SystemC编写的算法自动转换为硬件描述语言代码。 项目可能的实施步骤如下:首先,对MNIST数据集进行预处理,如归一化、降维等,使其适配神经网络模型输入;其次,构建适用于手写数字识别的神经网络模型,例如卷积神经网络(CNN)或全连接网络(FCN);接着,运用HLS工具将神经网络模型转化为硬件描述,并优化性能资源利用率;然后,在Vivado环境中,将生成的硬件描述代码映射到Zynq 7020的FPGA部分,进行时序分析综合优化;此外,由于Zynq是SoC,包含处理器系统,还需编写控制软件来管理调度FPGA上的硬件加速器,可能涉及OpenCV、OpenCL等库的使用;之后,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸生朋Margot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值