SpringCloud微服务安全之API审计日志功能实现

SpringCloud微服务安全之API审计日志功能实现

  • 1.审计功能介绍
  • 2.记录的实体类设计
  • 3.保存审计记录到数据库的工具
  • 4.审计功能实现

1.审计功能介绍

在这里插入图片描述
审计日志

  • 定义:谁,在什么时间,干了什么事。
  • 位置:认证之后,授权之前。这样就知道是谁在访问,拒绝掉的访问也能被记录。如果放在认证之前,那么就不知道是谁在访问;如果放在授权之后,就没办法记录被拒绝的访问。
  • 存储:审计日志一定要持久化,记在数据库里或者是文件,放在内存会丢失。
  • 怎么记:请求进来的时候记录一次,请求出去的时候,更新日志。如果只在请求进来的时候记,那么请求的成功与否是不知道的。如果只在请求返回的时候记,那么如果一个请求把你的系统搞挂了,也没有记,是不知道谁搞挂的。
  • 技术选择:过滤器 、拦截器 、ControllerAdvice 、 AOP。过滤器不好分辨是请求过来执行的还是请求出去执行的; ControllerAdvice-做全局异常处理 ;AOP 将代码分散到多个地方,导致跟踪和调试变得更加复杂;拦截器在过滤器之后执行即可。
    在这里插入图片描述

2.记录的实体类设计

具体字段可以自行设计,持久层框架可以用MyBatis或者jpa(这里用的jpa)

import lombok.Data;
import nonapi.io.github.classgraph.json.Id;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;@Entity
@Data
@EntityListeners(AuditingEntityListener.class)  //加一个监听器,后面的@CreateDate等注解才能监听得到当前时间
public class AuditLog implements Serializable {@javax.persistence.Id@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String method;      //请求方式private String path;        //请求路径private String notes;       //请求注释private String parameters;  //请求参数列表private Integer status;     //http返回的状态码private String outPut;      //响应内容private String userId;      //发起请求的用户idprivate String userName;    //发起请求的用户名private String userAccount; //发起请求的账号名private String requestAddr; //请求地址private String realAddr;    //请求真实ipprivate String responseAddr;//响应地址private Long totalTime;     //响应请求的总时长@Temporal(TemporalType.TIMESTAMP)       //这个注解表示要存储到数据库中的时候以"时间戳"的形式存储@CreatedDate                            //JPA 会在 save 到数据库之前自动获取当前时间赋值给该值private Date createTime;    //创建时间@Temporal(TemporalType.TIMESTAMP)@LastModifiedDateprivate Date modifyTime;    //修改时间
}

3.保存审计记录到数据库的工具

在application.yml配置文件中添加jpa配置

#jpa相关配置jpa:generate-ddl: trueopen-in-view: falseshow-sql: true

采用jpa框架的代码

import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.CrudRepository;publi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/321698.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Text-to-SQL小白入门(十一)DAIL-SQL教你刷Spider榜单第一

论文概述 学习这篇Text2SQLLLM的benchmark论文前,可以先学习一下基础的Text2SQL知识。 可以参考GitHub项目:GitHub - eosphoros-ai/Awesome-Text2SQL: Curated tutorials and resources for Large Language Models, Text2SQL, Text2DSL、Text2API、Text2…

Transforer逐模块讲解

本文将按照transformer的结构图依次对各个模块进行讲解: 可以看一下模型的大致结构:主要有encode和decode两大部分组成,数据经过词embedding以及位置embedding得到encode的时输入数据 输入部分 embedding就是从原始数据中提取出单词或位置&…

腾讯云2024年最新优惠活动整理汇总

腾讯云作为国内领先的云计算服务提供商,一直致力于为用户提供优质、高效的服务。为了更好地满足用户需求,腾讯云经常推出各种优惠活动,本文将对腾讯云最新优惠活动进行整理汇总,帮助用户更好地了解和利用这些福利。 一、腾讯云新用…

根本记不住MySQL进阶查询语句

1 MySQL进阶查询 1.1 MySQL进阶查询的语句 全文以数据库location和Store_Info为实例 ---- SELECT ----显示表格中一个或数个字段的所有数据记录 语法:SELECT "字段" FROM "表名"; select 列名 from 表名 ; ---- DISTINCT ----不显示重复的数…

LINUX加固之命令审计

一、前言 在LINUX安全范畴中,安全溯源也是很重要的一个环节。对主机上所有曾操作过的命令详细信息需要有一份记录保存,当系统遭受破坏或者入侵,拿出这份记录,可以帮助定位一些可疑动作。 很多系统通常都会配置安全堡垒机&#xff…

ROS 系列学习教程(总目录)

ROSLearning 一、ROS概览 1.1 ROS简介 To be continued… 1.2 ROS安装 Ubuntu 安装 ROS 详细教程(以最后一个ROS1版本Noetic为例) 1.3 ROS Hello World ROS创建工作空间添加包并编译 ROS Hello World 1.4 ROS架构 ROS架构:文件系统 …

Python学习笔记(五)函数、异常处理

目录 函数 函数的参数与传递方式 异常处理 函数 函数是将代码封装起来,实现代码复用的目的 函数的命名规则——同变量命名规则: 不能中文、数字不能开头、不能使用空格、不能使用关键字 #最简单的定义函数 user_list[] def fun(): #定义一个函数&…

【损失函数】Cross Entropy Loss 交叉熵损失

1、介绍 主页介绍的几种损失函数都是适用于回归问题损失函数,对于分类问题,最常用的损失函数是交叉熵损失函数 Cross Entropy Loss。它用于测量两个概率分布之间的差异,通常用于评估分类模型的性能。 2、公式 对于二分类问题,交…

亚信安慧AntDB数据库:企业核心业务系统数据库升级改造的可靠之选

在近期召开的“2023年国有企业应用场景发布会”上,亚信安慧公司的核心数据库产品AntDB闪耀登场,技术总监北陌先生针对企业核心业务系统数据库升级改造的关键议题发表了深度分享。他从研发、工程实施和运维管理三个维度细致剖析了当前企业在进行数据库升级…

Android--Jetpack--Paging详解

不尝世间醋与墨,怎知人间酸与苦。 择一业谋食养命,等一运扭转乾坤。 你见过哪些令你膛目结舌的代码技巧? 文章目录 不尝世间醋与墨,怎知人间酸与苦。择一业谋食养命,等一运扭转乾坤。你见过哪些令你膛目结舌的代码技…

深度神经网络中的混合精度训练

Mixed-Precision Training of Deep Neural Networks | NVIDIA Technical Blog 目录 混合精度成功训练的技术 FP32 累加 损失缩放 loss scaling FP32 Master Copy of Weights 混合精度训练迭代过程 AMP混合精度训练介绍 FP16和FP32的区别 FP16的优势 FP16的问题 解决P…

力扣刷题-二叉树-合并二叉树

617.合并二叉树(经典) 合并二叉树是操作两棵树的题目里面很经典的,如何对两棵树遍历以及处理? 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并…