标签: audit-logging

SQLAlchemy审计日志记录; 如何处理删除?

我正在使用SQLAlchemy附带的版本控制代码示例的修改版本来记录用户ID和更改日期.但是,我还想修改它,因此通过标记is_deleted类型标志而不是运行实际的SQL 来完成删除DELETE.我的问题是我不知道如何捕获删除并用更新替换它.

这是我到目前为止所拥有的:

''' http://docs.sqlalchemy.org/en/rel_0_8/orm/examples.html?highlight=versioning#versioned-objects '''
from sqlalchemy.ext.declarative import declared_attr
from sqlalchemy.orm import mapper, class_mapper, attributes, object_mapper, scoping
from sqlalchemy.orm.session import Session
from sqlalchemy.orm.exc import UnmappedClassError, UnmappedColumnError
from sqlalchemy import Table, Column, ForeignKeyConstraint, DateTime, String, Boolean
from sqlalchemy import event
from sqlalchemy.orm.properties import RelationshipProperty
from datetime import datetime
from sqlalchemy.schema import ForeignKey
from sqlalchemy.sql.expression import false

def col_references_table(col, table):
    for fk in col.foreign_keys:
        if fk.references(table):
            return True
    return False

def _history_mapper(local_mapper):
    cls = local_mapper.class_

    # set …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy audit-logging

6
推荐指数
0
解决办法
1580
查看次数

如何使用Jhipster生成的代码添加用于注销的审计?

我调试了如何将审计添加到系统中以便成功登录,并发现使用aop调用了CustomAuditEventRepository.auditEventRepository().add(AuditEvent事件).是否有任何文档如何为任何自定义操作添加审核?

spring audit-logging jhipster

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

Express.js 中间件中的审计

我正在寻找通用方法来审核我为某些 API 编写的快速中间件。

