Apache Cassandra 即将发布的 4.0 版本 包括新功能,以帮助组织监控数据库中的用户活动。这些功能提供了一套强大的企业级 审计能力,可以帮助公司满足其萨班斯-奥克斯利法案 (SOX)、支付卡行业 (PCI) 以及其他监管和安全要求。
Cassandra 的审计功能使操作员能够审计日志条目——每次 DML、DDL 和 DCL 更改——并将条目记录并保存到二进制文件或用户可配置的源。审计可以配置在特定的键空间、用户或命令类别上。默认情况下,这些条目以 BinLog 格式保存到本地磁盘,并且可以使用 Cassandra 的 fqltool 和 auditlogviewer 工具查看。
日志记录
Cassandra 新的、灵活的审计工具提供了一系列功能,从审计特定操作到记录集群的完整活动以及跨集群跟踪诊断事件。Cassandra 4.0 中添加了三个核心功能
- 使用 BinAuditLogger (BAL) 进行审计日志记录: 专为审计、安全和合规性用例而设计
- 全查询日志记录 (FQL): 侧重于测试、基准测试和生产工作负载调查
- 诊断事件: 提供了一种 Cassandra 查询语言 (CQL) 原生方法,用于订阅 BAL 和 FQL 功能使用的通用日志记录框架内生成的事件
审计日志记录 (BAL)
在内部,BAL 和 FQL 由 Apache Cassandra 的 AuditLogManager 管理。两者都实现了名为 IAuditLogger 的通用扩展点,并且都内置于 Apache Cassandra 中。FQL 和 BAL 都利用相同的 BinLog 格式,共享一个通用实现。
审计日志记录本身就是数据库中执行的事件和操作的完整“信息流”。管理员可以选择在生成的审计跟踪中包含或排除特定类别、用户和键空间。
默认情况下,格式和输出是基于文本的且人类可读的。
全查询日志记录 (FQL)
FQL 类似于审计日志记录,但旨在捕获集群工作负载的代表性和可重复样本,并通过某些标准进行过滤,以确保输出可管理。
两者都可以通过 nodetool 启用,并配置为 Cassandra.yaml 的一部分,可以选择在操作成功返回到最终客户端之前确保生成并持久化审计事件。
FQL 旨在与 fqltool 一起使用,该工具可以查看、重放和操作捕获的查询流。
诊断事件
如果用户希望以这种方式使用审计记录,诊断事件允许客户端订阅集群事件以及与 BAL 和 FQL 相同的通用扩展点。诊断事件将事件推送到客户端,您可以通过此系统订阅审计事件。
您可以根据您的需求配置任意数量的这三种类型。
审计日志记录与 CDC 的区别
Cassandra 的 变更数据捕获 (CDC) 机制在表上已支持一段时间;但是,该实现一直很细致且复杂,使其更难以使用。本质上,CDC 提供了一个本地节点提交日志的索引,其中包含启用 CDC 的表的数据。CDC 仅捕获写入磁盘的瞬时数据,使消费者难以摄取这些提交日志、解释格式以及跨集群合并数据。
另一方面,Cassandra 的审计日志记录功能可以记录读取、写入、登录尝试和模式更改,并可以提供生成事件的 CQL。实际上,可以利用这些功能中的任何一个来构建适当的 CDC 流。考虑到更精细的控制和用于读取日志的专用工具,使用 IAuditLogger 接口比使用 CDC 文件更容易。
预期结果
在您的 cassandra.yaml 文件中启用审计日志记录很容易。在性能方面,在启用该功能之前没有任何影响;一旦启用,您可能会看到(混合)工作负载吞吐量和 P99 延迟略微下降 10% 到 15%。但是,Apache Cassandra 4.0 中的许多其他性能改进——特别是来自新的节点间通信模块——预计将抵消其中的一部分。
1 条评论