审计和日志记录的区别?

Posted

技术标签:

【中文标题】审计和日志记录的区别?【英文标题】:Difference in Auditing and Logging? 【发布时间】:2011-01-30 08:17:34 【问题描述】:

我经常遇到这两个词,但我没有发现它们有太大区别?我的意思是想知道它们是可以互换使用还是这两者有一些区别? 谢谢。

【问题讨论】:

【参考方案1】:

日志记录通常意味着记录程序运行时发生的实现级别事件(调用方法、创建对象等)。因此,它专注于程序员感兴趣的事情

审计是关于记录域级事件:创建交易、用户执行操作等。在某些类型的应用程序(银行)中,有记录此类事件的法律义务。

【讨论】:

我认为您对日志记录的定义范围可能有点狭窄,但可能正好适合编程论坛:-) 通常,审核是记录内容的一个子集,因此它们并没有太大区别。日志记录不仅仅包括审计事件。 好的,审计和事件溯源(cqrs 中的一个词)有什么区别@Robin【参考方案2】:

区别在于用法而不是技术。

审计用于回答“谁做了什么?”这个问题。可能是为什么。日志记录更关注正在发生的事情。

【讨论】:

-1。试着告诉那些审计要求在法律上有明确定义的项目。例如:飞机发动机维护、生物实验室、商业/贸易应用。 @TomTom 我真的不明白你的意思。无论需求来自何处,您都可以将审计作为需求的一部分来实施。除非有实现要求,否则存储日志的技术,无论是审计还是调试或其他,实际上并没有什么不同。 关键是审计几乎解决了周围的实施要求。通常你会被告知要审计什么,存储多长时间以及存储它的安全性如何,在很多细节中。我知道有很多审计要求会输出文本日志,因为 - 如果存储在磁盘上,它们是可以计算的。 但是审计也告诉我们发生了什么,而日志记录也告诉谁(例如哪个登录用户)做了那件事? 不仅如此。审计告诉你发生了什么,日志可能告诉你如何。 IE。 “已删除时间戳”告诉我记录何时被删除。在这一点上,我不在乎删除通过了哪些方法,包括时间戳和可能的变量。我关心的是业务方面的数据,而不是技术方面的数据。【参考方案3】:

存在一个技术问题,即审计通常具有法律要求。此外,审核通常在应用程序内完成,例如:有一个用户界面可以查看谁更改了什么,因为用户/合规部门可能需要检查它。此外,审计可能有法律要求(一次写入 WORM 媒体,使其无法被操纵,将数据保留 x 年)。

一个例子:我有一个交易应用程序。对订单的所有更改都经过审核 - 您拥有 OrderStatus 和 OrderStatusHistory。这不是技术性的 - 历史是应用程序界面的一部分。

日志记录纯粹是技术性的。有时可以关闭它,或者让管理员提取日志文件。

【讨论】:

【参考方案4】:

它们明显不同。日志记录只是记录有关系统中发生的事件的数据的抽象任务。如果您正在记录任何信息,那么您就是在记录。

然而,审计更为复杂。审计是检查日志以验证系统是否处于理想状态或回答有关系统如何到达特定状态的问题的实践。进行审核的一种方法当然是查看日志,但您可以在没有日志的情况下进行审核(作为一个简单的示例,您可以直接询问用户是否对特定更改负责)。这不是一个好主意,因为日志记录通常是一种成本低廉的操作,不需要考虑替代方案。

【讨论】:

【参考方案5】:

我将审核日志视为业务所需的信息,以确定该用户在特定日期和时间对该用户执行的某些操作。它具有附加的业务价值,可以让您验证发生了什么。通常,审核日志会出于历史和合规目的而存档。

另一方面,普通日志记录技术合作伙伴所需的信息,以了解发生的事情或系统在特定事件期间的行为方式。它可以包含方法签名,哪些值作为输入传递,哪些值作为输出传递,如果有异常,有关异常的更多信息等。这些信息不是业务需要的,可以关闭或可以根据需要减少记录的详细信息。这些信息基本上可以帮助开发或支持团队调试系统。

【讨论】:

【参考方案6】:

Logging 正在跟踪哪个类中哪个方法调用的流程让我们有 A,B,C 方法和不同的类在 X 类中 A 方法被调用到 Y 类 B 方法,而 B方法被调用到 Y 类 c 方法..这样跟踪控制流

审计将跟踪用户的活动。我们必须编写逻辑,然后系统会自动将数据插入/保存到审计表中。

让我们来一个login.jsp,我们可以输入用户名和密码,然后点击登录页面,然后控制进入逻辑servlet页面,里面的服务方法将被调用,里面写逻辑

httpsession session=reg.getsession();
session.setAttribute("userId",uid);

即在数据库中,我们将列作为

created_by 
created_date
last_modified_by
last_modified_dt

【讨论】:

【参考方案7】:

审计

业务级事件 用户和客户信息 谁在什么时候做了什么 法律或客户合同通常要求 通常无限期保存或至少在法律规定的期限内保存

例子:

2021-01-01T08:45:21 用户 4711 访问记录 0815 2021-02-02T12:13:45 收到带有 guid f456-87D2-...的新发票。

记录

程序级事件 开发人员和支持信息 发生了什么,包括调试信息 出于维护或调试目的需要 通常会在短时间内删除

例子:

2021-01-01T08:45:21 方法 Foo.Bar() 将 46kb 的请求发送到 https://... 2021-02-02T12:13:45 在服务器 server01.mydomain 上启动 id 为 4711 的侦听器

【讨论】:

【参考方案8】:

审计意味着积极审查日志记录,恕我直言。没有日志就不能进行审计,但你可以在没有审计的情况下进行日志。

【讨论】:

【参考方案9】:

Audit Trail 是一种不易腐烂的事务记录,而 Logs 则用于检测错误,并且有一定的时间会出现日志文件

【讨论】:

我不认为保留政策很重要。 通常,保留策略是@marsze 提到的审计和日志记录之间的区别之一。但这仍然不是一个完整的答案。

以上是关于审计和日志记录的区别?的主要内容,如果未能解决你的问题,请参考以下文章

数据库审计和日志审计的三大区别分析

数据库审计和日志审计的三大区别分析

需要从github上下载所有的审计日志和大量的历史记录。

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

centos6 配置sudo命令日志审计

带有 Spring Security 的 Grails 4 审计日志不记录“演员”