如何实施cassandra数据的审核? 我正在寻找一个开源选项。
cassandra的任何功能是否有助于审核?
我可以使用触发器将记录记录到表中吗?我遵循了Triggers示例,当另一个表上发生更新时,能够将记录插入到triggers_log
表中。
但不确定如何捕获触发更新的user/session
详细信息。我来自CQLSH
终端,创建users
和trigger_log table
create table AUDIT_LOG ( transaction_id int, entries map<text, text>, --> to capture the modifications done to the tables user varchar, //authenticated user time timestamp, primary key(transaction_id));
CREATE TABLE users ( user_id int PRIMARY KEY, fname text, lname text );
使用CREATE TRIGGER
cqlsh
语法在用户表上定义触发器
到目前为止的代码。
public class AuditTrigger implements ITrigger {
@Override
public Collection<RowMutation> augment(ByteBuffer key, ColumnFamily update) {
List<RowMutation> mutations = new ArrayList<RowMutation>();
for (Column column : update) {
if (column.value().remaining() > 0) {
RowMutation mutation = new RowMutation("mykeyspace", key);
//What do I need here to capture the updates to users
//table and log the updates into various columns of audit_log
mutations.add(mutation);
}
}
return mutations;
}
}
如果触发器不是正确的方法(任何弹簧AOP方法?),请建议替代方案。我也试过Cassandra vs logging activity解决方案,但它不会打印执行sql,经过身份验证的用户信息。
答案 0 :(得分:7)
不幸的是,此时,触发器不能用作您需要的ClientState,它包含用户信息并且不会传递给触发器。
我可以想到两种方法。(您需要查看Cassandra代码库以更好地理解这些方法)
一种方法是AOP,即添加AOP并使用Agent启动Cassandra的代理。需要切入点的类是QueryProcessor#processStatement方法。对此方法的调用将使用预准备语句和QueryState作为参数。从PreparedStatement中,您可以识别用户的意图。 QueryState.getClientState将返回用户信息所在的ClientState。
另一种方法涉及自定义身份验证器和授权者。这里描述了在Cassandra中配置它。
您可以让自定义授权程序扩展AllowAllAuthorizer(这将禁用权限缓存)。每当您在Authorizer上获得授权请求时,您都可以记录它。这种方法的缺点是你不知道用户打算对表做什么,只是他要求对它进行一些授权。权限是包含他想要对表执行的操作的权限,但不会传递给授权人。
如果您决定使用其中任何一种方法,如果您需要更多详细信息,可以自由发布后续内容。
答案 1 :(得分:1)
以下是执行Cassandra审核日志的示例:https://github.com/xiaodong-xie/cassandra-audit
该解决方案基于名为&#34; cassandra.custom_query_handler_class&#34;的系统属性。它包含用户身份验证部分,假设使用AWS System Manager参数存储和LDAP服务器。
顺便说一句,Cassandra v4.x(https://issues.apache.org/jira/browse/CASSANDRA-12151)
似乎支持审计日志答案 2 :(得分:0)
ecAudit是一个Apache Cassandra插件,它完全支持Cassandra 3.0.x和3.11.x中的审核日志。
https://github.com/Ericsson/ecaudit
它将为身份验证尝试和CQL查询创建审核记录。它使您可以定义过滤器,以根据角色/键空间/表/查询限制审计日志。