审计日志

介绍

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

  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. 【易语言学习】Day1

    个人认为网上讲的都不是很好,查阅了各类资料,特意找了份比较不错的PDF版,需要的可以私聊我~~~ 今天就看到这里了,请听下回分解

  2. codeforces 767A Snacktower(模拟)

    A. Snacktower time limit per test:2 seconds memory limit per test:256 megabytes input:standard input ...

  3. [bzoj1706] [usaco2007 Nov]relays 奶牛接力跑

    大概是叫倍增Floyd? 显然最多200个点...f[i][j][k]表示从j到k,走2^i步的最小路程.就随便转移了.. 查询的话就是把n二进制位上是1的那些都并起来. #include<cs ...

  4. 详解:Python2中的urllib、urllib2与Python3中的urllib以及第三方模块requests

    在python2中,urllib和urllib2都是接受URL请求的相关模块,但是提供了不同的功能.两个最显著的不同如下: 1.urllib2可以接受一个Request类的实例来设置URL请求的hea ...

  5. c++extern关键字详解

    1 基本解释 :extern可以置于变量或者函数 前,以标示变量或者函数的定义在别的文件中 ,提示编译器遇到此变量和函数时在其他模块中寻找其定义 .此外extern也可用来进行链接指定. 也就是说ex ...

  6. 从零开始学习前端开发 — 6、CSS布局模型

    一.css布局模型 1.流动模型(Flow) 元素在不设置css样式时的布局模型,是块元素就独占一行,是内联元素就在一行逐个进行显示 2.浮动模型(Float) 使用float属性来进行网页布局,给元 ...

  7. Codeforces 437 D. The Child and Zoo 并查集

    题目链接:D. The Child and Zoo 题意: 题意比较难懂,是指给出n个点并给出这些点的权值,再给出m条边.每条边的权值为该条路连接的两个区中权值较小的一个.如果两个区没有直接连接,那么 ...

  8. 运行android程序的时分出现了No compatible targets were found.Do you wish to.

    这个错误是说明没有android虚拟机,那么新建一个就OK了. 假如出现了这个状况,就点击yes,然后new一个. 具体方案如下,(可自定义.仅供参考)

  9. c#中RGB与int类型之间的转换

    Color color = Color.FromArgb(0, 0, 255);int colorInt = ParseRGB(color); --------------------- int Pa ...

  10. express官网学习笔记

    npm init 创建一个package.json npm install express --save-dev 安装到项目依赖 便于多人开发 路由结构定义 app.METHOD(PATH, HAND ...