输入/输出审计

由 Johnny 提供的贡献,2017年

这是一个实用工具,可以拦截与客户端和服务器之间发送的所有数据,并将其传递给你选择的回调。这旨在进行质量保证、事故后的调查和调试。

请注意,使用时要谨慎,因为这显然可能被滥用。所有数据都是以明文记录的。请遵循伦理,如果你无法正确处理记录用户密码或私人通信的后果,请不要启用此模块。

一些检查已被实施以保护用户隐私。

模块中包含的文件:

  • outputs.py - 示例回调方法。此模块提供了将数据作为 JSON 发送到你的游戏/服务器的日志目录或本地 Linux syslog 守护进程的回调示例。你当然可以编写自己的代码以执行其他操作,例如将其发布到 Kafka 主题。

  • server.py - 扩展了 Evennia 的 ServerSession 对象,以便在接收时将数据通过回调进行传递。

  • tests.py - 单元测试,检查带有敏感参数的命令是否已删除其个人可识别信息(PII)。

安装/配置

通过在 server.conf 中配置几个设置来完成部署。以下行是必需的:

SERVER_SESSION_CLASS = 'evennia.contrib.utils.auditing.server.AuditedServerSession'

这告诉 Evennia 使用此 ServerSession 而不是它自己的。以下是其他可能的选项及其默认值(如果未设置):

  • 审计回调: 定义一个模块的路径,该模块包含你的回调函数。函数应接受一个字典参数作为输入:

    AUDIT_CALLBACK = 'evennia.contrib.utils.auditing.outputs.to_file'
    
  • 记录用户输入? : 对此要保持伦理;它将记录玩家和/或管理员之间的所有私人和公共通信(默认值:False)。

    AUDIT_IN = False
    
  • 记录服务器输出? : 这将导致记录所有系统消息和发送到连接玩家的所有广播,因此在繁忙的游戏中,向所有用户的每次广播都会在每个连接用户上产生一个事件!

    AUDIT_OUT = False
    
  • 允许稀疏值: 默认输出是一个字典。你希望允许包含 null/blank 值的键值对吗?如果你只是写入磁盘,则禁用它可以节省一些磁盘空间,但无论你是否想要稀疏值,如果你将日志发送到 NoSQL/无模式数据库时都是考虑。

    AUDIT_ALLOW_SPARSE = False
    
  • 审计掩码: 如果你编写处理敏感数据(如密码)的自定义命令,则必须编写一个正则表达式以在写入日志之前将其删除。 AUDIT_MASKS 是一个字典的列表,定义了命令的名称和需要擦洗它们的正则表达式。

    系统已经有默认的过滤敏感登录/创建命令的选项。你的 AUDIT_MASKS 列表将附加到这些默认值上。

    在正则表达式中,敏感数据本身必须以名为 ‘secret’ 的捕获组进行捕获(有关更多信息,请参见 Python re 模块的文档)。 例如: {'authentication': r"^@auth\s+(?P<secret>[\w]+)"}

    AUDIT_MASKS = []
    

此文档页面并非由 evennia/contrib/utils/auditing/README.md自动生成。如想阅读最新文档,请参阅原始README.md文件。