ABP应用层——审计日志

ABP应用层——审计日志

点这里进入ABP系列文章总目录

基于DDD的现代ASP.NET开发框架--ABP系列之19、ABP应用层——审计日志

ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。

ABP的官方网站http://www.aspnetboilerplate.com

ABP在Github上的开源项目https://github.com/aspnetboilerplate



维基百科定义:审计跟踪(也称为审核日志)是一个安全相关的时间顺序记录,记录这些记录的目的是为已经影响在任何时候的详细操作,提供程序运行的证明文件记录、源或事件。

ABP提供了能够为应用程序交互自动记录日志的基础设施,它能记录你调用的方法的调用者信息和参数信息。从根本上来说,存储区域包含:

  • tenant id(相关的租户Id),
  • user id(请求用户Id),
  • server name(请求的服务名称【调用方法对应的类】),
  • method name(调用方法名称),
  • parameters(方法的参数【JSON格式】),
  • execution time(执行时间),
  • duration (执行耗时时间【通常是毫秒】),
  • IP address (客户端IP地址),
  • computer name(客户机名称),
  • exception (异常【如果方法抛出异常】)等信息。
  • 有了这些信息,我们不仅能够知道谁进行了操作,还能够估算出应用程序的性能及抛出的异常。甚至更多的,你可以得到有关应用程序的使用情况统计。

审计系统使用IAbpSession接口来获取当前用户Id和租户ID。

注意:关于IAuditingStore接口

审计系统使用IAuditingStore接口来保存审计信息。module-zero项目是这个接口的完整实现,当然你也可以通过自己的方式来实现这个接口。如果你不想自己实现这个接口,SimpleLogAuditingStore类可以直接拿来使用,它是实现方式是将审计信息写入日志中。

配置

可以在你的模块初始化方法(PreInitialize)中使用Configuration.Auditing的属性来配置审计,Auditing属性默认是启用状态(即true)。你可以禁用它,如下图所示:

public class MyModule : AbpModule
{
    public override void PreInitialize()
    {
        Configuration.Auditing.IsEnabled = false;
    }

    //...
}

以下是审计配置的属性:

  • IsEnabled: 用于设置完全启用或禁用审计系统。默认值:true.
  • IsEnabledForAnonymousUsers:如果设置成ture,未登陆的用户的审计日志也会保存。默认值: false.
  • MvcControllers: 在ASP.NET MVC 控制器中使用审计日志
  • IsEnabled: 在ASP.NET MVC中启用(true)或禁用(false)审计日志. 默认值: true.
  • IsEnabledForChildActions: 为MVC actions启用(true)或禁用(false)审计日志. 默认值: false.
  • Selectors: 选择使用其他类来处理审计日志的存储。

正如你所看到的,审计系统单独为mvc控制器提供了审计配置使之可以使用不同的方法来使用它。

Selectors是一个断言(推断类型)选择器列表,用于选择那种方式来保存审计日志。每一个选择器包含一个唯一的名称和一个断言。断言列表中默认的选择器,使用的是应用程序服务类。如下图所示:

Configuration.Auditing.Selectors.Add(
    new NamedTypeSelector(
        "Abp.ApplicationServices",
        type => typeof (IApplicationService).IsAssignableFrom(type)
    )
);

你可以在自己的模块初始化方法(PreInitialize)中添加自己的断言选择器。同样的,如果你不喜欢使用应用程序服务来保存审计日志,你也可以通过名称(name)来移除断言选择器,这就是为什么断言选择器的名称必须是唯一的(你也可以通过Linq的方式查找到选择器来移除它)。

通过属性来启用和禁用审计日志

当你使用配置项来配置断言选择器时,你可以通过使用Audited和DisableAuditing特性标记到单个类或单个方法来实现审计系统的启用和禁用。例如:

[Audited]
public class MyClass
{
    public void MyMethod1(int a)
    {
        //...
    }

    [DisableAuditing]
    public void MyMethod2(string b)
    {
        //...
    }

    public void MyMethod3(int a, int b)
    {
        //...
    }
}

上述列子中,MyClass类中除了MyMethod2明确标记不需要审计外,其他的方法都会被审计。Audited特性能够帮助你只想保存审计日志的方法,进行审计日志保存。

