# Open Cybersecurity Schema Framework(OCSF)

## Open Cybersecurity Schema Framework (OCSF) Taxonomy Constructs

OCSF主要由5个部分构成：

1. **数据类型，属性和数组 Data Types, Attributes and Arrays；**
   1. 数据类型：比如strings, integers, floating point numbers 和 booleans。还有复杂的数据类型，被称为对象objects，比如Process, Device, User, Malware 和 File。
   2. 属性：唯一标识符用于识别某类数据。
   3. 数组：数组支持任何数据类型。数组arrays使用的名称以s结尾，比如category\_ids，MITRE ATT\&CK array的名称是attacks。
2. **事件分类 Event Class；**
   1. 包含所有可用属性及其类型&#x7684;**“attribute dictionary/属性字典”**&#x662F;框架的基石。 事件分类是字典中的特定属性集。
   2. 事件在OCSF中用`_event classes _`指代，每一个事件相当于事件分类里面的一个实例。事件分类有schema-unique IDs，每一个事件有全局唯一的ID。
3. **分组 Category；**
   1. 每个事件类型按照category进行分组，并且有唯一的`category_uid`属性值，分组还有容易理解的名字，比如System Activity, Network Activity, Findings等等。
   2. 对事件进行分组的目的：某类特定事件的容器，方便归档，检索，报告，存储分区，权限控制等等。
4. **概要 Profile；**
   1. 例如，当HIDS是数据源时，系统活动事件分类可能还包括恶意软件检测和漏洞信息。安全控制profile可以附加到上面。或者，网络活动事件分类可能还包括设备，进程和用户信息，主机profile可以附加到上面。
5. **扩展 Extension；**
   1. 使用框架，无需修改核心schema的基础上对schema进行扩展。新的属性，对象，事件类型和分组以及概要都可以扩展。已有的概要可以附加给extensions，新的扩展概要可以应用到核心事件分类和对象，或者其他扩展上。

OCSF 遵循命名惯例，以便更容易地识别具有相似语义的属性。这些约定采用标准后缀和前缀的形式。标准后缀包括：\_id, \_ids, \_uid, \_uuid, \_ip, \_name, \_info, \_detail, \_time, \_dt, \_process, \_ver。

## 与[MITRE ATT\&CK Framework](https://attack.mitre.org/)对比

MITRE ATT\&CK Framework被网络安全从业者广泛使用。虽然这两个框架的目的和内容类型不同，但却是互补的，对于熟悉ATT\&CK的人可能会有启发。

分组Category 类似于Tactics。事件分类Event Classes 类似于Techniques，概要Profiles类似于Matrices，类型Type IDs类似于Procedures，Profiles可以根据事件类型和分组进行筛选，类似于Matrices根据Techniques 和 Tactics进行筛选。

OCSF与MITRE ATT\&CK Framework区别在于Event Classes只在一个Category里面，但是MITRE ATT\&CK Techniques 可以只是多个Tactics中的一个，类似的MITRE ATT\&CK Procedures可以被用在多个Techniques中。MITRE ATT\&CK有子技术的概念，但是OCSF没有Sub-Event Classes.

OCSF是开源，且可以由厂商进行扩展的。而 MITRE ATT\&CKTM 中的内容则由 MITRE 发布。
