标签: audit

在SQL Server中创建审计触发器

我需要在SQL Server 2005数据库中的两个表上实现更改跟踪.我需要审核添加,删除,更新(详细了解更新内容).我正计划使用触发器来执行此操作,但在Google上进行搜索后,我发现错误地执行此操作非常容易,而且我想在开始时避免使用它.

任何人都可以发布更新触发器的示例,以优雅的方式成功完成此操作吗?我希望最终得到一个具有以下结构的审计表:

  • ID
  • LOGDATE
  • 表名
  • TransactionType(更新/插入/删除)
  • 的recordId
  • 字段名
  • 的OldValue
  • 的NewValue

......但我愿意接受建议.

谢谢!

sql-server audit triggers sql-server-2005

30
推荐指数
3
解决办法
8万
查看次数

如果我还更新时间戳属性,我应该使用PUT方法进行更新

更确切地说:

根据休息样式,通常认为POST,GET,PUT和DELETE http方法应该用于CREATE,READ,UPDATE和DELETE(CRUD)操作.

事实上,如果我们坚持使用http方法定义,事情可能就不那么清楚了

本文中,它解释了:

简而言之:当且仅当您知道资源所在的URL以及资源的全部内容时才使用PUT.否则,请使用POST.

主要是因为

PUT是一个限制性更强的动词.它需要一个完整的资源并将其存储在给定的URL中.如果之前有资源,则将其替换; 如果没有,则创建一个新的.这些属性支持幂等性,天真的创建或更新操作可能不支持.我怀疑这可能是为什么PUT的定义方式; 它是一种幂等操作,允许客户端向服务器发送信息.

在我的情况下,我通常会发布传递所有资源数据的更新,因此我可以使用PUT进行更新,但每次发出更新时,我都会保存一个LastUser和LastUpdate列,其中包含进行修改的用户ID和操作的时间.

所以我想知道你的意见,因为严格来说,这两列并不是资源的一部分,但它们确实阻止了操作是幂等的.

saludos

SAS

rest audit logging put

27
推荐指数
3
解决办法
2万
查看次数

是否有针对npm审核的纱线替代品?

需要固定纱线的分辨率特征,还要审核npm audit吗?有替代纱线npm audit吗?或者,交替地,将依赖的依赖关系的分辨率工作npm

security audit dependencies npm yarnpkg

25
推荐指数
6
解决办法
1万
查看次数

NPM 配置可跳过安装时对 devDependency 的漏洞审核

是否可以配置 npm 以devDependencies在运行命令时跳过漏洞审核npm install

audit node.js npm

21
推荐指数
3
解决办法
1万
查看次数

如何让Java反映出超级类中的字段?不仅仅是实际的课程

我最近改变了我的模式所以我的类继承自超类,问题是我的比较方法生成审计日志,使用Java反射,现在只循环子类的字段,而不是超类,是有办法获得所有的FIELDS?还是我需要把它投入超级班......?

以下是我的方法:

