一个简单的Python包,用于启用统一的审计日志
项目描述
有关Django实现(使用此库)的信息,请参阅https://github.com/Amsterdam/django-audit-log
DataPunt审计日志
DataPunt审计日志是一个简单的Python包,提供了一种简单的方法,使我们能够在所有应用程序中实现统一的审计日志。
AuditLogger类可以提供info并将日志记录到stdout。
最终,这个日志记录器将在我们的Docker容器内运行。Filebeat将用于从这些容器中读取审计日志,并将它们发送到logstash,然后logstash将它们发送到elastic。
快速开始
-
使用pip安装
pip install datapunt_audit_log
-
将日志添加到您的代码中
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": {
...
}
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
Hashes for datapunt_audit_log-0.4.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ea2dbe0d9bb4f1b237f633523df3ab4452f698ce992c474df69829ff64add441 |
|
MD5 | 93ad200bbfddf58c36ebeaf4e01cf8ee |
|
BLAKE2b-256 | e0c38373237b42ca82ac51fc4e9a4c734dff2700933b4a23994815c973b91037 |