java 审计功能_audit: Auditor 是一个一个基于 Java 语言实现的通用的 Audit (审计)框架...

Audit是一个基于Java的审计框架,适用于快速接入4A审计,支持多种操作定义和资源获取方式,包括注解配置和YAML配置。该框架兼容JDK6+,可用于Java和Web应用。通过简单的四步配置,即可为SpringBoot应用添加审计功能,审计日志可自定义写入数据库。
摘要由CSDN通过智能技术生成

audit

一个通用的 Audit (审计)框架。如果要接入4A审计时,特别方便哟,同时也高度定制化。

maven-v2.2.7-green.svg

Features

操作定义支持多种方式

@Operation 注解方式

在 yaml 配置文件配置方法全名的方式

在 yaml 配置文件配置 URL template 的方式

允许自定义

操作资源获取支持多种方式

在 yaml 配置方法参数名称的方式

支持注解方式

支持List, Map, Entity解析等

支持自定义

支持 JDK6+

支持 Java, Web应用

Example

给一个SpringBoot应用快速加上审计功能,也可以直接去参考 audit-examples-springmvcdemo

第一步:引入相关Jar包

com.github.fangjinuo.audit

audit-spring-boot-starter

${audit.version}

第二步:在application.yml中配置审计功能

audit:

enabled: true # 开关

async-mode: false # 异步模式执行,还是同步模式执行,对于 web应用目前暂时强制采用同步模式

topics: [DEFAULT, LOGIN_LOGOUT]

topic-configs:

- name: DEFAULT

ring-buffer-size: 1024

producer-type: MULTI

- name: LOGIN_LOGOUT # topic的name

ring-buffer-size: 512 # topic的 ring buffer size ,强制要求是 pow(2)

producer-type: SINGLE # 生产者是单线程,还是多线程,可选值是 SINGLE,MULTI

http-interceptor-patterns: # Spring MVC HandlerInterceptor的拦截 pathPatterns

- /consumers/**

- /users/**

advisor-pointcut:

expression: execution(public * com.jn.audit.examples.springmvcdemo.common.controller.*Controller.*(..))

第三步:设置操作定义

参考 audit-examples-springmvcdemo 下的 operation.yml文件

第四步:在application.yml中配置定义文件位置

operation:

definition: # 操作定义

location: classpath:/operation.yml # 目前只内置了 yml风格的配置文件

reload-interval-in-seconds: 60 # 如果值 >0 则会定时的重新加载,在开发环境下有很有用

只需上述4步,然后访问应用就会有相应的日志产生。

如果想把审计日志写入数据库,或者需要自定义审计日志消费者,只需要实现 com.jn.audit.mq.Consumer接口并订阅响应的topic即可。

可以参考:audit-examples/audit-examples-springmvcdemo 中的AuditConfig.java

import com.jn.audit.core.Auditor;

import com.jn.audit.examples.springmvcdemo.service.DbService;

import com.jn.audit.mq.MessageTopicDispatcher;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Configuration;

@Configuration

public class AuditConfig {

private DbService dbService;

public DbService getDbService() {

return dbService;

}

/**

* 这是一个自定义的写入数据库的 Consumer

*/

@Autowired

public void setDbService(Auditor auditor, DbService dbService) {

this.dbService = dbService;

MessageTopicDispatcher dispatcher = auditor.getMessageTopicDispatcher();

dispatcher.subscribe("DEFAULT", dbService);

}

}

langx 系列

langx-js:TypeScript, JavaScript tools

langx-java: Java tools ,可以替换guava, apache commons-lang,io, hu-tool等

easyjson: 一个通用的JSON库门面,可以无缝的在各个JSON库之间切换,就像slf4j那样。

sqlhelper: SQL工具套件(通用分页、DDL Dump、SQLParser、URL Parser、批量操作工具等)。

esmvc: ElasticSearch 通用客户端,就像MyBatis Mapper那样顺滑

redisclient: 基于Spring RestTemplate提供的客户端

audit:通用的Java应用审计框架

鸣谢

最后,感谢 Jetbrains 提供免费License,方便了开源项目的发展。

jetbrains.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值