问题标签 [audit-trail]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
376 浏览

hibernate - 实施每行审计跟踪的方法

我想在我的所有表中添加两列 [创建时间] 和 [修改时间] 以捕获审计跟踪。将来这些字段可能用于对表进行分区。请建议这样做的最佳方法是什么?通过数据库中的一些触发器或通过代码更新这些值是否明智。我们正在使用 Hibernate API 与 Oracle 11g 通信。

0 投票
0 回答
365 浏览

entity-framework - Linq to Entity 审计关系更新

我正在尝试在我的 Linq to Entities 对象上下文中实现通用审计。

我已经通过内置的 ObjectStateEntry 方法在很大程度上实现了这一点,但是我发现了一个缺陷,并想知道是否有解决方法。以下面的例子为例:

现在,当使用 tblServer 的内置更改跟踪时,我在更改为 ServerTypeKey = 2 后得到以下信息

服务器密钥 1 旧服务器类型密钥 [1] 新服务器类型密钥 [2]。

在进行审计时,是否可以写出 Foregn Key 表描述而不是键值?

0 投票
5 回答
11735 浏览

database - 在 SQL Server 2008 中为给定数据库的所有表中记录插入/更新/删除的行

在 SQL Server 2008 中为给定数据库的所有表中跟踪/记录插入/更新/删除行的最佳方法是什么?

或者 SQL Server 2008 中是否有更好的“审计”功能?

0 投票
1 回答
2821 浏览

audit-trail - 审计跟踪项目列表 2 BusComp 未显示关联或解除关联操作。版本 8.0 +

我们的实现:我们添加了使用 Audit Trail 功能的审计,到 Bus Comp 以根据书架监控自身与孩子之间的 M:M 关系(使用交叉表。)-> 指定父子Siebel Applications 管理员指南中的“审计关联”部分。

查看审计跟踪: 1) 使用审计跟踪屏幕 -> 我可以找到关联/解除关联记录。2) 使用审计跟踪项目列表 2 Bus Comp 使用 Siebel Applications Administrator Guide 中的部分 -> 将审计跟踪链接到业务组件部分为特定视图提供审计跟踪选项卡。这是问题 它不显示关联/解除关联操作记录,即使它被清楚地记录并且我们能够在审计跟踪屏幕中查看它。

审计跟踪项目列表 2 是 VBC,我无法看到它在哪里或为什么不显示这些操作的逻辑?

提前感谢您的任何帮助!

0 投票
1 回答
98 浏览

architecture - 完整的网站访问审计和报告策略

我正在寻找一些指针来改进以下问题的解决方案。尽管我正在使用 Unix 工具链,但我更喜欢通用方法而不是实现。

开始了:

应该记录对网站的每次访问,并且业务用户应该能够近乎实时地报告它(可以接受 5 分钟的延迟)。报告将按用户或时间段或两者的组合进行过滤。

匿名用户访问也会被记录,一旦匿名用户登录,登录前的信息应与注册用户相关联。

我想记录每个页面访问(GET 或 POST)以及任何参数和时间戳。

报告要求是:“告诉我用户 ID 1 在上午 11:15 到上午 11:18 之间做了什么”

响应应该是:

  • 11:15:23,他来到了首页。
  • 11:15:49 他去了关于我们的页面。
  • 11:16:23,他进入登录页面。
  • 在 11:16:34,他尝试使用用户名“hacked”登录。
  • 11:16:38 登录请求失败 - 用户名/密码不正确
  • 在 11:16:45,他使用用户名“myuser”登录
  • 11:17:12,他去了产品页面。

一种解决方案是使用会话 ID 作为主键和帐户 ID 以及请求数据将所有这些插入到数据库中。

为了不让数据库陷入困境,在两者之间插入一个消息队列并延迟对数据库的写入。

但是,由于数据库中的数据量很大,报告可能很快就会变慢。

我知道诸如woopra之类的解决方案- 但是我想在内部保留访问者数据,并且还喜欢通过基于内部角色的数据访问等进行内部报告的想法。

编辑:你过去是怎么做这样的事情的,或者如果你有一个完整的选择,你会怎么做?

