审计记录(日志)

介绍

维基百科:“ 审计跟踪(也称为审计日志)是与安全相关的时间顺序记录,记录集和/或目的地和记录来源,提供随时影响特定操作的活动顺序的文件证据,程序或事件 “。

ASP.NET Boilerplate提供了自动记录应用程序内所有交互的基础结构。它可以使用调用者信息和参数记录预期的方法调用。

基本上,保存的字段是:相关的租户id,调用者用户id,被叫服务名称(被调用方法的类),被称为 方法名称,执行参数(序列化为JSON), 执行时间,执行持续时间(以毫秒为单位),客户端的 IP地址,客户端的计算机名称异常(如果方法抛出异常)。

有了这些信息,我们不只是知道是谁做的工作,但我们也可以测量性能的应用程序并观察 异常抛出。此外,您还可以获得有关应用程序使用情况的统计信息。

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

默认情况下,将自动审计应用程序服务,MVC控制器,Web API和ASP.NET核心方法。

关于IAuditingStore

审计系统使用IAuditingStore来保存审计信息。虽然您可以以自己的方式实现它,但它完全在Module Zero项目中实现。如果不实现它,则使用SimpleLogAuditingStore并将审计信息写入日志

组态

要配置审计,可以使用模块的PreInitialize方法中Configuration.Auditing属性默认情况下启用审核您可以将其禁用,如下所示:

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

    //...
}

以下是审核配置属性:

  • IsEnabled:用于完全启用/禁用审计系统。默认值:true
  • IsEnabledForAnonymousUsers:如果设置为true,则为未登录到系统的用户保存审核日志。默认值:false
  • 选择器:用于选择其他类以保存审核日志。

选择器是一个谓词列表,用于选择保存审计日志的其他类型的类。选择器具有唯一名称谓词此列表中唯一的默认选择器用于选择应用程序服务类它的定义如下:

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

您可以在模块的PreInitialize方法中添加选择器。如果您不想保存应用程序服务的审核日志,也可以按名称删除上面的选择器。这就是它具有唯一名称的原因(使用简单的LINQ在选择器中查找选择器并根据需要将其删除)。

注意:除标准审计配置外,MVC和ASP.NET Core模块还定义配置以启用/禁用操作的审计日志记录。

按属性启用/禁用

虽然您可以按配置选择审计类,但可以对单个或单个方法使用 AuditedDisableAuditing属性例:

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

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

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

MyMlass的所有方法都被审计,除了MyMethod2,因为它被明确禁用。Audited属性可用于保存所需方法的审核。

DisableAuditing也可用于DTO的单个属性因此,您可以隐藏审计日志中的敏感数据,例如密码。

笔记

  • 方法必须是公共的才能保存在审计日志中。隐私和受保护的方法将被忽略。
  • 如果通过类引用调用方法,则该方法必须是虚拟的。如果使用其接口注入(例如注入IPersonService接口以使用PersonService类),则不需要这样做。这是必需的,因为ASP.NET Boilerplate使用动态代理和拦截。对于MVC控制器操作,情况并非如此它们可能不是虚拟的。

nidie.com.cn - 用心与你沟通