审计日志

介绍

  维基百科:“审计追踪(也称为审计日志)是与安全相关的按时间先后的记录、记录集合、记录的目的地和源,提供一系列活动的纪实证据,这些活动可能在任何时刻影响一个特定操作、过程或事件。”

  ABP提供了基础设施自动记录应用所有的交互。它可以记录方法调用的调用者和参数。

  基本上,保存的字段有:相关的tenant id,调用者user id,调用者service name(调用方法的类),调用者method name,执行parameters(序列化为JSON),执行时间,执行时长(毫秒级),客户端IP地址,客户端计算机名称异常(如果方法抛出异常)。

  有了这些信息,我们就可以知道谁执行了这个操作,也可以衡量应用的执行性能和检查抛出的异常。还可以得到你的应用的使用统计。

  审计系统使用IAbpSession获得当前的UserId和TenantId。

  应用服务、MVC控制器、Web APID和ASP.NET Core方法默认自动审计。

关于IAuditingStore

  审计系统使用IAuditingStore保存审计信息。你可以用自己的方式来实现这个接口,但在module-zero工程中已完全实现。如果你没实现它,可以使用SimpleLogAuditingStore,它会把审计信息写到日志中。

配置

  要配置审计,可以在模块的PreInitialize方法中使用Configuration.Auditing属性。审计默认是启用的。可以按如下的方式禁用:

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

  这里有审计配置属性的列表:

  • IsEnabled:用来完全启用或禁用审计系统。默认为:true。
  • IsEnabledForAnoymousUsers:如果设置为true,对那些没有登录到系统的用户也会保存审计日志。默认为:false。
  • Selectors:用来选择其他类保存审计日志。

  Selectors是一个术语列表用来选择其他类型保存审计日志。一个selector有一个唯一的名称和一个术语。默在这个列表中唯一的默认selector用来选择应用服务类。它的定义如下所示:

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

  可以在模块的PreInitialize方法中添加selectors。如果你不喜欢应用服务保存审计日志,可以通过名称移除selector。这就是有一个唯一名称的原因(如果你想的话,可以使用简单的LINQ在selectors中查找selector并移除它)。

  注意:除了标准的审计配置,MVC和ASP.NET Core模块定义了配置来启用或禁用方法的审计日志。

通过特性启用/禁用

  你可以通过配置,选择需要审计的类,你也可以给一个类、方法使用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特性可以用于一个方法,这样就可以只给想要审计的方法进行审计了。

  DisableAuditing可以用于DTO的一个属性。因此,你可以在审计日志里隐藏敏感输入,如密码。

注意事项

  • 为了保存设计日志,方法必须为public。Private和Protected方法会被忽略。
  • 如果通过类引用调用,方法必须为virtual。如果使用它的接口(如注入IPersonService接口来使用PersonService类)注入,这就不要了。因为ABP使用动态代理和来接,所以这是需要的。对于MVC控制器方法,这不是真的。他们不能为virtual。

返回主目录