0 投票
3 回答
385 浏览

python - 使用 DVCS 进行 RDBMS 审计跟踪

我正在为一个相当复杂的关系数据库实施审计跟踪,它的模式很容易改变。我正在考虑的一种途径是使用 DVCS 来跟踪更改。

(我能想象的好处是:无模式历史,整个系统状态的快照,用于分析、回放和迁移的标准工具,高效存储,独立系统,保持数据库清洁。数据库不是大量写入,历史不是核心功能,更多的是为了进行审计跟踪。哦,我喜欢尝试疯狂的新方法来解决问题。)

我不是这些系统的专家(我只有基本的 git 熟悉度),所以我不确定实施起来会有多困难。我正在考虑采用 mercurial 的方法,但可能将文件内容/清单/变更集存储在键值数据存储中,而不是使用实际文件。

数据行将被序列化为 json,每个“文件”可以是一行。或者,可以将整个表存储在“文件”中,每一行位于与其主键相等的行号上(假设表不是太大,我希望所有表的行数都少于 4000 左右。这可能意味着可以自动生成变更集,而无需查阅表“文件”的其余部分。

(但我对此表示怀疑,因为我认为我们需要整个文件的 SHA-1 哈希。文件可能会被可预测的行数分割,例如0 < primary key < 1000在文件 1、1000 < primary key < 2000文件 2 等中,使它们保持较小)

是否有熟悉 DVCS 内部或一般数据结构的人可以评论这样的方法?怎样才能让它发挥作用,甚至应该完成它吗?

我想这样的系统有两个方面:1)将 SQL 数据映射到 DVCS 系统和 2)将 DVCS 数据存储在键/值数据存储(而不是文件)中以提高效率。

(注意我的 ORM 涵盖了 json 序列化位)

0 投票
2 回答
971 浏览

ruby-on-rails-3 - 如何从 Rails 通知访问 current_user?

我正在构建一个需要知道当前正在发出请求的用户的审计跟踪。我的审计跟踪是使用 ActiveSupport::Notifications 构建的,以接收需要审计的事件。

我想做的是使用 ActiveSupport::Concern 来封装我的审计需求的逻辑,这样我就可以轻松地将审计添加到我系统中的任何模型中。

一般来说,这很容易做到。我什至在博客上写了一段时间。但是,我很难弄清楚如何让当前用户向 Web 服务器发出请求,以便我可以记录谁在我的审计跟踪中进行了哪些更改。

我知道有很多关于“我如何在我的模型中获取 current_user”的问题,但我并不是要在模型中这样做,所以我希望有一套更好的答案。由于我的审计代码与基础架构相关,我希望有某种方法可以利用当前正在处理的请求,或者其他可以明确告诉我当前登录/发出请求的人的方法。

我读过很多“答案”,说要使用线程存储并将 current_user 放在那里。由于许多其他人不喜欢的原因,我不喜欢这个答案 - 不能保证线程存储是安全的。如果服务器使用同一个线程处理多个请求等,它可能会在多个请求中流血。

所以...鉴于我不是试图从我的模型访问 current_user ,而是从 ActiveSupport::Concern 或 ActiveSupport::Notifications 事件订阅,我有什么好的选择可以知道当前用户是谁?

更新

我正在使用设计进行身份验证,它在后端使用 Warden。devise 通过调用检索 current_user request.env['warden'].authenticate(:scope => :user)(假设我使用“用户”模型进行身份验证)。

request有没有办法让我从我的关注或通知订阅中访问当前对象?回到我的 .NET 时代,我本来可以打电话HttpContext.Current.Request,一切都会好起来的。Rails 中的等价物是什么?

0 投票
3 回答
936 浏览

oracle - 如何实现基于上下文的数据库审计?

我有一个当前的数据库驱动应用程序,它有几种访问数据的方法。

  1. Web应用程序
  2. 直接 SQL 访问用户(我正在尝试删除这些)
  3. 客户端服务器应用程序
  4. 批量输入和输出

我需要实施基于上下文的审计,因为当前的数据审计不足以追溯识别导致数据更改的过程。