public static <T> String GenerateChangeLogForEntity(T old, T updated) {
        String text = "";
        try {
            Field[] fields = old.getClass().getDeclaredFields();
            if(fields != null) {
                BaseController.getLogger().info("Z1 num fields:"+fields.length);
                for (Field field : fields) {
                    if(field.isAnnotationPresent(Column.class)) {
                        String fieldName = field.getName();
                        BaseController.getLogger().info(field.getName());
                        if(field.isAnnotationPresent(Variation.class)) {
                            Variation v = field.getAnnotation(Variation.class);
                            fieldName = v.friendlyName();
                        }
                        field.setAccessible(true);
                        if(field.get(old) != null && field.get(updated) != null) {
                            if(!(field.get(old)).equals(field.get(updated))) {
                                text += "<p><span class=\"field-name\">"+fieldName+"</span> changed from: <strong>"+GetFriendlyFieldValueForChangeLog(field.get(old))+"</strong>  to: <strong>"+GetFriendlyFieldValueForChangeLog(field.get(updated)) + "</strong></p>";
                            }
                        }
                        if(field.get(old) == null && field.get(updated) …
Run Code Online (Sandbox Code Playgroud)

java oop reflection audit

19
推荐指数
3
解决办法
2万
查看次数

在PostgreSQL中禁用表上的DELETE?

对于安全性敏感的设计,我想禁用DELETEs某些表.

所述DELETE应该仅设置一个deleted上的行(这将是然后在视图,这将被本应用层可以使用可见)标志.

据我所知,规则会生成其他查询 - 因此规则无法抑制原始查询.

举例说明带触发器的玩具示例(尚未测试):

-- data in this table should be 'undeletable'
CREATE table article (
    id serial,
    content text not null,
    deleted boolean default false
)

-- some view that would only show articles, that are NOT deleted
...

-- toy trigger (not tested)
CREATE OR REPLACE FUNCTION suppress_article_delete()
RETURNS TRIGGER AS $sad$
BEGIN
    IF (TG_OP = 'DELETE') THEN
        UPDATE article SELECT id, content, TRUE;
        -- NEW or NULL?? …
Run Code Online (Sandbox Code Playgroud)

postgresql audit triggers plpgsql sql-delete

19
推荐指数
1
解决办法
8071
查看次数

Chrome devtools 审核选项卡不显示

我的谷歌浏览器版本是83.0.4103.116 (Build oficial) (64 bits) (cohort: Stable)

但是审计选项卡不会显示在 devtools 上。

没有审计选项的 DevTools

知道如何启用审计选项卡吗?

audit google-chrome-devtools

19
推荐指数
1
解决办法
1万
查看次数

审计表:表或一个表的每个字段

除了审计字段之外,我的项目中的一切都很好.只是插入和更新正在我们想象的宇宙中进行审核.

我提出了一个类似于下一个例子的表:

但是我的团队没有想到同样的方式,他们在每个表上放置一列来跟踪更新或插入时间.当我问为什么?他们告诉我,这就是他们在工作中保持轨道的方式.

最后我放弃了,我把每个字段放在每张桌子上.由于除了我以外的所有团队,都告诉我把那些领域.

例:

他们的方法

Table Customer
+-------------+-------------+-----+--------------------------------+-------------+
| Name        | LastName    | ... | LastModification (Audit Field) | User        |
+-------------+-------------+-----+--------------------------------+-------------+
| varchar(30) | varchar(50) | ... | datetime                       | varchar(30) |
+-------------+-------------+-----+--------------------------------+-------------+
Run Code Online (Sandbox Code Playgroud)

我的方法

Table Customer
+-------------+-------------+-----+
| Name        | LastName    | ... |
+-------------+-------------+-----+
| varchar(30) | varchar(50) | ... |
+-------------+-------------+-----+

Table Audit
+-----------+------------+--------+------+-------------+
| TableName | TableField | Action | User | DateAndTime |
+-----------+------------+--------+------+-------------+
Run Code Online (Sandbox Code Playgroud)

所以问题是:

哪个是更好的设计,一个表保存事务的历史记录或每个表的一个字段?(正确和缺点)

database audit

18
推荐指数
1
解决办法
7800
查看次数

历史表的优点,缺点和陷阱 - 使用触发器,sproc或在应用程序级别

我目前正在玩我的数据库中有一些表的历史表.基本上我有主表和该表的副本,其中包含修改日期和操作列,用于存储执行的操作,例如更新,删除和插入.

到目前为止,我可以想到三个不同的地方,你可以做历史表工作.

  • 主表上的触发器用于更新,插入和删除.(数据库)
  • 存储过程.(数据库)
  • 应用层.(应用)

我的主要问题是,在每个层中完成工作的优点,缺点和缺点是什么.

我可以通过使用触发器方式来考虑的一个优点是,无论在数据库之上实现什么程序,都始终保持完整性.

database sql-server audit history

17
推荐指数
4
解决办法
7340
查看次数

django AuditTrail vs Reversion

我正在开发一个新的Web应用程序,我需要将数据库中的任何更改存储到审计表中.此类审计表的目的是在稍后的实际物理审计中,我们可以确定在某种情况下发生了什么,谁在编辑复杂计算时编辑了什么以及db的状态.因此,大多数审计表都将被编写而不会被读取.有时可能会生成报告.

我找了可用的解决方案

  1. AuditTrail - 简单,这就是为什么我倾向于它,我可以理解它的单个文件代码.
  2. Reversion - 看起来很简单,但不确定如果需要修改它会有多容易.
  3. rcsField 似乎非常复杂,对我的需求来说太多了

我没有尝试过这些中的任何一个,所以我想知道一些真实的经历以及我应该使用的经验.例如哪一个更快,占用空间更小,易于扩展和维护?

database django audit audit-trail reversion

16
推荐指数
2
解决办法
5857
查看次数