首页 > 解决方案 > 出于组织目的使用仅具有静态方法的类?

问题描述

我为 MSSP 工作,我们处理的许多安全警报,尤其是新客户,都可以根据一些简单的 if-then 逻辑来处理,而无需占用分析师的时间进行研究。为了处理这些类型的警报,我正在构建一个带有一系列逻辑测试的基本 python 程序,以查看给定的警报是否属于“已知”类别并且可以自动处理。

我想要的格式是为我们为组织目的服务的每个客户提供一个单独的 python 文件,并且在每个文件中都有一系列条件,如果满足条件,则具有相应的操作。然后,管理脚本获取警报数据,通过相应客户端文件中的每个条件运行它,并在条件返回True时将数据传递给相应的操作函数。所以我的问题是如何组织这个。

目前,在客户的文件中,我为每个“已知”条件都有一个类,具有两个@staticmethod函数:condition() 和 action()。那么管理脚本的逻辑实际上是[伪代码]:

for class in client_file:
    if class.condition(alert_data):
        class.action(alert_data)

在组织上,我喜欢这个。每个客户都有一个文件,每个已知的要查找的东西都有一个类。我的犹豫是,我不确定这是“pythonic”还是一般犹太教。我使用@staticmethods 是因为我不需要这些类有多个实例,我只是喜欢将函数分组为类以实现逻辑相关性的组织能力,但它看起来仍然有点奇怪,我担心它会引起混乱。

所以我对社区的意见很感兴趣,这对于我的应用程序来说似乎是一种不错的组织方法,或者你对保持一切整洁的更好方法有什么建议吗?

示例类:

class HostIsWindows:
    @staticmethod
    def condition(alert_data):
        if 'os_type' in alert and alert['os_type'] == 'windows':
            return True
        else:
            return False

    @staticmethod
    def action(alert_data):
        ... do something ...
        return "This is a result message."

标签: pythonclassstatic-methods

解决方案


推荐阅读