说明

保存审计日志的方法必须是public修饰的,private和protected修饰的方法将会被忽略。 如果调用的方法不在类的引用范围内,那么引用的方法必须是虚方法(virtual),如果依赖注入的是它自己的接口则不需要是虚方法(例如注入 IPersonService 来使用 PersonService类)。

ABP使用动态代理和拦截机制以后,使用虚方法是必须的。对MVC Controller actions 使用审计日志不是正确的做法,因为他们可能不是虚方法。



希望更多国内的架构师能关注到ABP这个项目,也许这其中有能帮助到您的地方,也许有您的参与,这个项目可以发展得更好。

欢迎加ABP架构设计交流QQ群:134710707

点这里进入ABP系列文章总目录

时间: 2024-10-14 00:58:32

ABP应用层——审计日志的相关文章

ABP(现代ASP.NET样板开发框架)系列之19、ABP应用层——审计日志

点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之19.ABP应用层——审计日志 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 维基百科定义:审计跟踪(也称为审核日志)是一个安全相关的时间顺序记录,记录这些记录的目

ABP官方文档翻译 4.6 审计日志

审计日志 介绍 关于IAuditingStore 配置 通过特性启用/禁用 注意事项 介绍 维基百科:“审计追踪(也称为审计日志)是与安全相关的按时间先后的记录.记录集合.记录的目的地和源,提供一系列活动的纪实证据,这些活动可能在任何时刻影响一个特定操作.过程或事件.” ABP提供了基础设施自动记录应用所有的交互.它可以记录方法调用的调用者和参数. 基本上,保存的字段有:相关的tenant id,调用者user id,调用者service name(调用方法的类),调用者method name,

<<ABP文档>> 审计日志

文档目录 本节内容: 简介 关于 IAuditingStore 配置 通过特性启用/禁用 注意 简介 维基百科:“一个审计追踪(也叫审计日志)是一个安全相关的时序记录.记录组.和/或记录源和目标,作为任何时候一个特殊操作带来影响的一序列活动的书面文件”. ABP提供一个基础框架来自动记录所有与应用的交互,它能记录有意的方法调用和调用者信息与参数. 基本上,保存的字段有:相关的租户id,调用者id,被调用的服务名(被调用方法的类名),被调用的方法名,执行参数(序列化成Json),执行时间,执行时长

ABP应用层——应用服务(Application services)

ABP应用层——应用服务(Application services) 点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之15.ABP应用层——应用服务(Application services) ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspn

ABP(现代ASP.NET样板开发框架)系列之15、ABP应用层——应用服务(Application services)

点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之15.ABP应用层——应用服务(Application services) ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 本文由东莞-天道提供翻译 应用服务用于将领

Percona5.6首次提供了审计日志功能

如果有一天数据库里丢失了一条记录,开发让你查什么时候被谁从哪个IP,执行了delete操作,那么在之前的版本是无法查到的,而Percona最新版本5.6.17首次提供了审计日志功能. (注:截止2014年5月19日,官方MySQL5.6.17和MariaDB10.0.11均没有提供该功能) 版本: 5.6.17-65.0-rel65.0-log Percona Server with XtraDB (GPL), Release rel65.0, Revision 587 安装插件: INSTAL

python 拉取rds 审计日志

此脚本可以拉取rds 审计日志 并且插入本地数据中. #!/usr/bin/env  python2.6 #coding=utf-8 import os from aliyunsdkcore import client from aliyunsdkrds.request.v20140815 import DescribeSQLLogRecordsRequest import json import urllib import datetime,time import subprocess fro

ABP应用层——参数有效性验证

ABP应用层——参数有效性验证 基于DDD的现代ASP.NET开发框架--ABP系列之17.ABP应用层——参数有效性验证 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 应用程序的输入数据首先应该被检验是否有效.输入的数据能被用户或其他应用程序提交.

ABP应用层——数据传输对象(DTOs)

ABP应用层——数据传输对象(DTOs) 基于DDD的现代ASP.NET开发框架--ABP系列之16.ABP应用层——数据传输对象(DTOs) ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 数据传输对象(Data Transfer Objects)用