跳转到主要内容

一个简单的Python包,用于启用统一的审计日志

项目描述

有关Django实现(使用此库)的信息,请参阅https://github.com/Amsterdam/django-audit-log

DataPunt审计日志

DataPunt审计日志是一个简单的Python包,提供了一种简单的方法,使我们能够在所有应用程序中实现统一的审计日志。

AuditLogger类可以提供info并将日志记录到stdout。

最终,这个日志记录器将在我们的Docker容器内运行。Filebeat将用于从这些容器中读取审计日志,并将它们发送到logstash,然后logstash将它们发送到elastic。

快速开始

  1. 使用pip安装

    pip install datapunt_audit_log
    
  2. 将日志添加到您的代码中

     AuditLogger()\
         .set_http_request(method='GET', url='https://localhost', user_agent='Test')\
         .info('This is a log message')\
         .send_log()
    

基本用法

审计日志的使用非常简单。有几种方法可以设置关于请求的上下文信息

set_http_request(self, method: str, url: str, user_agent: str = '') -> 'AuditLogger'
set_http_response(self, status_code: int, reason: str, headers: dict = None) -> 'AuditLogger'
set_user(self, authenticated: bool, provider: str, email: str, roles: list = None, ip: str = '', realm: str = '') -> 'AuditLogger'
set_filter(self, object_name: str, kwargs: dict) -> 'AuditLogger'
set_results(self, results: list = None) -> 'AuditLogger'

此外,还可以提供日志消息和日志级别来指示请求实际执行的操作。这通过调用以下方法之一来完成

debug(self, msg: str) -> 'AuditLogger'
info(self, msg: str) -> 'AuditLogger'
warning(self, msg: str) -> 'AuditLogger'
error(self, msg: str) -> 'AuditLogger'
critical(self, msg: str) -> 'AuditLogger'

请注意,这些方法中的每一个都返回self。我们在这里使用构建器模式的变体,以使日志记录器使用简单。它使我们能够做到

AuditLogger()\
    .set_http_request(method='GET', url='https://localhost', user_agent='Test')\
    .info('This is a log message')\
    .send_log()

上下文信息

尽管在发送日志之前无需使用这些方法(您甚至可以发送空日志),但强烈建议在发送日志之前添加尽可能多的信息。这将最终导致一个完整的审计日志,其中包含执行适当审计所需的所有详细信息。

HTTP请求

AuditLogger().set_http_request(self, method: str, url: str, user_agent: str = '') 允许提供有关已执行HTTP请求的更多信息。

此方法将以下详细信息添加到日志中

"http_request": {
    "method": "get|post|head|options|etc..",
    "url": "https://datapunt.amsterdam.nl",
    "user_agent": "full browser user agent"
},

HTTP响应

AuditLogger().set_http_response(self, status_code: int, reason: str, headers: dict = None) 允许提供更多详细信息,说明返回给用户的HTTP响应。

此方法将以下详细信息添加到日志中

"http_response": {
    "status_code": "http status code",
    "reason": "http status reason",
    "headers": {
      "key": "value"
}

用户

AuditLogger().set_user(self, authenticated: bool, provider: str, email: str, roles: list = None, ip: str = '', realm: str = '') 允许提供有关执行特定请求的用户的相关详细信息。

此方法将以下详细信息添加到日志中

"user": {
    "authenticated": "True/False",
    "provider": "auth backend the user authenticated with",
    "realm": "optional realm when using keycloak or another provider",
    "email": "email of logged in user",
    "roles": "roles attached to the logged in user",
    "ip": "ip address"
}

过滤器

AuditLogger().set_filter(self, object_name: str, kwargs: dict) 允许提供有关请求的对象类型以及使用的过滤器(用户搜索'terms',这些'terms'与'object'的特定'fields'匹配)的信息。

此方法将以下详细信息添加到日志中

"filter": {
    "object": "Object name that is requested",
    "kwargs": {
        'fields': 'filter values',
        'more_fields': 'more filter values'
    }
}

结果

AuditLogger().set_results(self, results: list) 允许存储返回给用户的结果。

开发者需要决定是否将添加到此处的数据量会变成负担而不是祝福。

此方法将以下详细信息添加到日志中

"results": {
    ...
  }

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源分布

datapunt-audit-log-0.4.0.tar.gz (11.3 kB 查看哈希值)

上传时间

构建分布

datapunt_audit_log-0.4.0-py3-none-any.whl (10.2 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面