ABP官方文档翻译 4.6 审计日志的更多相关文章

  1. Abp + MongoDb 改造默认的审计日志存储位置

    一.背景 在实际项目的开发当中,使用 Abp Zero 自带的审计日志功能写入效率比较低.其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起.所以我们可以重新实现 Abp 的 IAuditi ...

  2. ABP官方文档翻译 6.2.1 ASP.NET Core集成

    ASP.NET Core 介绍 迁移到ASP.NET Core? 启动模板 配置 启动类 模块配置 控制器 应用服务作为控制器 过滤器 授权过滤器 审计Action过滤器 校验过滤器 工作单元Acti ...

  3. ABP官方文档翻译 6.1.1 MVC控制器

    ASP.NET MVC控制器 介绍 AbpController基类 本地化 其他 过滤器 异常处理和结果包装 审计日志 验证 授权 工作单元 介绍 ABP通过Abp.Web.Mvc nuget包集成到 ...

  4. ABP官方文档翻译 5.1 Web API控制器

    ASP.NET Web API控制器 介绍 AbpApiController基类 本地化 其他 过滤器 审计日志 授权 反伪造过滤器 工作单元 结果包装和异常处理 结果缓存 校验 模型绑定器 介绍 A ...

  5. ABP官方文档翻译 2.2 ABP会话

    ABP会话 介绍 关于IAbpSession 注入会话 会话属性 覆盖当前会话值 警告! 用户标示 介绍 如果应用需要登录的话,同样也需要知道当前用户可以执行哪些操作.ABP在展现层提供了会话对象,同 ...

  6. ABP官方文档翻译 0.0 ABP官方文档翻译目录

    一直想学习ABP,但囿于工作比较忙,没有合适的契机,当然最重要的还是自己懒.不知不觉从毕业到参加工作七年了,没留下点儿什么,总感觉很遗憾,所以今天终于卯足劲鼓起勇气开始写博客.有些事能做的很好,但要跟 ...

  7. ABP官方文档翻译 1.1 介绍

    介绍 介绍 快速示例 其他 启动模板 如何使用 介绍 我们通常会根据不同的需求来创建不同的应用程序.但是对于一些通用相似的结构总是一遍又一遍的实现,至少在某种程度上是这样的.常见的通用模块如授权.验证 ...

  8. ABP官方文档翻译 2.4 日志

    日志 服务端 获取记录器 基类日志记录器 配置 Abp.Castle.Log4Net包 客户端 服务端 ABP使用Castle Windsor`s 日志设备.它可以使用不同的日志类库:Log4Net, ...

  9. 0.0 ABP官方文档翻译目录

    一直想学习ABP,但囿于工作比较忙,没有合适的契机,当然最重要的还是自己懒.不知不觉从毕业到参加工作七年了,没留下点儿什么,总感觉很遗憾,所以今天终于卯足劲鼓起勇气开始写博客.有些事能做的很好,但要跟 ...

随机推荐

  1. HDU 2639 Bone Collector II(01背包变形【第K大最优解】)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  2. BZOJ 1411&&Vijos 1544 : [ZJOI2009]硬币游戏【递推,快速幂】

    1411: [ZJOI2009]硬币游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 897  Solved: 394[Submit][Status ...

  3. ACM中常见错误对应表

    因为经常写错题,找了个这个看看... 传送门:http://www.cnblogs.com/ZouCharming/p/3868844.html 我太垃圾了... 我出现过的错误: Wrong Ans ...

  4. 高级设置电脑系统windows7防火墙出错代码0×6D9原因与解决技巧

    高级设置windows防火墙能够更好的保护电脑系统安全,在电脑系统windows7设置过程中难免会遇到某些问题,有用户在安装MRGT后想要打开SNMP的161端口,但在打开高级安全windows防火墙 ...

  5. 邓_Excal

    --------------------------------------------------------------------- 快速输入固定文字 有一些固定的词组,输入 1 个.2 个,貌 ...

  6. MySQL时间差返回月个数

    select PERIOD_DIFF(date_format(now(),'%Y%m'),date_format('2010-11-30','%Y%m')) 1. MySQL 为日期增加一个时间间隔: ...

  7. Spring学习之路二——概念上理解Spring

    一.概念. Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Develop ...

  8. 堡垒机之paramiko模块

    一.paramiko简单介绍 场景预设: 很多运维人员平时进行维护linux/unix主机时候,无非通过ssh到相应主机操作,那么一旦主机有成千上百台,那该如何应对,这时候我们需要批处理工具,基于py ...

  9. CentOS 7安装Oracle 11gR2以及设置自启动

    一.环境准备 1.正确无误的CentOS 7系统环境 CentOS 7安装:http://www.cnblogs.com/VoiceOfDreams/p/8043958.html 2.正确的JDK环境 ...

  10. 把一个DIV放到另一个div右下角

    父对象相对定位,子对象以父对象为参考点绝对定位:外层的div设置为相对定位,内层的div设置为绝对定位: <div id="box1"> <div id=&quo ...