我目前正在考虑将数据模型隐藏在 XAPI(事务性 API)后面,并且数据模型上的每个操作都必须提供某种形式来识别相关操作或数据更改的原因,这些操作将与审计数据本身一起存储。

谁能给我一个更好的方法来实现基于上下文的审计,这将涵盖对数据库的所有访问?或者甚至指出我目前的方法中遗漏的任何明显缺陷?

提前致谢。

0 投票
1 回答
158 浏览

java - 如何在运行时为 Java 服务中的单个用户启用日志记录

序言 -

我正在运行一个在线 Java 应用程序(Tomcat->Java->Mysql)作为 SAAS(软件即服务)。这基本上是一种移动实用程序服务,用户使用他的手机连接到我们的服务/服务器,一旦用户通过身份验证,数据传输就会发生。该服务在数据中心上运行,应用服务器由负载均衡器等提供请求服务。我们的应用程序的实时更新是通过添加和删除服务器、负载均衡器转移请求来实现的,而实际上并没有完全关闭服务。

设想 -

从日志中我可以了解到,至少有一万用户一直连接到该服务。因此,为了升级而关闭服务是不切实际的。我确实使用 Java 的 API(如 HashMap、ArrayList 等)在内存缓存中使用了很多。我还没有使用像 memcache 这样的缓存框架。此外,人们使用大量手机连接到此服务,我们发现很难支持所有这些手机。

用例

当用户抱怨该服务不适合他们时,我们需要为他(以及他一个人而不是其他人)启用日志记录,以找出他到底出了什么问题。请记住,他的客户端是手机,由于这是一项在线服务,我们不能只在我们的服务器中启用日志,它将为所有用户启用,我们的日志将立即翻转,否则用户的数据将不会被在记录器生成的文本范围内很容易追踪。此外,对于客户端错误,我无法请求屏幕截图(尽管少数手机具有此功能,但大多数手机都缺少此功能,并且它们是制造麻烦的手机),我无法看到他们的移动客户端上发生了什么。因此,需要在实时服务器上完成操作,而其他用户继续不受影响。

我可以通过在运行时提供一些参数来为一个用户启用日志记录的不同方法是什么,这些参数可以随意为他们启用日志记录(当他们实际连接到服务器时)

我匆忙尝试的简单事情

1)保留一个单列表,该表最初是空的,当一些用户说该服务不适合他时,在表中添加他的用户名。以特定间隔扫描表的线程将获取用户名并开始打印用户特定的日志。打印日志后删除条目。但是我需要等到线程来并执行操作。同样作为一项政策,我们不应该产生/运行除请求-响应线程之外的其他线程。

2)保留一个空文件并在其中添加条目,并按照与第1点中提到的db表相同的方式

3) 向经过管理员身份验证的私有 Servlet 发出请求(用户无法访问它,只允许内部 IP)并传递要记录为参数值的用户名,然后再次调用它以删除用户

还有其他/更好的方法吗?

PS。使用 java.util.logging.Logger 作为记录器

0 投票
1 回答
1426 浏览

jsf - JSF 应用程序的审计跟踪 - 全局 valueChangeListener 可能吗?

我正在尝试为我的 Web 应用程序实现审计跟踪功能,该功能记录:

  • lastModified(时间戳)
  • modifiedBy(用户信息)
  • userComment(值改变的原因)

对于我的每个输入字段(输入字段分布在具有不同支持 bean 和不同 valueHolder 类的多个表单中)。

前两个(lastModified 和 modifiedBy)在 JPA AuditListener 和 @PrePersit 和 @PreUpdate 方法的帮助下很容易完成。

第三个有点棘手,因为它需要用户交互。最好是一个询问用户评论的对话框。

所以有(至少)两个悬而未决的问题:我可以为我的应用程序中的所有输入字段建立一个“全局” valueChangeListener 吗?<f:valueChangeListener>如果不附加到每个单个输入组件,这是否可能?第二:如何获取用户评论。我的想法是p:dialog在我的网页模板中放置一个,但是这个对话框需要知道它是从哪个输入组件调用的。