我想出了几种方法,但对我来说似乎没有那么有效。现在我只想登录到控制台或日志文件,但稍后我将查看数据存储。

  • 我可以很容易地在 API 路由中使用“日志记录”库(例如 bunyan)来执行此操作。但这意味着我必须在我想审计的任何地方调用日志记录功能。
  • 使用诸如代码段中给出的中央函数来进行日志记录。这是记录 API 请求/响应的好方法,但在审核关键信息(例如审核用户注册中的用户 ID)时无济于事。或者在用户登录时审核电子邮件地址。

    function auditUserAction(apiFunction) {
    
        function jsonWrapper(funcToWrap, userAction) {
            return function() {
                userAction.jsonResponse = arguments[0];
                return funcToWrap.apply(this, arguments);
            }
        }
    
        return function() {
            req = arguments[0];
            res = arguments[1];
    
            // Overriding json method so we can capture the json response
            res.json = jsonWrapper(res.json, userAction);
            userAction.url = req.url;
            userAction.userId =  req.headers.user_id;
            userAction.referer = req.headers.referer;
            userAction.browserAgent = req.headers['user-agent'];
            result = apiFunction.apply(this, arguments);
            userAction.responseStatusCode = res.statusCode;
            userAction.responseBody = res.body;
            logger.info("Action", userAction);
            return result; …
    Run Code Online (Sandbox Code Playgroud)

audit middleware node.js express audit-logging

6
推荐指数
0
解决办法
1633
查看次数

在 Data-Dog/AuditBundle 之前执行安全类(TokenAuthenticator)

我在我的 symfony 应用程序中将 Data-Dog/Auditbundle用于 AuditLogs。此外,我还使用 TokenAuthenticator 作为 api 的守卫。但是 bundle 的 EventSubscriber 在 TokenAuthenticator 之前被调用,因此

public function __construct(TokenStorageInterface $securityTokenStorage)
{
    $this->securityTokenStorage = $securityTokenStorage;
}
Run Code Online (Sandbox Code Playgroud)

EventSubscriber 中的 this 将令牌设为 null,我无法获取用户。

php symfony audit-logging

6
推荐指数
0
解决办法
72
查看次数

如何访问Padrino模型中的current_account?

我正在开发一个具有主应用程序和管理员应用程序的Padrino应用程序.当用户登录会话时,我只需运行以下两行来登录.

account = Account.authenticate(params[:email], params[:password])
set_current_account(account)
Run Code Online (Sandbox Code Playgroud)

在Admin中的任何控制器中使用调试器

current_account
#<Account @id=1 @name="John" @surname="Davies" @email="john.davies@gmail.com" @crypted_password="3456789" @role="admin">
Run Code Online (Sandbox Code Playgroud)

在任何型号的调试器

current_account
*** NameError Exception: undefined local variable or method `current_account' for #<Post @id=1 @question="Why is this not working?" @answer="I have no idea">
Run Code Online (Sandbox Code Playgroud)

我能够访问current_account以找出在Admin应用程序中登录的用户,但是在主应用程序中无法访问此变量.

我想要做的是我为所有模型创建一个活动源或审计跟踪,因此当在任何模型中创建/更新/销毁记录时,会在模型活动中创建一条新记录.话虽这么说,我需要访问模型中的current_account变量.

我搜索了解决方案,并提出了一个建议:

在admin/app.rb中

enable  :sessions
set :session_id, "my-global-session"
Run Code Online (Sandbox Code Playgroud)

在app/app.rb中

register Padrino::Admin::AccessControl
register Padrino::Admin::Helpers

enable :sessions
set :session_id, "my-global-session"
Run Code Online (Sandbox Code Playgroud)

它对我不起作用.有没有办法在我的模型中访问current_account?

感谢您的任何指导或建议.

ruby database authentication padrino audit-logging

5
推荐指数
1
解决办法
692
查看次数

NHibernate Envers 喜欢使用实体框架 6+ 进行审计日志

每当更新/删除实体时,NHibernate Envers 都能很好地创建审核日志。基本上,它为每个可审计实体创建一个审计表,并将数据快照写入审计表中。例如,如果客户记录保存在 CUSTOMER 表中,则客户记录的审核日志将保存在 CUSTOMER_AUD 表中。

在我的一个项目中,我们使用实体框架 6.1。我搜索并查看了各种替代方案,例如AuditDBContextEntityFramework Extensions,但它们都没有提供类似于 NHibernate Envers 的开箱即用解决方案。

我认为生成审核日志应该是一个非常常见的要求,所以我的问题是,对于 EF 6+ 是否有任何开箱即用的解决方案可以生成类似于 NHibernate Envers 的审核日志?

orm audit-logging entity-framework-6

5
推荐指数
1
解决办法
1944
查看次数

无法使用Serilog登录MS SQL

我正在使用Serilog和MSSqlServer接收器.即使我按照Serilog.Sinks.MSSqlServer中提到的所有步骤仍然无法在SQL表中记录任何消息.如果您能告诉我哪些部分错过或配置错误,我真的很感激?

以下是我项目中配置代码的部分:

public ILogger Logger = null;

private ColumnOptions _columnOptions = new ColumnOptions
{
    AdditionalDataColumns = new Collection<DataColumn>
    {
        new DataColumn() { AllowDBNull = true, ColumnName = "CreatedBy",DataType = typeof (Guid) },
        new DataColumn() { AllowDBNull = true, ColumnName = "CreatedDate",DataType = typeof (DateTime)},
        new DataColumn() { AllowDBNull = true, ColumnName = "StatusID",DataType = typeof (byte)},
        new DataColumn() { AllowDBNull = true, ColumnName = "ModifiedBy",DataType = typeof (Guid) },
        new DataColumn() { AllowDBNull = true, ColumnName = "ModifiedDate",DataType …
Run Code Online (Sandbox Code Playgroud)

c# sql-server audit-logging serilog

5
推荐指数
1
解决办法
1782
查看次数

Log4Net正在创建文件但不写入文件

最近我有一个问题使Log4Net工作(在这里描述)但在那之后它没关系.

我已经离开了这一段时间,因为我需要开发一些模块,我让日志记录稍微落后了.现在,我看,我甚至尝试更改日志文件的名称和位置(静态设置),它创建它,但在两种情况下都没有写任何东西.

这是我的log4Net配置文件:

<?xml version="1.0"?>
<configuration>    

<log4net>
<root>
 <level value="ALL" />
 <appender-ref ref="console" />
 <appender-ref ref="file" />
</root>
<appender name="console" type="log4net.Appender.ConsoleAppender">
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %level %logger - %message%newline" />
  </layout>
</appender>
<appender name="file" type="log4net.Appender.RollingFileAppender">
 <file value="ApplicationLogging.log" />
 <appendToFile value="true" />
 <rollingStyle value="Size" />
 <maxSizeRollBackups value="5" />
 <maximumFileSize value="10MB" />
 <staticLogFileName value="true" />
 <layout type="log4net.Layout.PatternLayout">
 <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
 </layout>
</appender>
</log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这是我的Global.asax

[assembly: XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

 XmlConfigurator.Configure();            
 ILog logger …
Run Code Online (Sandbox Code Playgroud)

c# log4net log4net-configuration audit-logging entity-framework-6

5
推荐指数
1
解决办法
516
查看次数

字段更改的休眠审计日志

如何将实体的更改记录到日志文件中?考虑我有Person这样的。

import org.hibernate.envers.Audited;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.Column;

@Entity
@Audited
public class Person {
    @Id
    @GeneratedValue
    private int id;

    private String name;
    private String surname;
// add getters, setters, constructors, equals and hashCode here
}
Run Code Online (Sandbox Code Playgroud)

和改变现有的代码 Person

Person p1 = new Person("name-1", "surname-1");
personRepository.save(p1);
Person p2 = personRepository.findOne(1L);
p2.setName("new-name");
personRepository.save(p2);
Run Code Online (Sandbox Code Playgroud)

我怎么会有

  • 旧实体
  • 新实体
  • 字段列表已更改(类似于Diffable的结果)

在我的日志文件中?我知道envars可以在 db 中存储更改并让我稍后提取它们,AuditReader但我喜欢将更改存储在 Json 文件中以将它们发送到第三方应用程序(如 Elastic)。

java hibernate hibernate-envers spring-data audit-logging

5
推荐指数
1
解决办法
1717
查看次数

重新启动auditd服务会出现依赖错误

我正在尝试为 docker 守护进程配置审核,如下所示:

将以下行添加到/etc/audit/audit.rules文件中:

-w /usr/bin/dockerd -k docker
Run Code Online (Sandbox Code Playgroud)

然后,使用以下命令重新启动审核守护程序:

service auditd restart
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

Failed to restart auditd.service: Operation refused, unit auditd.service may be requested by dependency only.
Run Code Online (Sandbox Code Playgroud)

使用systemctl也不起作用。有解决方法或解决办法吗?

audit-logging docker

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